Ejemplo n.º 1
0
void IO_Memory__ChannelDesc_Fingerprint(IO_Memory__Channel ch, OOC_CHAR8 key[], OOC_LEN key_0d, OOC_INT32 start, OOC_INT32 end) {
  register OOC_INT32 i0,i1,i2,i3,i4,i5,i6;
  OOC_INT16 i;
  OOC_INT16 j;
  OOC_INT32 pos;
  OOC_CHAR8 byte;
  OOC_INT16 old;
  OOC_INT16 _new;

  i0=0;
l1_loop:
  *(OOC_UINT8*)((OOC_INT32)key+(_check_index(i0, key_0d, OOC_UINT16, 3993))) = 0;
  i0 = i0+1;
  i1 = i0<=3;
  if (i1) goto l1_loop;
l5:
  i = 0;
  j = 0;
  i0 = start;
  pos = i0;
  i1 = end;
  i2 = i0<i1;
  if (!i2) goto l17;
  i2 = (OOC_INT32)ch;
  i3=0;i4=0;
l8_loop:
  i5 = (OOC_INT32)*(OOC_INT32*)((_check_pointer(i2, 4121))+16);
  i5 = _check_pointer(i5, 4127);
  i6 = OOC_ARRAY_LENGTH(i5, 0);
  i5 = *(OOC_UINT8*)(i5+(_check_index(i0, i6, OOC_UINT32, 4127)));
  i5 = _type_cast_fast(OOC_UINT8, OOC_UINT8, i5);
  byte = i5;
  i6 = *(OOC_UINT8*)((OOC_INT32)key+(_check_index(i3, key_0d, OOC_UINT16, 4174)));
  i6 = _type_cast_fast(OOC_UINT8, OOC_UINT8, i6);
  old = i6;
  i5 = _type_cast_fast(OOC_UINT8, OOC_UINT8, (_rot(OOC_UINT8, OOC_UINT8, i5, i4)));
  _new = i5;
  *(OOC_UINT8*)((OOC_INT32)key+(_check_index(i3, key_0d, OOC_UINT16, 4250))) = (_mod((i6+i5),256));
  i3 = i3+1;
  i = i3;
  i5 = i3==4;
  if (!i5) goto l12;
  i3 = _mod((i4+1),8);
  j = i3;
  i = 0;
  i4=i3;i3=0;
l12:
  i0 = i0+1;
  pos = i0;
  i5 = i0<i1;
  if (i5) goto l8_loop;
l17:
  return;
  ;
}
Ejemplo n.º 2
0
static
Value *
eval(const Ast *expr) {
	switch(expr->class) {
	case N_CALL:
		return call(expr);
	case N_ASSIGNMENT:
		return assignment(expr);
	case N_IDENTIFIER:
		return identifier(expr);
	case N_NEG:
		return _neg(expr);
	case N_NOT:
		return _not(expr);
	case N_EQ:
		return _eq(expr);
	case N_NEQ:
		return _neq(expr);
	case N_AND:
		return _and(expr);
	case N_IOR:
		return _ior(expr);
	case N_XOR:
		return _neq(expr); // alias
	case N_LT:
		return _lt(expr);
	case N_LE:
		return _le(expr);
	case N_GE:
		return _ge(expr);
	case N_GT:
		return _gt(expr);
	case N_ADD:
		return _add(expr);
	case N_SUB:
		return _sub(expr);
	case N_MUL:
		return _mul(expr);
	case N_DIV:
		return _div(expr);
	case N_POW:
		return _pow(expr);
	case N_MOD:
		return _mod(expr);
	case N_BOOLEAN:
		return _bool(expr);
	case N_INTEGER:
		return _int(expr);
	case N_FLOAT:
		return _float(expr);
	case N_STRING:
		return _string(expr);
	case N_SET:
		return _set(expr);
	case N_R:
		return _relation(expr);
	}
printf("EVALFAIL %d ", expr->class); pn(expr);
	assert(false && "should not be reached");
}
Ejemplo n.º 3
0
/*
 * TKGetNextToken returns the next token from the token stream as a
 * character string.  Space for the returned token should be dynamically
 * allocated.  The caller is responsible for freeing the space once it is
 * no longer needed.
 *
 * If the function succeeds, it returns a C string (delimited by '\0')
 * containing the token.  Else it returns 0.
 *
 * You need to fill in this function as part of your implementation.
 */
