
int sqlite3FtsUnicodeIsalnum(int c)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  
  if ((uint)c < 0x80) {
    return ~(*(uint *)(PTR_DAT_0015b5fc + (c >> 5) * 4 + 0x2288) >> (c & 0x1fU)) & 1;
  }
  if (0x3fffff < (uint)c) {
    return 1;
  }
  iVar5 = 0;
  uVar3 = 0x800065;
  iVar4 = 0x195;
  iVar1 = 0x195;
  iVar6 = 0;
  do {
    iVar2 = iVar1 >> 1;
    if ((c << 10 | 0x3ffU) < uVar3) {
      iVar4 = iVar2 + -1;
      iVar1 = iVar4 + iVar5;
      iVar2 = iVar6;
      if (iVar4 < iVar5) goto LAB_0003de7c;
    }
    else {
      iVar5 = iVar2 + 1;
      iVar1 = iVar4 + iVar5;
      if (iVar4 < iVar5) {
LAB_0003de7c:
        return (uint)c < (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +
                         (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;
      }
    }
    uVar3 = *(uint *)(PTR_DAT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);
    iVar6 = iVar2;
  } while( true );
}



uint FUN_0003dddc(uint param_1)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  
  if (param_1 < 0x80) {
    return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &
           1;
  }
  if (0x3fffff < param_1) {
    return 1;
  }
  iVar5 = 0;
  uVar3 = 0x800065;
  iVar4 = 0x195;
  iVar1 = 0x195;
  iVar6 = 0;
  do {
    iVar2 = iVar1 >> 1;
    if ((param_1 << 10 | 0x3ff) < uVar3) {
      iVar4 = iVar2 + -1;
      iVar1 = iVar4 + iVar5;
      iVar2 = iVar6;
      if (iVar4 < iVar5) goto LAB_0003de7c;
    }
    else {
      iVar5 = iVar2 + 1;
      iVar1 = iVar4 + iVar5;
      if (iVar4 < iVar5) {
LAB_0003de7c:
        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +
                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;
      }
    }
    uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);
    iVar6 = iVar2;
  } while( true );
}