TokenT *TKGetNextToken(TokenizerT *tk) {
    clearBuffer(tk);
    char curr = tk->inputIter[0];

    // skip all whitespace before next token
    while(isspace(curr)) {
        nextChar(tk);
        clearBuffer(tk);
        curr = tk->inputIter[0];
    }

    if(curr == '\0') {
        return NULL;
    } else if(isalpha(curr) || curr == '_') {
        return _word(tk);
    } else if(curr == '0') {
        return _zero(tk);
    } else if(isdigit(curr)) {
        return _decimal(tk);
    } else if(curr == '!') { // neq
        return _neq(tk);
    } else if(curr == '"') { // double_quote
        return _double_quote(tk);
    } else if(curr == '#') {
        return _pound(tk);
    } else if(curr == '$') { // INVALID
        return _invalid(tk);
    } else if(curr == '%') { // mod, mod_eq
        return _mod(tk);
    } else if(curr == '&') { // bit_and, log_and, address (?)
        return _bit_and(tk);
    } else if(curr == '\'') { // single_quote
        return _single_quote(tk);
    } else if(curr == '(') { // open_paren
        return _open_paren(tk);
    } else if(curr == ')') { // close_paren
        return _close_paren(tk);
    } else if(curr == '*') { // mult, mult_eq, pointer (?)
        return _mult(tk);
    } else if(curr == '+') { // plus, plus_eq, inc
        return _plus(tk);
    } else if(curr == ',') { // comma
        return _comma(tk);
    } else if(curr == '-') { // minus, minus_eq, dec, struct_pointer
        return _minus(tk);
    } else if(curr == '.') { // dot
        return _dot(tk);
    } else if(curr == '/') { // div, div_eq
        return _div(tk);
    } else if(curr == ':') { // ternary_colon
        return _ternary_colon(tk);
    } else if(curr == ';') { // semicolon
        return _semicolon(tk);
    } else if(curr == '<') { // lt, lshift, lt_eq
        return _lt(tk);
    } else if(curr == '=') { // eq, assign
        return _eq(tk);
    } else if(curr == '>') { // gt, rshift, gt_eq
        return _gt(tk);
    } else if(curr == '?') { // ternary_qmark
        return _ternary_qmark(tk);
    } else if(curr == '@') { // INVALID
        return _invalid(tk);
    } else if(curr == '[') { // open_bracket
        return _open_bracket(tk);
    } else if(curr == '\\') { // backslash (?)
        return _invalid(tk);
    } else if(curr == ']') { // close_bracket
        return _close_bracket(tk);
    } else if(curr == '^') { // bit_xor
        return _bit_xor(tk);
    } else if(curr == '`') { // INVALID
        return _invalid(tk);
    } else if(curr == '{') { // open_brace
        return _open_brace(tk);
    } else if(curr == '|') { // bit_or, log_or
        return _bit_or(tk);
    } else if(curr == '}') { // close_brace
        return _close_brace(tk);
    } else if(curr == '~') { // bit_not
        return _bit_not(tk);
    } else {
        return _invalid(tk);
    }
}
Ejemplo n.º 4
0
Archivo: op.hpp Proyecto: nthend/flow
inline int divmod(T &num, const T &den)
{
	T ret = _div(num,den);
	num = _mod(num,den);
    return ret;
}
Ejemplo n.º 5
0
OOC_Scanner_InputBuffer__CharArray OOC_Doc_Decoration__Remove(OOC_Scanner_SymList__Symbol sym, OOC_Doc_Decoration__Decoration *deco) {
  register OOC_INT32 i0,i1,i2,i3,i4,i5,i6;
  OOC_Scanner_InputBuffer__CharArray str;
  OOC_INT32 i;
  OOC_INT32 delta;
  OOC_INT32 len;
  auto OOC_INT32 OOC_Doc_Decoration__Remove_GetIndent(OOC_CHAR8 str[], OOC_LEN str_0d, OOC_INT32 startOfLine, OOC_INT32 indent);
  auto OOC_Doc_Decoration__PlainIndent OOC_Doc_Decoration__Remove_GetPlainIndent(OOC_Scanner_InputBuffer__CharArray str);
  auto OOC_CHAR8 OOC_Doc_Decoration__Remove_IsDotLine(OOC_Scanner_InputBuffer__CharArray str);
  auto OOC_Doc_Decoration__Decoration OOC_Doc_Decoration__Remove_GetDotLineIndent(OOC_Scanner_InputBuffer__CharArray str);
    
    OOC_INT32 OOC_Doc_Decoration__Remove_GetIndent(OOC_CHAR8 str[], OOC_LEN str_0d, OOC_INT32 startOfLine, OOC_INT32 indent) {
      register OOC_INT32 i0,i1;

      i0 = startOfLine;
      i1 = *(OOC_UINT8*)((OOC_INT32)str+(_check_index(i0, str_0d, OOC_UINT32, 2443)));
      i1 = i1!=0u;
      if (!i1) goto l20;
l3_loop:
      i1 = *(OOC_UINT8*)((OOC_INT32)str+(_check_index(i0, str_0d, OOC_UINT32, 2471)));
      i1 = i1==32u;
      if (i1) goto l14;
      i1 = *(OOC_UINT8*)((OOC_INT32)str+(_check_index(i0, str_0d, OOC_UINT32, 2528)));
      i1 = i1==9u;
      if (i1) goto l12;
      i1 = *(OOC_UINT8*)((OOC_INT32)str+(_check_index(i0, str_0d, OOC_UINT32, 2638)));
      i1 = i1==10u;
      if (i1) goto l10;
      i1 = indent;
      return i1;
      goto l15;
l10:
      return 2147483647;
      goto l15;
l12:
      i1 = indent;
      indent = (i1+(8-(_mod(i1,8))));
      goto l15;
l14:
      i1 = indent;
      indent = (i1+1);
l15:
      i0 = i0+1;
      i1 = *(OOC_UINT8*)((OOC_INT32)str+(_check_index(i0, str_0d, OOC_UINT32, 2443)));
      i1 = i1!=0u;
      if (i1) goto l3_loop;
l20:
      return 2147483647;
      ;
    }

    
    OOC_Doc_Decoration__PlainIndent OOC_Doc_Decoration__Remove_GetPlainIndent(OOC_Scanner_InputBuffer__CharArray str) {
      register OOC_INT32 i0,i1,i2,i3,i4,i5,i6;
      OOC_INT32 len;
      OOC_INT32 i;
      OOC_Doc_Decoration__PlainIndent plainIndent;
      OOC_INT32 indent;
      OOC_INT32 max;

      i0 = (OOC_INT32)str;
      i1 = _check_pointer(i0, 3174);
      i2 = OOC_ARRAY_LENGTH(i1, 0);
      i1 = *(OOC_UINT8*)(i1+(_check_index(0, i2, OOC_UINT8, 3174)));
      _assert((i1==40u), 127, 3163);
      i1 = _check_pointer(i0, 3195);
      i2 = OOC_ARRAY_LENGTH(i1, 0);
      *(OOC_UINT8*)(i1+(_check_index(0, i2, OOC_UINT8, 3195))) = 32u;
      i1 = _check_pointer(i0, 3224);
      i2 = OOC_ARRAY_LENGTH(i1, 0);
      i1 = *(OOC_UINT8*)(i1+(_check_index(1, i2, OOC_UINT8, 3224)));
      _assert((i1==42u), 127, 3213);
      i1 = OOC_ARRAY_LENGTH((_check_pointer(i0, 3268)), 0);
      i1 = Strings__Length((void*)(_check_pointer(i0, 3268)), i1);
      len = i1;
      i = 1;
      i2 = _check_pointer(i0, 3302);
      i3 = OOC_ARRAY_LENGTH(i2, 0);
      i4 = i1-2;
      i2 = *(OOC_UINT8*)(i2+(_check_index(1, i3, OOC_UINT32, 3302)));
      i2 = i2==42u;
      if (i2) goto l3;
      i2=0u;
      goto l5;
l3:
      i2 = 1!=i4;
      
l5:
      if (!i2) goto l16;
      i2=1;
l7_loop:
      i3 = _check_pointer(i0, 3341);
      i5 = OOC_ARRAY_LENGTH(i3, 0);
      *(OOC_UINT8*)(i3+(_check_index(i2, i5, OOC_UINT32, 3341))) = 32u;
      i2 = i2+1;
      i = i2;
      i3 = _check_pointer(i0, 3302);
      i5 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i2, i5, OOC_UINT32, 3302)));
      i3 = i3==42u;
      if (i3) goto l10;
      i3=0u;
      goto l12;
l10:
      i3 = i2!=i4;
      
l12:
      if (i3) goto l7_loop;
l16:
      i2 = _check_pointer(i0, 3404);
      i3 = OOC_ARRAY_LENGTH(i2, 0);
      i5 = i1-1;
      i2 = *(OOC_UINT8*)(i2+(_check_index(i5, i3, OOC_UINT32, 3404)));
      _assert((i2==41u), 127, 3393);
      i2 = _check_pointer(i0, 3429);
      i3 = OOC_ARRAY_LENGTH(i2, 0);
      *(OOC_UINT8*)(i2+(_check_index(i5, i3, OOC_UINT32, 3429))) = 32u;
      i2 = _check_pointer(i0, 3462);
      i3 = OOC_ARRAY_LENGTH(i2, 0);
      i2 = *(OOC_UINT8*)(i2+(_check_index(i4, i3, OOC_UINT32, 3462)));
      _assert((i2==42u), 127, 3451);
      i = i4;
      i2 = _check_pointer(i0, 3527);
      i3 = OOC_ARRAY_LENGTH(i2, 0);
      i2 = *(OOC_UINT8*)(i2+(_check_index(i4, i3, OOC_UINT32, 3527)));
      i2 = i2==42u;
      if (!i2) goto l24;
      i2=i4;
l19_loop:
      i3 = _check_pointer(i0, 3552);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      *(OOC_UINT8*)(i3+(_check_index(i2, i4, OOC_UINT32, 3552))) = 32u;
      i2 = i2-1;
      i = i2;
      i3 = _check_pointer(i0, 3527);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i2, i4, OOC_UINT32, 3527)));
      i3 = i3==42u;
      if (i3) goto l19_loop;
l24:
      i2 = (OOC_INT32)RT0__NewObject(_td_OOC_Doc_Decoration__PlainIndent.baseTypes[0]);
      plainIndent = (OOC_Doc_Decoration__PlainIndent)i2;
      i3 = (OOC_INT32)sym;
      i4 = *(OOC_INT32*)((_check_pointer(i3, 3729))+24);
      *(OOC_INT32*)((_check_pointer(i2, 3709))+8) = i4;
      i3 = *(OOC_INT32*)((_check_pointer(i3, 3791))+24);
      i4 = OOC_ARRAY_LENGTH((_check_pointer(i0, 3782)), 0);
      i3 = OOC_Doc_Decoration__Remove_GetIndent((void*)(_check_pointer(i0, 3782)), i4, 0, i3);
      *(OOC_INT32*)(_check_pointer(i2, 3756)) = i3;
      *(OOC_INT32*)((_check_pointer(i2, 3819))+4) = 79;
      i = 0;
      i3 = 0<i1;
      if (!i3) goto l38;
      i4=0;
l27_loop:
      i5 = _check_pointer(i0, 3883);
      i6 = OOC_ARRAY_LENGTH(i5, 0);
      i5 = *(OOC_UINT8*)(i5+(_check_index(i4, i6, OOC_UINT32, 3883)));
      i4 = i4+1;
      i5 = i5==10u;
      if (!i5) goto l33;
      i5 = OOC_ARRAY_LENGTH((_check_pointer(i0, 3943)), 0);
      i5 = OOC_Doc_Decoration__Remove_GetIndent((void*)(_check_pointer(i0, 3943)), i5, i4, 0);
      indent = i5;
      i6 = *(OOC_INT32*)(_check_pointer(i2, 3989));
      i6 = i5<i6;
      if (!i6) goto l33;
      *(OOC_INT32*)(_check_pointer(i2, 4027)) = i5;
l33:
      i = i4;
      i5 = i4<i1;
      if (i5) goto l27_loop;
l38:
      i4 = *(OOC_INT32*)(_check_pointer(i2, 4104));
      i4 = i4==2147483647;
      if (!i4) goto l41;
      *(OOC_INT32*)(_check_pointer(i2, 4149)) = 0;
l41:
      i4 = *(OOC_INT32*)(_check_pointer(i2, 4202));
      i4 = i4>0;
      if (!i4) goto l83;
      i = 0;
      if (!i3) goto l83;
      i3=0;
l46_loop:
      i4 = i3==0;
      if (i4) goto l49;
      i4 = _check_pointer(i0, 4471);
      i5 = OOC_ARRAY_LENGTH(i4, 0);
      i4 = *(OOC_UINT8*)(i4+(_check_index(i3, i5, OOC_UINT32, 4471)));
      i4 = i4==10u;
      
      goto l51;
l49:
      i4=1u;
l51:
      if (i4) goto l53;
      i3 = i3+1;
      i = i3;
      
      goto l77;
l53:
      i4 = i3!=0;
      if (!i4) goto l57;
      i3 = i3+1;
      i = i3;
      
l57:
      i4 = *(OOC_INT32*)(_check_pointer(i2, 4609));
      i4 = i3+i4;
      max = i4;
      
l58_loop:
      i5 = i3==i4;
      if (i5) goto l61;
      i5 = i3>=i1;
      
      goto l63;
l61:
      i5=1u;
l63:
      if (i5) goto l65;
      i5 = _check_pointer(i0, 4684);
      i6 = OOC_ARRAY_LENGTH(i5, 0);
      i5 = *(OOC_UINT8*)(i5+(_check_index(i3, i6, OOC_UINT32, 4684)));
      i5 = i5==10u;
      
      goto l67;
l65:
      i5=1u;
l67:
      if (i5) goto l77;
      i5 = _check_pointer(i0, 4774);
      i6 = OOC_ARRAY_LENGTH(i5, 0);
      i5 = *(OOC_UINT8*)(i5+(_check_index(i3, i6, OOC_UINT32, 4774)));
      switch (i5) {
      case 32u:
        i5 = _check_pointer(i0, 4812);
        i6 = OOC_ARRAY_LENGTH(i5, 0);
        *(OOC_UINT8*)(i5+(_check_index(i3, i6, OOC_UINT32, 4812))) = 2u;
        goto l74;
      case 9u:
        i5 = _check_pointer(i0, 4863);
        i6 = OOC_ARRAY_LENGTH(i5, 0);
        *(OOC_UINT8*)(i5+(_check_index(i3, i6, OOC_UINT32, 4863))) = 3u;
        goto l74;
      default:
        goto l74;
      }
l74:
      i3 = i3+1;
      i = i3;
      
      goto l58_loop;
l77:
      i4 = i3<i1;
      if (i4) goto l46_loop;
l83:
      return (OOC_Doc_Decoration__PlainIndent)i2;
      ;
    }

    
    OOC_CHAR8 OOC_Doc_Decoration__Remove_IsDotLine(OOC_Scanner_InputBuffer__CharArray str) {
      register OOC_INT32 i0,i1,i2,i3,i4;
      OOC_CHAR8 dot;
      OOC_INT32 i;

      dot = 1u;
      i = 0;
      i0 = (OOC_INT32)str;
      i1 = _check_pointer(i0, 5401);
      i2 = OOC_ARRAY_LENGTH(i1, 0);
      i1 = *(OOC_UINT8*)(i1+(_check_index(0, i2, OOC_UINT32, 5401)));
      i1 = i1!=0u;
      if (i1) goto l3;
      i0=1u;
      goto l42;
l3:
      i1=0;i2=1u;
l4_loop:
      i3 = _check_pointer(i0, 5429);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i1, i4, OOC_UINT32, 5429)));
      i3 = i3==10u;
      if (i3) goto l7;
      i1 = i1+1;
      i = i1;
      
      goto l37;