lui gp,0x12
addiu gp,gp,0x57d4
addu gp,gp,t9
sltiu v0,a0,0x80
bne v0,zero,0x0003dea0
_lw v1,-0x7fb4(gp)
lui v0,0x40
sltu v0,a0,v0
bne v0,zero,0x0003de0c
_nop
jr ra
_li v0,0x1
lw t0,-0x7fb4(gp)
sll t1,a0,0xa
lui v1,0x80
or a3,zero,zero
addiu v1,v1,0x65
li a2,0x195
or t2,zero,zero
li v0,0x195
addiu t0,t0,0x1c30
b 0x0003de5c
_ori t1,t1,0x3ff
addiu a3,v0,0x1
or t2,v0,zero
addu v0,a2,a3
slt a1,a2,a3
bne a1,zero,0x0003de7c
_sra v1,v0,0x1
sll v1,v1,0x2
addu v1,t0,v1
lw v1,0x0(v1)
sltu v1,t1,v1
beq v1,zero,0x0003de38
_sra v0,v0,0x1
addiu a2,v0,-0x1
addu v0,a2,a3
slt a1,a2,a3
beq a1,zero,0x0003de50
_sra v1,v0,0x1
sll t2,t2,0x2
addu t0,t0,t2
lw v0,0x0(t0)
srl v1,v0,0xa
andi v0,v0,0x3ff
addu v0,v1,v0
sltu a0,a0,v0
jr ra
_xori v0,a0,0x1
sra v0,a0,0x5
sll v0,v0,0x2
addiu v1,v1,0x2288
addu v0,v0,v1
lw v0,0x0(v0)
srlv a0,v0,a0
nor a0,zero,a0
jr ra
_andi v0,a0,0x1
(translation_unit "uint FUN_0003dddc(uint param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  \n  if (param_1 < 0x80) {\n    return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;\n  }\n  if (0x3fffff < param_1) {\n    return 1;\n  }\n  iVar5 = 0;\n  uVar3 = 0x800065;\n  iVar4 = 0x195;\n  iVar1 = 0x195;\n  iVar6 = 0;\n  do {\n    iVar2 = iVar1 >> 1;\n    if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  } while( true );\n}\n\n" (function_definition "uint FUN_0003dddc(uint param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  \n  if (param_1 < 0x80) {\n    return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;\n  }\n  if (0x3fffff < param_1) {\n    return 1;\n  }\n  iVar5 = 0;\n  uVar3 = 0x800065;\n  iVar4 = 0x195;\n  iVar1 = 0x195;\n  iVar6 = 0;\n  do {\n    iVar2 = iVar1 >> 1;\n    if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  } while( true );\n}" type_identifier (function_declarator "FUN_0003dddc(uint param_1)" identifier (parameter_list "(uint param_1)" ( (parameter_declaration "uint param_1" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  \n  if (param_1 < 0x80) {\n    return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;\n  }\n  if (0x3fffff < param_1) {\n    return 1;\n  }\n  iVar5 = 0;\n  uVar3 = 0x800065;\n  iVar4 = 0x195;\n  iVar1 = 0x195;\n  iVar6 = 0;\n  do {\n    iVar2 = iVar1 >> 1;\n    if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (if_statement "if (param_1 < 0x80) {\n    return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;\n  }" if (parenthesized_expression "(param_1 < 0x80)" ( (binary_expression "param_1 < 0x80" identifier < number_literal) )) (compound_statement "{\n    return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;\n  }" { (return_statement "return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;" return (binary_expression "~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1" (unary_expression "~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f))" ~ (parenthesized_expression "(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f))" ( (binary_expression "*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)" (pointer_expression "*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288)" * (cast_expression "(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288)" ( (binary_expression "PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288" (binary_expression "PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4" identifier + (binary_expression "((int)param_1 >> 5) * 4" (parenthesized_expression "((int)param_1 >> 5)" ( (binary_expression "(int)param_1 >> 5" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * number_literal)) + number_literal) )))) >> (parenthesized_expression "(param_1 & 0x1f)" ( (binary_expression "param_1 & 0x1f" identifier & number_literal) ))) ))) & number_literal) ;) })) (if_statement "if (0x3fffff < param_1) {\n    return 1;\n  }" if (parenthesized_expression "(0x3fffff < param_1)" ( (binary_expression "0x3fffff < param_1" number_literal < identifier) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = 0x800065;" (assignment_expression "uVar3 = 0x800065" identifier = number_literal) ;) (expression_statement "iVar4 = 0x195;" (assignment_expression "iVar4 = 0x195" identifier = number_literal) ;) (expression_statement "iVar1 = 0x195;" (assignment_expression "iVar1 = 0x195" identifier = number_literal) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n    iVar2 = iVar1 >> 1;\n    if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  } while( true );" do (compound_statement "{\n    iVar2 = iVar1 >> 1;\n    if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  }" { (expression_statement "iVar2 = iVar1 >> 1;" (assignment_expression "iVar2 = iVar1 >> 1" identifier = (binary_expression "iVar1 >> 1" identifier >> number_literal)) ;) (if_statement "if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }" if (parenthesized_expression "((param_1 << 10 | 0x3ff) < uVar3)" ( (binary_expression "(param_1 << 10 | 0x3ff) < uVar3" (parenthesized_expression "(param_1 << 10 | 0x3ff)" ( (binary_expression "param_1 << 10 | 0x3ff" (binary_expression "param_1 << 10" identifier << number_literal) | number_literal) )) < identifier) )) (compound_statement "{\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }" { (expression_statement "iVar4 = iVar2 + -1;" (assignment_expression "iVar4 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (expression_statement "iVar1 = iVar4 + iVar5;" (assignment_expression "iVar1 = iVar4 + iVar5" identifier = (binary_expression "iVar4 + iVar5" identifier + identifier)) ;) (expression_statement "iVar2 = iVar6;" (assignment_expression "iVar2 = iVar6" identifier = identifier) ;) (if_statement "if (iVar4 < iVar5) goto LAB_0003de7c;" if (parenthesized_expression "(iVar4 < iVar5)" ( (binary_expression "iVar4 < iVar5" identifier < identifier) )) (goto_statement "goto LAB_0003de7c;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }" else (compound_statement "{\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }" { (expression_statement "iVar5 = iVar2 + 1;" (assignment_expression "iVar5 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "iVar1 = iVar4 + iVar5;" (assignment_expression "iVar1 = iVar4 + iVar5" identifier = (binary_expression "iVar4 + iVar5" identifier + identifier)) ;) (if_statement "if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }" if (parenthesized_expression "(iVar4 < iVar5)" ( (binary_expression "iVar4 < iVar5" identifier < identifier) )) (compound_statement "{\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }" { (labeled_statement "LAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;" statement_identifier : (return_statement "return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;" return (binary_expression "param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1" (binary_expression "param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff)" identifier < (binary_expression "(*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff)" (parenthesized_expression "(*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10)" ( (binary_expression "*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10" (pointer_expression "*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" * (cast_expression "(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" ( (binary_expression "PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30" (binary_expression "PTR_UINT_0015b5fc + iVar2 * 4" identifier + (binary_expression "iVar2 * 4" identifier * number_literal)) + number_literal) )))) >> number_literal) )) + (parenthesized_expression "(*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff)" ( (binary_expression "*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff" (pointer_expression "*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" * (cast_expression "(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" ( (binary_expression "PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30" (binary_expression "PTR_UINT_0015b5fc + iVar2 * 4" identifier + (binary_expression "iVar2 * 4" identifier * number_literal)) + number_literal) )))) & number_literal) )))) ^ number_literal) ;)) })) }))) (expression_statement "uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);" (assignment_expression "uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30)" identifier = (pointer_expression "*(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30)" * (cast_expression "(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30)" ( (binary_expression "PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30" (binary_expression "PTR_UINT_0015b5fc + (iVar1 >> 1) * 4" identifier + (binary_expression "(iVar1 >> 1) * 4" (parenthesized_expression "(iVar1 >> 1)" ( (binary_expression "iVar1 >> 1" identifier >> number_literal) )) * number_literal)) + number_literal) ))))) ;) (expression_statement "iVar6 = iVar2;" (assignment_expression "iVar6 = iVar2" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int sqlite3FtsUnicodeIsalnum(int c)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  \n  if ((uint)c < 0x80) {\n    return ~(*(uint *)(PTR_DAT_0015b5fc + (c >> 5) * 4 + 0x2288) >> (c & 0x1fU)) & 1;\n  }\n  if (0x3fffff < (uint)c) {\n    return 1;\n  }\n  iVar5 = 0;\n  uVar3 = 0x800065;\n  iVar4 = 0x195;\n  iVar1 = 0x195;\n  iVar6 = 0;\n  do {\n    iVar2 = iVar1 >> 1;\n    if ((c << 10 | 0x3ffU) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return (uint)c < (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_DAT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  } while( true );\n}\n\n" (function_definition "int sqlite3FtsUnicodeIsalnum(int c)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  \n  if ((uint)c < 0x80) {\n    return ~(*(uint *)(PTR_DAT_0015b5fc + (c >> 5) * 4 + 0x2288) >> (c & 0x1fU)) & 1;\n  }\n  if (0x3fffff < (uint)c) {\n    return 1;\n  }\n  iVar5 = 0;\n  uVar3 = 0x800065;\n  iVar4 = 0x195;\n  iVar1 = 0x195;\n  iVar6 = 0;\n  do {\n    iVar2 = iVar1 >> 1;\n    if ((c << 10 | 0x3ffU) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return (uint)c < (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_DAT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  } while( true );\n}" primitive_type (function_declarator "sqlite3FtsUnicodeIsalnum(int c)" identifier (parameter_list "(int c)" ( (parameter_declaration "int c" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  \n  if ((uint)c < 0x80) {\n    return ~(*(uint *)(PTR_DAT_0015b5fc + (c >> 5) * 4 + 0x2288) >> (c & 0x1fU)) & 1;\n  }\n  if (0x3fffff < (uint)c) {\n    return 1;\n  }\n  iVar5 = 0;\n  uVar3 = 0x800065;\n  iVar4 = 0x195;\n  iVar1 = 0x195;\n  iVar6 = 0;\n  do {\n    iVar2 = iVar1 >> 1;\n    if ((c << 10 | 0x3ffU) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return (uint)c < (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_DAT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (if_statement "if ((uint)c < 0x80) {\n    return ~(*(uint *)(PTR_DAT_0015b5fc + (c >> 5) * 4 + 0x2288) >> (c & 0x1fU)) & 1;\n  }" if (parenthesized_expression "((uint)c < 0x80)" ( (binary_expression "(uint)c < 0x80" (cast_expression "(uint)c" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n    return ~(*(uint *)(PTR_DAT_0015b5fc + (c >> 5) * 4 + 0x2288) >> (c & 0x1fU)) & 1;\n  }" { (return_statement "return ~(*(uint *)(PTR_DAT_0015b5fc + (c >> 5) * 4 + 0x2288) >> (c & 0x1fU)) & 1;" return (binary_expression "~(*(uint *)(PTR_DAT_0015b5fc + (c >> 5) * 4 + 0x2288) >> (c & 0x1fU)) & 1" (unary_expression "~(*(uint *)(PTR_DAT_0015b5fc + (c >> 5) * 4 + 0x2288) >> (c & 0x1fU))" ~ (parenthesized_expression "(*(uint *)(PTR_DAT_0015b5fc + (c >> 5) * 4 + 0x2288) >> (c & 0x1fU))" ( (binary_expression "*(uint *)(PTR_DAT_0015b5fc + (c >> 5) * 4 + 0x2288) >> (c & 0x1fU)" (pointer_expression "*(uint *)(PTR_DAT_0015b5fc + (c >> 5) * 4 + 0x2288)" * (cast_expression "(uint *)(PTR_DAT_0015b5fc + (c >> 5) * 4 + 0x2288)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b5fc + (c >> 5) * 4 + 0x2288)" ( (binary_expression "PTR_DAT_0015b5fc + (c >> 5) * 4 + 0x2288" (binary_expression "PTR_DAT_0015b5fc + (c >> 5) * 4" identifier + (binary_expression "(c >> 5) * 4" (parenthesized_expression "(c >> 5)" ( (binary_expression "c >> 5" identifier >> number_literal) )) * number_literal)) + number_literal) )))) >> (parenthesized_expression "(c & 0x1fU)" ( (binary_expression "c & 0x1fU" identifier & number_literal) ))) ))) & number_literal) ;) })) (if_statement "if (0x3fffff < (uint)c) {\n    return 1;\n  }" if (parenthesized_expression "(0x3fffff < (uint)c)" ( (binary_expression "0x3fffff < (uint)c" number_literal < (cast_expression "(uint)c" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = 0x800065;" (assignment_expression "uVar3 = 0x800065" identifier = number_literal) ;) (expression_statement "iVar4 = 0x195;" (assignment_expression "iVar4 = 0x195" identifier = number_literal) ;) (expression_statement "iVar1 = 0x195;" (assignment_expression "iVar1 = 0x195" identifier = number_literal) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n    iVar2 = iVar1 >> 1;\n    if ((c << 10 | 0x3ffU) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return (uint)c < (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_DAT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  } while( true );" do (compound_statement "{\n    iVar2 = iVar1 >> 1;\n    if ((c << 10 | 0x3ffU) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return (uint)c < (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_DAT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  }" { (expression_statement "iVar2 = iVar1 >> 1;" (assignment_expression "iVar2 = iVar1 >> 1" identifier = (binary_expression "iVar1 >> 1" identifier >> number_literal)) ;) (if_statement "if ((c << 10 | 0x3ffU) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return (uint)c < (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }" if (parenthesized_expression "((c << 10 | 0x3ffU) < uVar3)" ( (binary_expression "(c << 10 | 0x3ffU) < uVar3" (parenthesized_expression "(c << 10 | 0x3ffU)" ( (binary_expression "c << 10 | 0x3ffU" (binary_expression "c << 10" identifier << number_literal) | number_literal) )) < identifier) )) (compound_statement "{\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }" { (expression_statement "iVar4 = iVar2 + -1;" (assignment_expression "iVar4 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (expression_statement "iVar1 = iVar4 + iVar5;" (assignment_expression "iVar1 = iVar4 + iVar5" identifier = (binary_expression "iVar4 + iVar5" identifier + identifier)) ;) (expression_statement "iVar2 = iVar6;" (assignment_expression "iVar2 = iVar6" identifier = identifier) ;) (if_statement "if (iVar4 < iVar5) goto LAB_0003de7c;" if (parenthesized_expression "(iVar4 < iVar5)" ( (binary_expression "iVar4 < iVar5" identifier < identifier) )) (goto_statement "goto LAB_0003de7c;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return (uint)c < (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }" else (compound_statement "{\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return (uint)c < (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }" { (expression_statement "iVar5 = iVar2 + 1;" (assignment_expression "iVar5 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "iVar1 = iVar4 + iVar5;" (assignment_expression "iVar1 = iVar4 + iVar5" identifier = (binary_expression "iVar4 + iVar5" identifier + identifier)) ;) (if_statement "if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return (uint)c < (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }" if (parenthesized_expression "(iVar4 < iVar5)" ( (binary_expression "iVar4 < iVar5" identifier < identifier) )) (compound_statement "{\nLAB_0003de7c:\n        return (uint)c < (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }" { (labeled_statement "LAB_0003de7c:\n        return (uint)c < (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;" statement_identifier : (return_statement "return (uint)c < (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;" return (binary_expression "(uint)c < (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1" (binary_expression "(uint)c < (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff)" (cast_expression "(uint)c" ( (type_descriptor "uint" type_identifier) ) identifier) < (binary_expression "(*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff)" (parenthesized_expression "(*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10)" ( (binary_expression "*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10" (pointer_expression "*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30)" * (cast_expression "(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30)" ( (binary_expression "PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30" (binary_expression "PTR_DAT_0015b5fc + iVar2 * 4" identifier + (binary_expression "iVar2 * 4" identifier * number_literal)) + number_literal) )))) >> number_literal) )) + (parenthesized_expression "(*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff)" ( (binary_expression "*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff" (pointer_expression "*(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30)" * (cast_expression "(uint *)(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30)" ( (binary_expression "PTR_DAT_0015b5fc + iVar2 * 4 + 0x1c30" (binary_expression "PTR_DAT_0015b5fc + iVar2 * 4" identifier + (binary_expression "iVar2 * 4" identifier * number_literal)) + number_literal) )))) & number_literal) )))) ^ number_literal) ;)) })) }))) (expression_statement "uVar3 = *(uint *)(PTR_DAT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);" (assignment_expression "uVar3 = *(uint *)(PTR_DAT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30)" identifier = (pointer_expression "*(uint *)(PTR_DAT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30)" * (cast_expression "(uint *)(PTR_DAT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30)" ( (binary_expression "PTR_DAT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30" (binary_expression "PTR_DAT_0015b5fc + (iVar1 >> 1) * 4" identifier + (binary_expression "(iVar1 >> 1) * 4" (parenthesized_expression "(iVar1 >> 1)" ( (binary_expression "iVar1 >> 1" identifier >> number_literal) )) * number_literal)) + number_literal) ))))) ;) (expression_statement "iVar6 = iVar2;" (assignment_expression "iVar6 = iVar2" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "uint FUN_0003dddc(uint param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  \n  if (param_1 < 0x80) {\n    return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;\n  }\n  if (0x3fffff < param_1) {\n    return 1;\n  }\n  iVar5 = 0;\n  uVar3 = 0x800065;\n  iVar4 = 0x195;\n  iVar1 = 0x195;\n  iVar6 = 0;\n  do {\n    iVar2 = iVar1 >> 1;\n    if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  } while( true );\n}\n\n" (function_definition "uint FUN_0003dddc(uint param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  \n  if (param_1 < 0x80) {\n    return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;\n  }\n  if (0x3fffff < param_1) {\n    return 1;\n  }\n  iVar5 = 0;\n  uVar3 = 0x800065;\n  iVar4 = 0x195;\n  iVar1 = 0x195;\n  iVar6 = 0;\n  do {\n    iVar2 = iVar1 >> 1;\n    if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  } while( true );\n}" type_identifier (function_declarator "FUN_0003dddc(uint param_1)" identifier (parameter_list "(uint param_1)" ( (parameter_declaration "uint param_1" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  \n  if (param_1 < 0x80) {\n    return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;\n  }\n  if (0x3fffff < param_1) {\n    return 1;\n  }\n  iVar5 = 0;\n  uVar3 = 0x800065;\n  iVar4 = 0x195;\n  iVar1 = 0x195;\n  iVar6 = 0;\n  do {\n    iVar2 = iVar1 >> 1;\n    if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (if_statement "if (param_1 < 0x80) {\n    return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;\n  }" if (parenthesized_expression "(param_1 < 0x80)" ( (binary_expression "param_1 < 0x80" identifier < number_literal) )) (compound_statement "{\n    return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;\n  }" { (return_statement "return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;" return (binary_expression "~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1" (unary_expression "~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f))" ~ (parenthesized_expression "(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f))" ( (binary_expression "*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)" (pointer_expression "*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288)" * (cast_expression "(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288)" ( (binary_expression "PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288" (binary_expression "PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4" identifier + (binary_expression "((int)param_1 >> 5) * 4" (parenthesized_expression "((int)param_1 >> 5)" ( (binary_expression "(int)param_1 >> 5" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * number_literal)) + number_literal) )))) >> (parenthesized_expression "(param_1 & 0x1f)" ( (binary_expression "param_1 & 0x1f" identifier & number_literal) ))) ))) & number_literal) ;) })) (if_statement "if (0x3fffff < param_1) {\n    return 1;\n  }" if (parenthesized_expression "(0x3fffff < param_1)" ( (binary_expression "0x3fffff < param_1" number_literal < identifier) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = 0x800065;" (assignment_expression "uVar3 = 0x800065" identifier = number_literal) ;) (expression_statement "iVar4 = 0x195;" (assignment_expression "iVar4 = 0x195" identifier = number_literal) ;) (expression_statement "iVar1 = 0x195;" (assignment_expression "iVar1 = 0x195" identifier = number_literal) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n    iVar2 = iVar1 >> 1;\n    if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  } while( true );" do (compound_statement "{\n    iVar2 = iVar1 >> 1;\n    if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  }" { (expression_statement "iVar2 = iVar1 >> 1;" (assignment_expression "iVar2 = iVar1 >> 1" identifier = (binary_expression "iVar1 >> 1" identifier >> number_literal)) ;) (if_statement "if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }" if (parenthesized_expression "((param_1 << 10 | 0x3ff) < uVar3)" ( (binary_expression "(param_1 << 10 | 0x3ff) < uVar3" (parenthesized_expression "(param_1 << 10 | 0x3ff)" ( (binary_expression "param_1 << 10 | 0x3ff" (binary_expression "param_1 << 10" identifier << number_literal) | number_literal) )) < identifier) )) (compound_statement "{\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }" { (expression_statement "iVar4 = iVar2 + -1;" (assignment_expression "iVar4 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (expression_statement "iVar1 = iVar4 + iVar5;" (assignment_expression "iVar1 = iVar4 + iVar5" identifier = (binary_expression "iVar4 + iVar5" identifier + identifier)) ;) (expression_statement "iVar2 = iVar6;" (assignment_expression "iVar2 = iVar6" identifier = identifier) ;) (if_statement "if (iVar4 < iVar5) goto LAB_0003de7c;" if (parenthesized_expression "(iVar4 < iVar5)" ( (binary_expression "iVar4 < iVar5" identifier < identifier) )) (goto_statement "goto LAB_0003de7c;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }" else (compound_statement "{\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }" { (expression_statement "iVar5 = iVar2 + 1;" (assignment_expression "iVar5 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "iVar1 = iVar4 + iVar5;" (assignment_expression "iVar1 = iVar4 + iVar5" identifier = (binary_expression "iVar4 + iVar5" identifier + identifier)) ;) (if_statement "if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }" if (parenthesized_expression "(iVar4 < iVar5)" ( (binary_expression "iVar4 < iVar5" identifier < identifier) )) (compound_statement "{\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }" { (labeled_statement "LAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;" statement_identifier : (return_statement "return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;" return (binary_expression "param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1" (binary_expression "param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff)" identifier < (binary_expression "(*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff)" (parenthesized_expression "(*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10)" ( (binary_expression "*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10" (pointer_expression "*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" * (cast_expression "(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" ( (binary_expression "PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30" (binary_expression "PTR_UINT_0015b5fc + iVar2 * 4" identifier + (binary_expression "iVar2 * 4" identifier * number_literal)) + number_literal) )))) >> number_literal) )) + (parenthesized_expression "(*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff)" ( (binary_expression "*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff" (pointer_expression "*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" * (cast_expression "(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" ( (binary_expression "PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30" (binary_expression "PTR_UINT_0015b5fc + iVar2 * 4" identifier + (binary_expression "iVar2 * 4" identifier * number_literal)) + number_literal) )))) & number_literal) )))) ^ number_literal) ;)) })) }))) (expression_statement "uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);" (assignment_expression "uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30)" identifier = (pointer_expression "*(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30)" * (cast_expression "(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30)" ( (binary_expression "PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30" (binary_expression "PTR_UINT_0015b5fc + (iVar1 >> 1) * 4" identifier + (binary_expression "(iVar1 >> 1) * 4" (parenthesized_expression "(iVar1 >> 1)" ( (binary_expression "iVar1 >> 1" identifier >> number_literal) )) * number_literal)) + number_literal) ))))) ;) (expression_statement "iVar6 = iVar2;" (assignment_expression "iVar6 = iVar2" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) * LIT)) + LIT) )))) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) & LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT << LIT) | LIT) )) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (return_statement return (binary_expression (binary_expression IDENT < (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) )))) >> LIT) )) + (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) )))) & LIT) )))) ^ LIT) ;)) })) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT)) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "uint FUN_0003dddc(uint param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  \n  if (param_1 < 0x80) {\n    return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;\n  }\n  if (0x3fffff < param_1) {\n    return 1;\n  }\n  iVar5 = 0;\n  uVar3 = 0x800065;\n  iVar4 = 0x195;\n  iVar1 = 0x195;\n  iVar6 = 0;\n  do {\n    iVar2 = iVar1 >> 1;\n    if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  } while( true );\n}" (type_identifier "uint") (function_declarator "FUN_0003dddc(uint param_1)" (identifier "FUN_0003dddc") (parameter_list "(uint param_1)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  \n  if (param_1 < 0x80) {\n    return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;\n  }\n  if (0x3fffff < param_1) {\n    return 1;\n  }\n  iVar5 = 0;\n  uVar3 = 0x800065;\n  iVar4 = 0x195;\n  iVar1 = 0x195;\n  iVar6 = 0;\n  do {\n    iVar2 = iVar1 >> 1;\n    if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  } while( true );\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (if_statement "if (param_1 < 0x80) {\n    return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;\n  }" (if "if") (parenthesized_expression "(param_1 < 0x80)" (( "(") (binary_expression "param_1 < 0x80" (identifier "param_1") (< "<") (number_literal "0x80")) () ")")) (compound_statement "{\n    return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;\n  }" ({ "{") (return_statement "return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1;" (return "return") (binary_expression "~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &\n           1" (unary_expression "~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f))" (~ "~") (parenthesized_expression "(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f))" (( "(") (binary_expression "*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)" (pointer_expression "*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288)" (* "*") (cast_expression "(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288)" (( "(") (binary_expression "PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288" (binary_expression "PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4" (identifier "PTR_UINT_0015b5fc") (+ "+") (binary_expression "((int)param_1 >> 5) * 4" (parenthesized_expression "((int)param_1 >> 5)" (( "(") (binary_expression "(int)param_1 >> 5" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (>> ">>") (number_literal "5")) () ")")) (* "*") (number_literal "4"))) (+ "+") (number_literal "0x2288")) () ")")))) (>> ">>") (parenthesized_expression "(param_1 & 0x1f)" (( "(") (binary_expression "param_1 & 0x1f" (identifier "param_1") (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (number_literal "1")) (; ";")) (} "}"))) (if_statement "if (0x3fffff < param_1) {\n    return 1;\n  }" (if "if") (parenthesized_expression "(0x3fffff < param_1)" (( "(") (binary_expression "0x3fffff < param_1" (number_literal "0x3fffff") (< "<") (identifier "param_1")) () ")")) (compound_statement "{\n    return 1;\n  }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = 0x800065;" (assignment_expression "uVar3 = 0x800065" (identifier "uVar3") (= "=") (number_literal "0x800065")) (; ";")) (expression_statement "iVar4 = 0x195;" (assignment_expression "iVar4 = 0x195" (identifier "iVar4") (= "=") (number_literal "0x195")) (; ";")) (expression_statement "iVar1 = 0x195;" (assignment_expression "iVar1 = 0x195" (identifier "iVar1") (= "=") (number_literal "0x195")) (; ";")) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    iVar2 = iVar1 >> 1;\n    if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  } while( true );" (do "do") (compound_statement "{\n    iVar2 = iVar1 >> 1;\n    if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }\n    uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);\n    iVar6 = iVar2;\n  }" ({ "{") (expression_statement "iVar2 = iVar1 >> 1;" (assignment_expression "iVar2 = iVar1 >> 1" (identifier "iVar2") (= "=") (binary_expression "iVar1 >> 1" (identifier "iVar1") (>> ">>") (number_literal "1"))) (; ";")) (if_statement "if ((param_1 << 10 | 0x3ff) < uVar3) {\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }\n    else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }" (if "if") (parenthesized_expression "((param_1 << 10 | 0x3ff) < uVar3)" (( "(") (binary_expression "(param_1 << 10 | 0x3ff) < uVar3" (parenthesized_expression "(param_1 << 10 | 0x3ff)" (( "(") (binary_expression "param_1 << 10 | 0x3ff" (binary_expression "param_1 << 10" (identifier "param_1") (<< "<<") (number_literal "10")) (| "|") (number_literal "0x3ff")) () ")")) (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n      iVar4 = iVar2 + -1;\n      iVar1 = iVar4 + iVar5;\n      iVar2 = iVar6;\n      if (iVar4 < iVar5) goto LAB_0003de7c;\n    }" ({ "{") (expression_statement "iVar4 = iVar2 + -1;" (assignment_expression "iVar4 = iVar2 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar1 = iVar4 + iVar5;" (assignment_expression "iVar1 = iVar4 + iVar5" (identifier "iVar1") (= "=") (binary_expression "iVar4 + iVar5" (identifier "iVar4") (+ "+") (identifier "iVar5"))) (; ";")) (expression_statement "iVar2 = iVar6;" (assignment_expression "iVar2 = iVar6" (identifier "iVar2") (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (iVar4 < iVar5) goto LAB_0003de7c;" (if "if") (parenthesized_expression "(iVar4 < iVar5)" (( "(") (binary_expression "iVar4 < iVar5" (identifier "iVar4") (< "<") (identifier "iVar5")) () ")")) (goto_statement "goto LAB_0003de7c;" (goto "goto") (statement_identifier "LAB_0003de7c") (; ";"))) (} "}")) (else_clause "else {\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }" (else "else") (compound_statement "{\n      iVar5 = iVar2 + 1;\n      iVar1 = iVar4 + iVar5;\n      if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }\n    }" ({ "{") (expression_statement "iVar5 = iVar2 + 1;" (assignment_expression "iVar5 = iVar2 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar1 = iVar4 + iVar5;" (assignment_expression "iVar1 = iVar4 + iVar5" (identifier "iVar1") (= "=") (binary_expression "iVar4 + iVar5" (identifier "iVar4") (+ "+") (identifier "iVar5"))) (; ";")) (if_statement "if (iVar4 < iVar5) {\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }" (if "if") (parenthesized_expression "(iVar4 < iVar5)" (( "(") (binary_expression "iVar4 < iVar5" (identifier "iVar4") (< "<") (identifier "iVar5")) () ")")) (compound_statement "{\nLAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;\n      }" ({ "{") (labeled_statement "LAB_0003de7c:\n        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;" (statement_identifier "LAB_0003de7c") (: ":") (return_statement "return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;" (return "return") (binary_expression "param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1" (binary_expression "param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff)" (identifier "param_1") (< "<") (binary_expression "(*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +\n                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff)" (parenthesized_expression "(*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10)" (( "(") (binary_expression "*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10" (pointer_expression "*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" (* "*") (cast_expression "(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" (( "(") (binary_expression "PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30" (binary_expression "PTR_UINT_0015b5fc + iVar2 * 4" (identifier "PTR_UINT_0015b5fc") (+ "+") (binary_expression "iVar2 * 4" (identifier "iVar2") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x1c30")) () ")")))) (>> ">>") (number_literal "10")) () ")")) (+ "+") (parenthesized_expression "(*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff)" (( "(") (binary_expression "*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff" (pointer_expression "*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" (* "*") (cast_expression "(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30)" (( "(") (binary_expression "PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30" (binary_expression "PTR_UINT_0015b5fc + iVar2 * 4" (identifier "PTR_UINT_0015b5fc") (+ "+") (binary_expression "iVar2 * 4" (identifier "iVar2") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x1c30")) () ")")))) (& "&") (number_literal "0x3ff")) () ")")))) (^ "^") (number_literal "1")) (; ";"))) (} "}"))) (} "}")))) (expression_statement "uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);" (assignment_expression "uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30)" (* "*") (cast_expression "(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30)" (( "(") (binary_expression "PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30" (binary_expression "PTR_UINT_0015b5fc + (iVar1 >> 1) * 4" (identifier "PTR_UINT_0015b5fc") (+ "+") (binary_expression "(iVar1 >> 1) * 4" (parenthesized_expression "(iVar1 >> 1)" (( "(") (binary_expression "iVar1 >> 1" (identifier "iVar1") (>> ">>") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) (+ "+") (number_literal "0x1c30")) () ")"))))) (; ";")) (expression_statement "iVar6 = iVar2;" (assignment_expression "iVar6 = iVar2" (identifier "iVar6") (= "=") (identifier "iVar2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

int function_1(int var_2)

{
  int var_3;
  int var_5;
  type_1 var_4;
  int var_6;
  int var_7;
  int iVar6;
  
  if ((type_1)var_2 < 0x80) {
    return ~(*(type_1 *)(var_1 + (var_2 >> 5) * 4 + 0x2288) >> (var_2 & 0x1fU)) & 1;
  }
  if (0x3fffff < (type_1)var_2) {
    return 1;
  }
  var_7 = 0;
  var_4 = 0x800065;
  var_6 = 0x195;
  var_3 = 0x195;
  iVar6 = 0;
  do {
    var_5 = var_3 >> 1;
    if ((var_2 << 10 | 0x3ffU) < var_4) {
      var_6 = var_5 + -1;
      var_3 = var_6 + var_7;
      var_5 = iVar6;
      if (var_6 < var_7) goto LAB_0003de7c;
    }
    else {
      var_7 = var_5 + 1;
      var_3 = var_6 + var_7;
      if (var_6 < var_7) {
LAB_0003de7c:
        return (type_1)var_2 < (*(type_1 *)(var_1 + var_5 * 4 + 0x1c30) >> 10) +
                         (*(type_1 *)(var_1 + var_5 * 4 + 0x1c30) & 0x3ff) ^ 1;
      }
    }
    var_4 = *(type_1 *)(var_1 + (var_3 >> 1) * 4 + 0x1c30);
    iVar6 = var_5;
  } while( true );
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (binary_expression left: (unary_expression argument: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (number_literal))) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (return_statement (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) right: (number_literal))))) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (true))))))

uint MASKED(uint param_1)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  
  if (param_1 < 0x80) {
    return ~(*(uint *)(PTR_UINT_0015b5fc + ((int)param_1 >> 5) * 4 + 0x2288) >> (param_1 & 0x1f)) &
           1;
  }
  if (0x3fffff < param_1) {
    return 1;
  }
  iVar5 = 0;
  uVar3 = 0x800065;
  iVar4 = 0x195;
  iVar1 = 0x195;
  iVar6 = 0;
  do {
    iVar2 = iVar1 >> 1;
    if ((param_1 << 10 | 0x3ff) < uVar3) {
      iVar4 = iVar2 + -1;
      iVar1 = iVar4 + iVar5;
      iVar2 = iVar6;
      if (iVar4 < iVar5) goto LAB_0003de7c;
    }
    else {
      iVar5 = iVar2 + 1;
      iVar1 = iVar4 + iVar5;
      if (iVar4 < iVar5) {
LAB_0003de7c:
        return param_1 < (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) >> 10) +
                         (*(uint *)(PTR_UINT_0015b5fc + iVar2 * 4 + 0x1c30) & 0x3ff) ^ 1;
      }
    }
    uVar3 = *(uint *)(PTR_UINT_0015b5fc + (iVar1 >> 1) * 4 + 0x1c30);
    iVar6 = iVar2;
  } while( true );
}