l7:
      i1 = i1+1;
      i = i1;
      i3 = _check_pointer(i0, 5494);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i1, i4, OOC_UINT32, 5494)));
      i3 = i3!=0u;
      if (i3) goto l10;
      i3=0u;
      goto l12;
l10:
      i3 = _check_pointer(i0, 5510);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i1, i4, OOC_UINT32, 5510)));
      i3 = i3!=10u;
      
l12:
      if (i3) goto l14;
      i3=0u;
      goto l16;
l14:
      i3 = _check_pointer(i0, 5537);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i1, i4, OOC_UINT32, 5537)));
      i3 = (OOC_UINT8)i3<=(OOC_UINT8)32u;
      
l16:
      if (!i3) goto l33;
l19_loop:
      i1 = i1+1;
      i = i1;
      i3 = _check_pointer(i0, 5494);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i1, i4, OOC_UINT32, 5494)));
      i3 = i3!=0u;
      if (i3) goto l22;
      i3=0u;
      goto l24;
l22:
      i3 = _check_pointer(i0, 5510);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i1, i4, OOC_UINT32, 5510)));
      i3 = i3!=10u;
      
l24:
      if (i3) goto l26;
      i3=0u;
      goto l28;
l26:
      i3 = _check_pointer(i0, 5537);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i1, i4, OOC_UINT32, 5537)));
      i3 = (OOC_UINT8)i3<=(OOC_UINT8)32u;
      
l28:
      if (i3) goto l19_loop;
l33:
      if (i2) goto l35;
      i2=0u;
      goto l36;
l35:
      i2 = _check_pointer(i0, 5614);
      i3 = OOC_ARRAY_LENGTH(i2, 0);
      i2 = *(OOC_UINT8*)(i2+(_check_index(i1, i3, OOC_UINT32, 5614)));
      i2 = i2==42u;
      
l36:
      dot = i2;
      
l37:
      i3 = _check_pointer(i0, 5401);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i1, i4, OOC_UINT32, 5401)));
      i3 = i3!=0u;
      if (i3) goto l4_loop;
l41:
      i0=i2;
l42:
      return i0;
      ;
    }

    
    OOC_Doc_Decoration__Decoration OOC_Doc_Decoration__Remove_GetDotLineIndent(OOC_Scanner_InputBuffer__CharArray str) {
      register OOC_INT32 i0,i1,i2,i3,i4;
      OOC_Doc_Decoration__PlainIndent plainIndent;
      OOC_INT32 i;
      OOC_Doc_Decoration__DotLineIndent dotLineIndent;

      i0 = (OOC_INT32)str;
      i1 = (OOC_INT32)OOC_Doc_Decoration__Remove_GetPlainIndent((OOC_Scanner_InputBuffer__CharArray)i0);
      plainIndent = (OOC_Doc_Decoration__PlainIndent)i1;
      i = 0;
      i2 = _check_pointer(i0, 5958);
      i3 = OOC_ARRAY_LENGTH(i2, 0);
      i2 = *(OOC_UINT8*)(i2+(_check_index(0, i3, OOC_UINT32, 5958)));
      i2 = i2!=0u;
      if (!i2) goto l38;
      i2=0;
l3_loop:
      i3 = _check_pointer(i0, 5986);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i2, i4, OOC_UINT32, 5986)));
      i3 = i3==10u;
      if (i3) goto l6;
      i2 = i2+1;
      i = i2;
      
      goto l33;
l6:
      i2 = i2+1;
      i = i2;
      i3 = _check_pointer(i0, 6051);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i2, i4, OOC_UINT32, 6051)));
      i3 = i3!=0u;
      if (i3) goto l9;
      i3=0u;
      goto l11;
l9:
      i3 = _check_pointer(i0, 6067);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i2, i4, OOC_UINT32, 6067)));
      i3 = (OOC_UINT8)i3<=(OOC_UINT8)32u;
      
l11:
      if (!i3) goto l23;
l14_loop:
      i2 = i2+1;
      i = i2;
      i3 = _check_pointer(i0, 6051);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i2, i4, OOC_UINT32, 6051)));
      i3 = i3!=0u;
      if (i3) goto l17;
      i3=0u;
      goto l19;
l17:
      i3 = _check_pointer(i0, 6067);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i2, i4, OOC_UINT32, 6067)));
      i3 = (OOC_UINT8)i3<=(OOC_UINT8)32u;
      
l19:
      if (i3) goto l14_loop;
l23:
      i3 = _check_pointer(i0, 6137);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i2, i4, OOC_UINT32, 6137)));
      i3 = i3==42u;
      if (!i3) goto l33;
l27_loop:
      i3 = _check_pointer(i0, 6166);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      *(OOC_UINT8*)(i3+(_check_index(i2, i4, OOC_UINT32, 6166))) = 32u;
      i2 = i2+1;
      i = i2;
      i3 = _check_pointer(i0, 6137);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i2, i4, OOC_UINT32, 6137)));
      i3 = i3==42u;
      if (i3) goto l27_loop;
l33:
      i3 = _check_pointer(i0, 5958);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = *(OOC_UINT8*)(i3+(_check_index(i2, i4, OOC_UINT32, 5958)));
      i3 = i3!=0u;
      if (i3) goto l3_loop;
l38:
      i0 = (OOC_INT32)RT0__NewObject(_td_OOC_Doc_Decoration__DotLineIndent.baseTypes[0]);
      dotLineIndent = (OOC_Doc_Decoration__DotLineIndent)i0;
      i2 = *(OOC_INT32*)(_check_pointer(i1, 6342));
      *(OOC_INT32*)(_check_pointer(i0, 6319)) = i2;
      i2 = *(OOC_INT32*)((_check_pointer(i1, 6396))+4);
      *(OOC_INT32*)((_check_pointer(i0, 6371))+4) = i2;
      i1 = *(OOC_INT32*)((_check_pointer(i1, 6455))+8);
      *(OOC_INT32*)((_check_pointer(i0, 6427))+8) = i1;
      return (OOC_Doc_Decoration__Decoration)i0;
      ;
    }


  i0 = (OOC_INT32)sym;
  i1 = (OOC_INT32)*(OOC_INT32*)((_check_pointer(i0, 6567))+8);
  i2 = (OOC_INT32)*(OOC_INT32*)((_check_pointer(i0, 6567))+8);
  i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 6572)), 0);
  i1 = Strings__Length((void*)(_check_pointer(i2, 6572)), i1);
  i1 = (OOC_INT32)RT0__NewObject(_td_OOC_Scanner_InputBuffer__CharArray.baseTypes[0], (i1+1));
  str = (OOC_Scanner_InputBuffer__CharArray)i1;
  i0 = (OOC_INT32)*(OOC_INT32*)((_check_pointer(i0, 6592))+8);
  i2 = OOC_ARRAY_LENGTH((_check_pointer(i1, 6603)), 0);
  _copy_8((const void*)(_check_pointer(i0, 6597)),(void*)(_check_pointer(i1, 6603)),i2);
  i = 0;
  delta = 0;
  i0 = _check_pointer(i1, 6722);
  i2 = OOC_ARRAY_LENGTH(i0, 0);
  i0 = *(OOC_UINT8*)(i0+(_check_index(0, i2, OOC_UINT32, 6722)));
  i0 = i0!=0u;
  if (i0) goto l3;
  i0=0;i2=0;
  goto l21;
l3:
  i0=0;i2=0;
l4_loop:
  i3 = _check_pointer(i1, 6748);
  i4 = OOC_ARRAY_LENGTH(i3, 0);
  i3 = *(OOC_UINT8*)(i3+(_check_index(i0, i4, OOC_UINT32, 6748)));
  i3 = i3==13u;
  if (i3) goto l11;
  i3 = _check_pointer(i1, 6905);
  i4 = OOC_ARRAY_LENGTH(i3, 0);
  i3 = *(OOC_UINT8*)(i3+(_check_index(i0, i4, OOC_UINT32, 6905)));
  i3 = i3==10u;
  if (i3) goto l9;
  i3 = _check_pointer(i1, 6986);
  i4 = OOC_ARRAY_LENGTH(i3, 0);
  i5 = _check_pointer(i1, 7002);
  i6 = OOC_ARRAY_LENGTH(i5, 0);
  i5 = *(OOC_UINT8*)(i5+(_check_index(i0, i6, OOC_UINT32, 7002)));
  *(OOC_UINT8*)(i3+(_check_index((i0-i2), i4, OOC_UINT32, 6986))) = i5;
  goto l10;
l9:
  i3 = _check_pointer(i1, 6937);
  i4 = OOC_ARRAY_LENGTH(i3, 0);
  *(OOC_UINT8*)(i3+(_check_index((i0-i2), i4, OOC_UINT32, 6937))) = 10u;
l10:
  {register OOC_INT32 h0=i0;i0=i2;i2=h0;}
  goto l16;
l11:
  i3 = _check_pointer(i1, 6780);
  i4 = OOC_ARRAY_LENGTH(i3, 0);
  *(OOC_UINT8*)(i3+(_check_index((i0-i2), i4, OOC_UINT32, 6780))) = 10u;
  i3 = _check_pointer(i1, 6823);
  i4 = OOC_ARRAY_LENGTH(i3, 0);
  i5 = i0+1;
  i3 = *(OOC_UINT8*)(i3+(_check_index(i5, i4, OOC_UINT32, 6823)));
  i3 = i3==10u;
  if (i3) goto l14;
  {register OOC_INT32 h0=i0;i0=i2;i2=h0;}
  goto l16;
l14:
  i0 = i2+1;
  delta = i0;
  i2=i5;
l16:
  i2 = i2+1;
  i = i2;
  i3 = _check_pointer(i1, 6722);
  i4 = OOC_ARRAY_LENGTH(i3, 0);
  i3 = *(OOC_UINT8*)(i3+(_check_index(i2, i4, OOC_UINT32, 6722)));
  i3 = i3!=0u;
  if (!i3) goto l20;
  {register OOC_INT32 h0=i0;i0=i2;i2=h0;}
  goto l4_loop;
l20:
  {register OOC_INT32 h0=i0;i0=i2;i2=h0;}
l21:
  i0 = i0-i2;
  len = i0;
  i2 = _check_pointer(i1, 7067);
  i3 = OOC_ARRAY_LENGTH(i2, 0);
  *(OOC_UINT8*)(i2+(_check_index(i0, i3, OOC_UINT32, 7067))) = 0u;
  *deco = (OOC_Doc_Decoration__Decoration)(OOC_INT32)0;
  i0 = OOC_Doc_Decoration__Remove_IsDotLine((OOC_Scanner_InputBuffer__CharArray)i1);
  if (i0) goto l24;
  i0=(OOC_INT32)0;
  goto l25;
l24:
  i0 = (OOC_INT32)OOC_Doc_Decoration__Remove_GetDotLineIndent((OOC_Scanner_InputBuffer__CharArray)i1);
  *deco = (OOC_Doc_Decoration__Decoration)i0;
  
l25:
  i0 = i0==(OOC_INT32)0;
  if (!i0) goto l28;
  i0 = (OOC_INT32)str;
  i0 = (OOC_INT32)OOC_Doc_Decoration__Remove_GetPlainIndent((OOC_Scanner_InputBuffer__CharArray)i0);
  *deco = (OOC_Doc_Decoration__Decoration)i0;
l28:
  i0 = (OOC_INT32)str;
  return (OOC_Scanner_InputBuffer__CharArray)i0;
  ;
}
Ejemplo n.º 6
0
// Updates and checks key presses
uint8_t vrtkey_update()
{
	if (delayInput)
	{
		delayInput = false;
		return VRTKEY_NO_ACTION;
	}

	if (state == STATE_CLOSED && percentOpened > 0)
		percentOpened -= OPEN_CLOSE_SPEED;

	if (state == STATE_OPENED && percentOpened < 100)
		percentOpened += OPEN_CLOSE_SPEED;

	if (state == STATE_CLOSED)
		return VRTKEY_NO_ACTION;

	if (control_just_pressed(CONTROL_DPAD_UP))
		selectedY = _mod(selectedY - 1, NMBR_KEYS_H);

	if (control_just_pressed(CONTROL_DPAD_DOWN))
		selectedY = _mod(selectedY + 1, NMBR_KEYS_H);

	if (control_just_pressed(CONTROL_DPAD_LEFT))
		selectedX = _mod(selectedX - 1, NMBR_KEYS_W + 1);

	if (control_just_pressed(CONTROL_DPAD_RIGHT))
		selectedX = _mod(selectedX + 1, NMBR_KEYS_W + 1);

	if (control_just_pressed(CONTROL_BUTTON_A))
	{
		bool charInput = false;

		if (selectedX == NMBR_KEYS_W)
		{
			switch (selectedY)
			{
				case 0:
					return VRTKEY_ACCEPT;
				case 1:
					if (enableCancelButton)
						return VRTKEY_CANCEL;
					else
						break;
				case 2:
					caps = !caps;
					break;
				case 3:
					charInput = true;
					break;
			}
		}
		else
		{
			charInput = true;
		}

		if (charInput)
		{
			// Insert key to string

			char c;
			// Check space button
			if (selectedX == NMBR_KEYS_W && selectedY == 3)
				c = ' ';
			else
				c = _getChar(selectedX, selectedY);

			// Make sure we have space
			int curLength = strlen(inputStr);
			if (curLength + 1 == inputLength)
			{
				return VRTKEY_NO_ACTION;
			}

			int i;
			for (i = curLength; i >= 0; i--)
			{
				inputStr[i + 1] = inputStr[i];
				if (i == cursorPosition)
					break;
			}

			inputStr[cursorPosition] = c;
			cursorPosition++;
		}
	}

	if (control_just_pressed(CONTROL_BUTTON_B) && enableCancelButton)
	{
		return VRTKEY_CANCEL;
	}

	if (control_just_pressed(CONTROL_BUTTON_X))
	{
		if (cursorPosition > 0)
		{
			int curLength = strlen(inputStr);
			int i;
			for (i = cursorPosition - 1; i <= curLength; i++)
			{
				inputStr[i] = inputStr[i + 1];
			}

			cursorPosition--;
		}
	}

	if (showTextfield)
	{
		if (control_just_pressed(CONTROL_TRIGGER_RIGHT))
		{
			if (cursorPosition < strlen(inputStr))
				cursorPosition++;
		}

		if (control_just_pressed(CONTROL_TRIGGER_LEFT))
		{
			if (cursorPosition > 0)
				cursorPosition--;
		}
	}

	return VRTKEY_NO_ACTION;
}
Ejemplo n.º 7
0
int main(){
	SysTick_Config(SystemCoreClock / 2000);  // 0.5ms

	// NEED OF KEY AND LED
	RCC_ClockSecuritySystemCmd(ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_Init(GPIOB, &GPIO_InitStructure);

	// Init LCD
	LCD_Cmd_InitFSMC();
	LCD_Cmd_Init();
	LCD_Cmd_InitBacklight();

	// Put some background
//	LCD_FillRectangle_RGB565(0, 0, 240, 320, C_RGB565(0x80, 0x80, 0x80));
	Painter_PutImage(res_img_res_lp_jpg,0,0,0xff);

//	Painter_SetupContextBitmask(240, 320, 0);
//	benchmark(2);

	// A circle to overlay long shadow
	LCD_FillCircle_RGB4444(120, 120, 100+18, 0x88fa);

	// now you can see it
	long_shadow();
	// an alternative shadow
//	LCD_FillCircle(120+1, 120+1, 100+2, 0x8886, 0);
//	LCD_FillCircle(120, 120, 100+2, 0x8886, 0);
//	LCD_FillCircle(120, 120, 100+1, 0x8886, 0);

	// Put my clock panel on screen
	LCD_FillCircle_RGB565(120, 120, 100, C_RGB565(0, 0, 0));
	LCD_FillCircle_RGB565(120, 120, 90, C_RGB565(0xff, 0xff, 0xff));

	// Clock frame need some shadow!
	Painter_SetupContextBitmask(210, 210, 0);
	u16 x, y, i;
	u32 t;
	for (x=0;x<200;x++) for (y=0;y<200;y++){
		t = (x-100)*(x-100)+(y-100)*(y-100);
		if ((t>=91*91)&&(t<100*100)) LCD_SetBitMask(_d_dl_ctx.bm, x, y, 210);
	}

	// Draw ticks and numbers
	const s8 TICK_XI[] = { 0,  42,  73,  85,  73,  42,   0, -42, -73, -85, -73, -42};
	const s8 TICK_YI[] = {-85, -73, -42,   0,  42,  73,  85,  73,  42,   0, -42, -73};
	const s8 TICK_XO[] = { 0,  44,  77,  90,  77,  45,   0, -44, -77, -90, -77, -45};
	const s8 TICK_YO[] = {-90, -77, -45,   0,  44,  77,  90,  77,  45,   0, -44, -77};
	const u16 *text[] = {res_string_0/*_FSTR_0*/,
			res_string_1/*_FSTR_1*/,
			res_string_2/*_FSTR_2*/,
			res_string_3/*_FSTR_3*/,
			res_string_4/*_FSTR_4*/,
			res_string_5/*_FSTR_5*/,
			res_string_6/*_FSTR_6*/,
			res_string_7/*_FSTR_7*/,
			res_string_8/*_FSTR_8*/,
			res_string_9/*_FSTR_9*/,
			res_string_11/*_FSTR_10*/,
			res_string_12/*_FSTR_11*/,
			res_string_13/*_FSTR_12*/
			};
	const u16 *col = res_string_14/*_FSTR_:*/;
	const u16 *space = res_string_15/*_FSTR_ */;
	u16 time[20];

	for (i=0;i<12;i++){
		Painter_LocateContextBitmask(100+TICK_XO[i], 100+TICK_YO[i]);
		Painter_DrawLine(120+TICK_XO[i], 120+TICK_YO[i], 120+TICK_XI[i], 120+TICK_YI[i], 0x000f, 5, PAINTER_DRAW_BM_HOLD);
		Painter_PutString(text[i?i:12], 14, 0x000f, 0
						 , 120+TICK_XI[i]-(TICK_XO[i]-TICK_XI[i])*2-5, 120+TICK_YI[i]-(TICK_YO[i]-TICK_YI[i])*2-8
						 , 20, 20, PAINTER_STR_SHADOW*2);
	}

	// Bravo!
	Painter_Fill_BitMaskShadow(30, 30, 230, 230, 0L, 10, 10, 210, 0x0008, 4, 4, 15);

	// LET IT RUN!
	u8 m, s; // so-called second and minute
	bitmask bm;
	_UNUSED(bm);
	s = 0; m = 0;
	Painter_SetupContextBitmask(200, 200, 0); // new context for new shadow
	Painter_LocateContextBitmask(100, 100); // start from center
	u8 shadow_on;
	u16 bg[200*60];
	// grab screen region, saving for later repaint
	LCD_SetWindow(20, 240, 200, 60);
	LCD_GetImage_RGB565(bg, 200*60);
	while (1){
		// PUSH BUTTON TO RUN REALLY FAST, WITHOUT SHADOW!
		shadow_on = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_15)?PAINTER_STR_SHADOW*2:0;
		LCD_FillCircle_RGB565(120, 120, 65, 0xffff); // Clear clock hands, sucks aha~
		// Dont forget bitmasks
		for (x=30;x<170;x++) for (y=30;y<170;y++){
			LCD_ResetBitMask(_d_dl_ctx.bm, x, y, 200);
		}
		// second hand
		u16 sh_x[] = {120, 120+(TICK_XI[_mod(s+11,12)]+3)/5,
					  120+TICK_XI[s]-(TICK_XO[s]-TICK_XI[s])*6,
					  120+(TICK_XI[_mod(s+1,12)]+3)/5
					 };
		u16 sh_y[] = {120, 120+(TICK_YI[_mod(s+11,12)]+3)/5,
					  120+TICK_YI[s]-(TICK_YO[s]-TICK_YI[s])*6,
					  120+(TICK_YI[_mod(s+1,12)]+3)/5
					 };
		// Center circle makes it cute~
		Painter_DrawCircle(120, 120, 4, 0x6a2f, 12, PAINTER_DRAW_BM_HOLD);
		Painter_DrawPoly(sh_x, sh_y, 4, 0x6a2f, 3, PAINTER_DRAW_BM_HOLD | PAINTER_DRAW_POLY_CLOSE);
//		Painter_DrawLine(120, 120
//					, 120+TICK_XI[s]-(TICK_XO[s]-TICK_XI[s])*6
//					, 120+TICK_YI[s]-(TICK_YO[s]-TICK_YI[s])*6,
//					0x6a2f, 5, PAINTER_DRAW_BM_HOLD);
//		Painter_DrawLine(120, 120
//					 , 120-(TICK_XI[s]+4)/8
//					 , 120-(TICK_YI[s]+4)/8,
//				0x6a2f, 5, PAINTER_DRAW_BM_HOLD);
		// GET MY SHADOW!
		if (shadow_on) Painter_Fill_BitMaskShadow(50, 50, 190, 190, 0L, 30, 30, 200, 0x0008, 4, 4, 12);
		for (x=30;x<170;x++) for (y=30;y<170;y++){
			LCD_ResetBitMask(_d_dl_ctx.bm, x, y, 200);
		}
		u32 mm = m % 12;
		// minute hand
		Painter_DrawLine(120, 120
						 , 120+TICK_XI[mm]-(TICK_XO[mm]-TICK_XI[mm])*10
						 , 120+TICK_YI[mm]-(TICK_YO[mm]-TICK_YI[mm])*10,
						 0xa22f, 5, PAINTER_DRAW_BM_HOLD);
		Painter_DrawLine(120, 120
						 , 120-(TICK_XI[mm]+4)/8
						 , 120-(TICK_YI[mm]+4)/8,
						 0xa22f, 5, PAINTER_DRAW_BM_HOLD);
		// Center circle makes it cute~
		Painter_DrawCircle(120, 120, 3, 0xa22f, 5, PAINTER_DRAW_BM_HOLD);
		// GET MY SHADOW!
		if (shadow_on) Painter_Fill_BitMaskShadow(50, 50, 190, 190, 0L, 30, 30, 200, 0x0008, 4, 4, 12);

		// show time in text
		u16 *p = time, *q;
		// need some space
		*p++ = space[0];
		mm = m?m:1;
		while (mm<10000) {
			*p++ = space[0];
			mm *= 10;
		}
		//put minute digits
		p = itoa(m, p);
		*p++ = col[0];
		//put second text directly
		q = (u16 *)(text)[s];
		while (*q) *p++ = *q++;
		*p++ = 0;

		// repaint the background
		LCD_SetWindow(20, 240, 200, 60);
		LCD_PutImage_RGB565(bg, 200*60);
		// GET MY TIME!
		Painter_PutString((const u16*)time, 48, 0xffff, 0xf5b9
						 , 20, 240, 200, 60, shadow_on  | PAINTER_STR_SFLUSH);

		put_fps(1);
		// PUSH A TO DASH!
		if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_15)) DUMMY;
		// TICK TOCK~
		s++;
		if (s == 12) {
			m++;
			s = 0;
		}
	}
	return 0;
}
Ejemplo n.º 8
0
void XML_UnicodeCodec_UTF16__CodecDesc_Encode(XML_UnicodeCodec_UTF16__Codec codec, OOC_CHAR16 source[], OOC_LEN source_0d, OOC_INT32 sourceStart, OOC_INT32 sourceEnd, OOC_CHAR8 dest[], OOC_LEN dest_0d, OOC_INT32 destStart, OOC_INT32 destEnd, OOC_INT32 *sourceDone, OOC_INT32 *destDone) {
  register OOC_INT32 i0,i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13;
  OOC_INT32 low;
  OOC_INT32 high;
  OOC_INT32 testSourceEnd;
  OOC_INT32 testDestEnd;
  OOC_INT32 i;
  OOC_INT32 j;
  auto OOC_INT32 XML_UnicodeCodec_UTF16__CodecDesc_Encode_WordsPerEncoding(OOC_CHAR16 ch);
    
    OOC_INT32 XML_UnicodeCodec_UTF16__CodecDesc_Encode_WordsPerEncoding(OOC_CHAR16 ch) {
      register OOC_INT32 i0,i1;

      i0 = ch;
      i1 = (OOC_UINT16)55296u<=(OOC_UINT16)i0;
      if (i1) goto l3;
      i0=0u;
      goto l5;
l3:
      i0 = (OOC_UINT16)i0<(OOC_UINT16)56320u;
      
l5:
      if (i0) goto l7;
      return 1;
      goto l8;
l7:
      return 2;
l8:
      _failed_function(5105); return 0;
      ;
    }


  i0 = (OOC_INT32)codec;
  i1 = *(OOC_UINT8*)((_check_pointer(i0, 5306))+8);
  if (i1) goto l3;
  low = 0;
  high = 1;
  i1=1;i2=0;
  goto l4;
l3:
  low = 1;
  high = 0;
  i1=0;i2=1;
l4:
  i3 = sourceEnd;
  i4 = i3-1;
  i5 = destEnd;
  testSourceEnd = i4;
  i6 = i5-5;
  testDestEnd = i6;
  i7 = sourceStart;
  i = i7;
  i8 = destStart;
  j = i8;
  i9 = i7<i4;
  if (i9) goto l7;
  i9=0u;
  goto l9;
l7:
  i9 = i8<i6;
  
l9:
  if (i9) goto l11;
  i4=i7;i6=i8;
  goto l45;
l11:
  i9=i8;i10=i7;
l12_loop:
  i11 = i9+i1;
  i12 = *(OOC_UINT16*)((OOC_INT32)source+(_check_index(i10, source_0d, OOC_UINT32, 5779))*2);
  *(OOC_UINT8*)((OOC_INT32)dest+(_check_index(i11, dest_0d, OOC_UINT32, 5751))) = (i12>>8);
  i12 = i9+i2;
  i13 = *(OOC_UINT16*)((OOC_INT32)source+(_check_index(i10, source_0d, OOC_UINT32, 5831))*2);
  *(OOC_UINT8*)((OOC_INT32)dest+(_check_index(i12, dest_0d, OOC_UINT32, 5804))) = (_mod(i13,256));
  i13 = *(OOC_UINT16*)((OOC_INT32)source+(_check_index(i10, source_0d, OOC_UINT32, 5862))*2);
  i13 = (OOC_UINT16)i13<(OOC_UINT16)55296u;
  if (i13) goto l19;
  i13 = *(OOC_UINT16*)((OOC_INT32)source+(_check_index(i10, source_0d, OOC_UINT32, 5895))*2);
  i13 = (OOC_UINT16)i13>=(OOC_UINT16)57344u;
  if (i13) goto l17;
  i13=0u;
  goto l21;
l17:
  i13 = *(OOC_UINT16*)((OOC_INT32)source+(_check_index(i10, source_0d, OOC_UINT32, 5919))*2);
  i13 = (OOC_UINT16)i13<(OOC_UINT16)65534u;
  
  goto l21;
l19:
  i13=1u;
l21:
  if (i13) goto l35;
  i13 = *(OOC_UINT16*)((OOC_INT32)source+(_check_index(i10, source_0d, OOC_UINT32, 5985))*2);
  i13 = (OOC_UINT16)i13<(OOC_UINT16)56320u;
  if (i13) goto l25;
  i13=0u;
  goto l27;
l25:
  i13 = *(OOC_UINT16*)((OOC_INT32)source+(_check_index((i10+1), source_0d, OOC_UINT32, 6030))*2);
  i13 = (OOC_UINT16)56320u<=(OOC_UINT16)i13;
  
l27:
  if (i13) goto l29;
  i13=0u;
  goto l31;
l29:
  i13 = *(OOC_UINT16*)((OOC_INT32)source+(_check_index((i10+1), source_0d, OOC_UINT32, 6046))*2);
  i13 = (OOC_UINT16)i13<(OOC_UINT16)57344u;
  
l31:
  if (i13) goto l33;
  i13 = *(OOC_INT32*)(_check_pointer(i0, 6244));
  *(OOC_INT32*)(_check_pointer(i0, 6244)) = (i13+1);
  *(OOC_UINT8*)((OOC_INT32)dest+(_check_index(i11, dest_0d, OOC_UINT32, 6273))) = 0u;
  *(OOC_UINT8*)((OOC_INT32)dest+(_check_index(i12, dest_0d, OOC_UINT32, 6333))) = 63u;
  i10 = i10+1;
  i = i10;
  i9 = i9+2;
  j = i9;
  
  goto l36;
l33:
  i11 = i9+2;
  i12 = i10+1;
  i13 = *(OOC_UINT16*)((OOC_INT32)source+(_check_index(i12, source_0d, OOC_UINT32, 6109))*2);
  *(OOC_UINT8*)((OOC_INT32)dest+(_check_index((i11+i1), dest_0d, OOC_UINT32, 6079))) = (i13>>8);
  i12 = *(OOC_UINT16*)((OOC_INT32)source+(_check_index(i12, source_0d, OOC_UINT32, 6167))*2);
  *(OOC_UINT8*)((OOC_INT32)dest+(_check_index((i11+i2), dest_0d, OOC_UINT32, 6138))) = (_mod(i12,256));
  i10 = i10+2;
  i = i10;
  i9 = i9+4;
  j = i9;
  
  goto l36;
l35:
  i10 = i10+1;
  i = i10;
  i9 = i9+2;
  j = i9;
  
l36:
  i11 = i10<i4;
  if (i11) goto l39;
  i11=0u;
  goto l41;
l39:
  i11 = i9<i6;
  
l41:
  if (i11) goto l12_loop;
l44:
  i4=i10;i6=i9;
l45:
  i9 = i4==i7;
  if (i9) goto l48;
  *sourceDone = i4;
  *destDone = i6;
  goto l81;
l48:
  i6 = i4!=i3;
  if (i6) goto l51;
  i6=0u;
  goto l53;
l51:
  i6 = *(OOC_UINT16*)((OOC_INT32)source+(_check_index(i4, source_0d, OOC_UINT32, 6771))*2);
  i6 = XML_UnicodeCodec_UTF16__CodecDesc_Encode_WordsPerEncoding(i6);
  i6 = (i4+i6)<=i3;
  
l53:
  if (!i6) goto l65;
l56_loop:
  i6 = *(OOC_UINT16*)((OOC_INT32)source+(_check_index(i4, source_0d, OOC_UINT32, 6833))*2);
  i6 = XML_UnicodeCodec_UTF16__CodecDesc_Encode_WordsPerEncoding(i6);
  i4 = i4+i6;
  i = i4;
  i6 = i4!=i3;
  if (i6) goto l59;
  i6=0u;
  goto l61;
l59:
  i6 = *(OOC_UINT16*)((OOC_INT32)source+(_check_index(i4, source_0d, OOC_UINT32, 6771))*2);
  i6 = XML_UnicodeCodec_UTF16__CodecDesc_Encode_WordsPerEncoding(i6);
  i6 = (i4+i6)<=i3;
  
l61:
  if (i6) goto l56_loop;
l65:
  i6 = i4!=i7;
  if (i6) goto l68;
  *sourceDone = i4;
  *destDone = i8;
  goto l69;
l68:
  XML_UnicodeCodec_UTF16__CodecDesc_Encode((XML_UnicodeCodec_UTF16__Codec)i0, (void*)(OOC_INT32)source, source_0d, i7, (i4+1), (void*)(OOC_INT32)dest, dest_0d, i8, (i5+5), (void*)(OOC_INT32)sourceDone, (void*)(OOC_INT32)destDone);
l69:
  i6 = *sourceDone;
  i4 = i6==i4;
  if (i4) goto l72;
  i4=0u;
  goto l74;
l72:
  i4 = i6!=i3;
  
l74:
  if (i4) goto l76;
  i4=0u;
  goto l78;
l76:
  i4 = *destDone;
  i4 = i4!=i5;
  
l78:
  if (!i4) goto l81;
  i4 = *(OOC_INT32*)(_check_pointer(i0, 7412));
  i5 = *destDone;
  *(OOC_INT32*)(_check_pointer(i0, 7412)) = (i4+1);
  *(OOC_UINT8*)((OOC_INT32)dest+(_check_index((i5+i1), dest_0d, OOC_UINT32, 7441))) = 0u;
  *(OOC_UINT8*)((OOC_INT32)dest+(_check_index((i5+i2), dest_0d, OOC_UINT32, 7508))) = 63u;
  *destDone = (i5+2);
  *sourceDone = i3;
l81:
  return;
  ;
}