
int exprImpliesNotNull(Parse *pParse,Expr *p,Expr *pNN,int iTab,int seenNot)

{
  undefined *puVar1;
  int iVar2;
  uint uVar3;
  
  puVar1 = PTR_yy_shift_ofst_376__000f52d4;
  iVar2 = sqlite3ExprCompare(pParse,p,pNN,iTab);
  if (iVar2 == 0) {
    return (uint)(pNN->op != 'w');
  }
  uVar3 = p->op - 0x13 & 0xff;
  if (uVar3 < 0xa0) {
                    /* WARNING: Could not emulate address calculation at 0x00063818 */
                    /* WARNING: Treating indirect jump as call */
    iVar2 = (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();
    return iVar2;
  }
  return 0;
}



uint FUN_00063774(undefined4 param_1,byte *param_2,char *param_3,undefined4 param_4)

{
  undefined *puVar1;
  int iVar2;
  uint uVar3;
  
  puVar1 = PTR_DAT_000f52d4;
  iVar2 = FUN_00062ed8(param_1,param_2,param_3,param_4);
  if (iVar2 == 0) {
    return (uint)(*param_3 != 'w');
  }
  uVar3 = *param_2 - 0x13 & 0xff;
  if (uVar3 < 0xa0) {
                    /* WARNING: Could not emulate address calculation at 0x00063818 */
                    /* WARNING: Treating indirect jump as call */
    uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();
    return uVar3;
  }
  return 0;
}


lui gp,0xa
addiu gp,gp,-0x64d4
addu gp,gp,t9
addiu sp,sp,-0x50
sw s6,0x40(sp)
sw s4,0x38(sp)
sw s3,0x34(sp)
sw s5,0x3c(sp)
sw s7,0x44(sp)
li s7,0x1
sw s8,0x48(sp)
or s8,a1,zero
sw s2,0x30(sp)
or s2,a0,zero
sw s1,0x2c(sp)
or s1,a3,zero
sw s0,0x28(sp)
or s0,a2,zero
sw gp,0x18(sp)
sw ra,0x4c(sp)
lw s3,-0x7fa0(gp)
lw s4,-0x7fcc(gp)
lw s6,-0x7fa0(gp)
lw s5,0x60(sp)
addiu s3,s3,0x2ed8
addiu s4,s4,-0x2fa4
addiu s6,s6,0x3774
or a3,s1,zero
or a2,s0,zero
or a1,s8,zero
or t9,s3,zero
bal 0x00062ed8
_or a0,s2,zero
beq v0,zero,0x0006392c
_lw gp,0x18(sp)
lbu v0,0x0(s8)
addiu v0,v0,-0x13
andi v0,v0,0xff
sltiu v1,v0,0xa0
beq v1,zero,0x000638d0
_sll v0,v0,0x2
addu v0,s4,v0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
bne s5,zero,0x000638d0
_lw v1,0x14(s8)
lw a1,0x4(v1)
or a3,s1,zero
sw v1,0x24(sp)
or a2,s0,zero
sw s7,0x10(sp)
or t9,s6,zero
bal 0x00063774
_or a0,s2,zero
bne v0,zero,0x00063924
_lw v1,0x24(sp)
lw a1,0x14(v1)
or a3,s1,zero
sw s7,0x10(sp)
or a2,s0,zero
or t9,s6,zero
bal 0x00063774
_or a0,s2,zero
bne v0,zero,0x000638d4
_li v0,0x1
lw s8,0xc(s8)
b 0x000637e0
_li s5,0x1
li s5,0x1
lw a1,0x10(s8)
or a3,s1,zero
sw s5,0x10(sp)
or a2,s0,zero
or t9,s6,zero
bal 0x00063774
_or a0,s2,zero
bne v0,zero,0x000638d4
_li v0,0x1
b 0x000637e0
_lw s8,0xc(s8)
bne s5,zero,0x000638d0
_li v0,0x2d
lbu v1,0x2(s8)
beq v1,v0,0x00063880
_nop
or v0,zero,zero
lw ra,0x4c(sp)
lw s8,0x48(sp)
lw s7,0x44(sp)
lw s6,0x40(sp)
lw s5,0x3c(sp)
lw s4,0x38(sp)
lw s3,0x34(sp)
lw s2,0x30(sp)
lw s1,0x2c(sp)
lw s0,0x28(sp)
jr ra
_addiu sp,sp,0x50
beq s5,zero,0x00063880
_nop
lw v0,0x4(s8)
andi v0,v0,0x800
bne v0,zero,0x000638d0
_li s5,0x1
b 0x000637e0
_lw s8,0xc(s8)
b 0x000638d4
_li v0,0x1
lbu v0,0x0(s0)
lw ra,0x4c(sp)
lw s8,0x48(sp)
xori v0,v0,0x77
lw s7,0x44(sp)
lw s6,0x40(sp)
sltu v0,zero,v0
lw s5,0x3c(sp)
lw s4,0x38(sp)
lw s3,0x34(sp)
lw s2,0x30(sp)
lw s1,0x2c(sp)
lw s0,0x28(sp)
jr ra
_addiu sp,sp,0x50
(translation_unit "uint FUN_00063774(undefined4 param_1,byte *param_2,char *param_3,undefined4 param_4)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  \n  puVar1 = PTR_DAT_000f52d4;\n  iVar2 = FUN_00062ed8(param_1,param_2,param_3,param_4);\n  if (iVar2 == 0) {\n    return (uint)(*param_3 != 'w');\n  }\n  uVar3 = *param_2 - 0x13 & 0xff;\n  if (uVar3 < 0xa0) {\n                    /* WARNING: Could not emulate address calculation at 0x00063818 */\n                    /* WARNING: Treating indirect jump as call */\n    uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return uVar3;\n  }\n  return 0;\n}\n\n" (function_definition "uint FUN_00063774(undefined4 param_1,byte *param_2,char *param_3,undefined4 param_4)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  \n  puVar1 = PTR_DAT_000f52d4;\n  iVar2 = FUN_00062ed8(param_1,param_2,param_3,param_4);\n  if (iVar2 == 0) {\n    return (uint)(*param_3 != 'w');\n  }\n  uVar3 = *param_2 - 0x13 & 0xff;\n  if (uVar3 < 0xa0) {\n                    /* WARNING: Could not emulate address calculation at 0x00063818 */\n                    /* WARNING: Treating indirect jump as call */\n    uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return uVar3;\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00063774(undefined4 param_1,byte *param_2,char *param_3,undefined4 param_4)" identifier (parameter_list "(undefined4 param_1,byte *param_2,char *param_3,undefined4 param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  \n  puVar1 = PTR_DAT_000f52d4;\n  iVar2 = FUN_00062ed8(param_1,param_2,param_3,param_4);\n  if (iVar2 == 0) {\n    return (uint)(*param_3 != 'w');\n  }\n  uVar3 = *param_2 - 0x13 & 0xff;\n  if (uVar3 < 0xa0) {\n                    /* WARNING: Could not emulate address calculation at 0x00063818 */\n                    /* WARNING: Treating indirect jump as call */\n    uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return uVar3;\n  }\n  return 0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_DAT_000f52d4;" (assignment_expression "puVar1 = PTR_DAT_000f52d4" identifier = identifier) ;) (expression_statement "iVar2 = FUN_00062ed8(param_1,param_2,param_3,param_4);" (assignment_expression "iVar2 = FUN_00062ed8(param_1,param_2,param_3,param_4)" identifier = (call_expression "FUN_00062ed8(param_1,param_2,param_3,param_4)" identifier (argument_list "(param_1,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n    return (uint)(*param_3 != 'w');\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    return (uint)(*param_3 != 'w');\n  }" { (return_statement "return (uint)(*param_3 != 'w');" return (call_expression "(uint)(*param_3 != 'w')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*param_3 != 'w')" ( (binary_expression "*param_3 != 'w'" (pointer_expression "*param_3" * identifier) != (char_literal "'w'" ' character ')) ))) ;) })) (expression_statement "uVar3 = *param_2 - 0x13 & 0xff;" (assignment_expression "uVar3 = *param_2 - 0x13 & 0xff" identifier = (binary_expression "*param_2 - 0x13 & 0xff" (binary_expression "*param_2 - 0x13" (pointer_expression "*param_2" * identifier) - number_literal) & number_literal)) ;) (if_statement "if (uVar3 < 0xa0) {\n                    /* WARNING: Could not emulate address calculation at 0x00063818 */\n                    /* WARNING: Treating indirect jump as call */\n    uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return uVar3;\n  }" if (parenthesized_expression "(uVar3 < 0xa0)" ( (binary_expression "uVar3 < 0xa0" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x00063818 */\n                    /* WARNING: Treating indirect jump as call */\n    uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return uVar3;\n  }" { comment comment (expression_statement "uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();" (assignment_expression "uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4))" * (cast_expression "(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4))" ( (binary_expression "&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(puVar1 + uVar3 * 4 + -0x2fa4)" * (cast_expression "(int *)(puVar1 + uVar3 * 4 + -0x2fa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + uVar3 * 4 + -0x2fa4)" ( (binary_expression "puVar1 + uVar3 * 4 + -0x2fa4" (binary_expression "puVar1 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar3;" return identifier ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int exprImpliesNotNull(Parse *pParse,Expr *p,Expr *pNN,int iTab,int seenNot)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  \n  puVar1 = PTR_yy_shift_ofst_376__000f52d4;\n  iVar2 = sqlite3ExprCompare(pParse,p,pNN,iTab);\n  if (iVar2 == 0) {\n    return (uint)(pNN->op != 'w');\n  }\n  uVar3 = p->op - 0x13 & 0xff;\n  if (uVar3 < 0xa0) {\n                    /* WARNING: Could not emulate address calculation at 0x00063818 */\n                    /* WARNING: Treating indirect jump as call */\n    iVar2 = (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return iVar2;\n  }\n  return 0;\n}\n\n" (function_definition "int exprImpliesNotNull(Parse *pParse,Expr *p,Expr *pNN,int iTab,int seenNot)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  \n  puVar1 = PTR_yy_shift_ofst_376__000f52d4;\n  iVar2 = sqlite3ExprCompare(pParse,p,pNN,iTab);\n  if (iVar2 == 0) {\n    return (uint)(pNN->op != 'w');\n  }\n  uVar3 = p->op - 0x13 & 0xff;\n  if (uVar3 < 0xa0) {\n                    /* WARNING: Could not emulate address calculation at 0x00063818 */\n                    /* WARNING: Treating indirect jump as call */\n    iVar2 = (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return iVar2;\n  }\n  return 0;\n}" primitive_type (function_declarator "exprImpliesNotNull(Parse *pParse,Expr *p,Expr *pNN,int iTab,int seenNot)" identifier (parameter_list "(Parse *pParse,Expr *p,Expr *pNN,int iTab,int seenNot)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "Expr *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "Expr *pNN" type_identifier (pointer_declarator "*pNN" * identifier)) , (parameter_declaration "int iTab" primitive_type identifier) , (parameter_declaration "int seenNot" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  \n  puVar1 = PTR_yy_shift_ofst_376__000f52d4;\n  iVar2 = sqlite3ExprCompare(pParse,p,pNN,iTab);\n  if (iVar2 == 0) {\n    return (uint)(pNN->op != 'w');\n  }\n  uVar3 = p->op - 0x13 & 0xff;\n  if (uVar3 < 0xa0) {\n                    /* WARNING: Could not emulate address calculation at 0x00063818 */\n                    /* WARNING: Treating indirect jump as call */\n    iVar2 = (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return iVar2;\n  }\n  return 0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_yy_shift_ofst_376__000f52d4;" (assignment_expression "puVar1 = PTR_yy_shift_ofst_376__000f52d4" identifier = identifier) ;) (expression_statement "iVar2 = sqlite3ExprCompare(pParse,p,pNN,iTab);" (assignment_expression "iVar2 = sqlite3ExprCompare(pParse,p,pNN,iTab)" identifier = (call_expression "sqlite3ExprCompare(pParse,p,pNN,iTab)" identifier (argument_list "(pParse,p,pNN,iTab)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n    return (uint)(pNN->op != 'w');\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    return (uint)(pNN->op != 'w');\n  }" { (return_statement "return (uint)(pNN->op != 'w');" return (call_expression "(uint)(pNN->op != 'w')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pNN->op != 'w')" ( (binary_expression "pNN->op != 'w'" (field_expression "pNN->op" identifier -> field_identifier) != (char_literal "'w'" ' character ')) ))) ;) })) (expression_statement "uVar3 = p->op - 0x13 & 0xff;" (assignment_expression "uVar3 = p->op - 0x13 & 0xff" identifier = (binary_expression "p->op - 0x13 & 0xff" (binary_expression "p->op - 0x13" (field_expression "p->op" identifier -> field_identifier) - number_literal) & number_literal)) ;) (if_statement "if (uVar3 < 0xa0) {\n                    /* WARNING: Could not emulate address calculation at 0x00063818 */\n                    /* WARNING: Treating indirect jump as call */\n    iVar2 = (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return iVar2;\n  }" if (parenthesized_expression "(uVar3 < 0xa0)" ( (binary_expression "uVar3 < 0xa0" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x00063818 */\n                    /* WARNING: Treating indirect jump as call */\n    iVar2 = (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return iVar2;\n  }" { comment comment (expression_statement "iVar2 = (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();" (assignment_expression "iVar2 = (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))()" identifier = (call_expression "(*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))()" (parenthesized_expression "(*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))" ( (pointer_expression "*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4))" * (cast_expression "(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4))" ( (binary_expression "&_gp + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)" (pointer_expression "&_gp" & identifier) + (pointer_expression "*(int *)(puVar1 + uVar3 * 4 + -0x2fa4)" * (cast_expression "(int *)(puVar1 + uVar3 * 4 + -0x2fa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + uVar3 * 4 + -0x2fa4)" ( (binary_expression "puVar1 + uVar3 * 4 + -0x2fa4" (binary_expression "puVar1 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar2;" return identifier ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "uint FUN_00063774(undefined4 param_1,byte *param_2,char *param_3,undefined4 param_4)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  \n  puVar1 = PTR_DAT_000f52d4;\n  iVar2 = FUN_00062ed8(param_1,param_2,param_3,param_4);\n  if (iVar2 == 0) {\n    return (uint)(*param_3 != 'w');\n  }\n  uVar3 = *param_2 - 0x13 & 0xff;\n  if (uVar3 < 0xa0) {\n                    \n                    \n    uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return uVar3;\n  }\n  return 0;\n}\n\n" (function_definition "uint FUN_00063774(undefined4 param_1,byte *param_2,char *param_3,undefined4 param_4)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  \n  puVar1 = PTR_DAT_000f52d4;\n  iVar2 = FUN_00062ed8(param_1,param_2,param_3,param_4);\n  if (iVar2 == 0) {\n    return (uint)(*param_3 != 'w');\n  }\n  uVar3 = *param_2 - 0x13 & 0xff;\n  if (uVar3 < 0xa0) {\n                    \n                    \n    uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return uVar3;\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00063774(undefined4 param_1,byte *param_2,char *param_3,undefined4 param_4)" identifier (parameter_list "(undefined4 param_1,byte *param_2,char *param_3,undefined4 param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  \n  puVar1 = PTR_DAT_000f52d4;\n  iVar2 = FUN_00062ed8(param_1,param_2,param_3,param_4);\n  if (iVar2 == 0) {\n    return (uint)(*param_3 != 'w');\n  }\n  uVar3 = *param_2 - 0x13 & 0xff;\n  if (uVar3 < 0xa0) {\n                    \n                    \n    uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return uVar3;\n  }\n  return 0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_DAT_000f52d4;" (assignment_expression "puVar1 = PTR_DAT_000f52d4" identifier = identifier) ;) (expression_statement "iVar2 = FUN_00062ed8(param_1,param_2,param_3,param_4);" (assignment_expression "iVar2 = FUN_00062ed8(param_1,param_2,param_3,param_4)" identifier = (call_expression "FUN_00062ed8(param_1,param_2,param_3,param_4)" identifier (argument_list "(param_1,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n    return (uint)(*param_3 != 'w');\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    return (uint)(*param_3 != 'w');\n  }" { (return_statement "return (uint)(*param_3 != 'w');" return (call_expression "(uint)(*param_3 != 'w')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*param_3 != 'w')" ( (binary_expression "*param_3 != 'w'" (pointer_expression "*param_3" * identifier) != (char_literal "'w'" ' character ')) ))) ;) })) (expression_statement "uVar3 = *param_2 - 0x13 & 0xff;" (assignment_expression "uVar3 = *param_2 - 0x13 & 0xff" identifier = (binary_expression "*param_2 - 0x13 & 0xff" (binary_expression "*param_2 - 0x13" (pointer_expression "*param_2" * identifier) - number_literal) & number_literal)) ;) (if_statement "if (uVar3 < 0xa0) {\n                    \n                    \n    uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return uVar3;\n  }" if (parenthesized_expression "(uVar3 < 0xa0)" ( (binary_expression "uVar3 < 0xa0" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n    uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return uVar3;\n  }" { (expression_statement "uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();" (assignment_expression "uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4))" * (cast_expression "(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4))" ( (binary_expression "&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(puVar1 + uVar3 * 4 + -0x2fa4)" * (cast_expression "(int *)(puVar1 + uVar3 * 4 + -0x2fa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + uVar3 * 4 + -0x2fa4)" ( (binary_expression "puVar1 + uVar3 * 4 + -0x2fa4" (binary_expression "puVar1 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar3;" return identifier ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * IDENT) - LIT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (return_statement return LIT ;) })))
(function_definition "uint FUN_00063774(undefined4 param_1,byte *param_2,char *param_3,undefined4 param_4)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  \n  puVar1 = PTR_DAT_000f52d4;\n  iVar2 = FUN_00062ed8(param_1,param_2,param_3,param_4);\n  if (iVar2 == 0) {\n    return (uint)(*param_3 != 'w');\n  }\n  uVar3 = *param_2 - 0x13 & 0xff;\n  if (uVar3 < 0xa0) {\n                    \n                    \n    uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return uVar3;\n  }\n  return 0;\n}" (type_identifier "uint") (function_declarator "FUN_00063774(undefined4 param_1,byte *param_2,char *param_3,undefined4 param_4)" (identifier "FUN_00063774") (parameter_list "(undefined4 param_1,byte *param_2,char *param_3,undefined4 param_4)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "char *param_3" (primitive_type "char") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  \n  puVar1 = PTR_DAT_000f52d4;\n  iVar2 = FUN_00062ed8(param_1,param_2,param_3,param_4);\n  if (iVar2 == 0) {\n    return (uint)(*param_3 != 'w');\n  }\n  uVar3 = *param_2 - 0x13 & 0xff;\n  if (uVar3 < 0xa0) {\n                    \n                    \n    uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return uVar3;\n  }\n  return 0;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (expression_statement "puVar1 = PTR_DAT_000f52d4;" (assignment_expression "puVar1 = PTR_DAT_000f52d4" (identifier "puVar1") (= "=") (identifier "PTR_DAT_000f52d4")) (; ";")) (expression_statement "iVar2 = FUN_00062ed8(param_1,param_2,param_3,param_4);" (assignment_expression "iVar2 = FUN_00062ed8(param_1,param_2,param_3,param_4)" (identifier "iVar2") (= "=") (call_expression "FUN_00062ed8(param_1,param_2,param_3,param_4)" (identifier "FUN_00062ed8") (argument_list "(param_1,param_2,param_3,param_4)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n    return (uint)(*param_3 != 'w');\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return (uint)(*param_3 != 'w');\n  }" ({ "{") (return_statement "return (uint)(*param_3 != 'w');" (return "return") (call_expression "(uint)(*param_3 != 'w')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*param_3 != 'w')" (( "(") (binary_expression "*param_3 != 'w'" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (!= "!=") (char_literal "'w'" (' "'") (character "w") (' "'"))) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar3 = *param_2 - 0x13 & 0xff;" (assignment_expression "uVar3 = *param_2 - 0x13 & 0xff" (identifier "uVar3") (= "=") (binary_expression "*param_2 - 0x13 & 0xff" (binary_expression "*param_2 - 0x13" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (- "-") (number_literal "0x13")) (& "&") (number_literal "0xff"))) (; ";")) (if_statement "if (uVar3 < 0xa0) {\n                    \n                    \n    uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return uVar3;\n  }" (if "if") (parenthesized_expression "(uVar3 < 0xa0)" (( "(") (binary_expression "uVar3 < 0xa0" (identifier "uVar3") (< "<") (number_literal "0xa0")) () ")")) (compound_statement "{\n                    \n                    \n    uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();\n    return uVar3;\n  }" ({ "{") (expression_statement "uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();" (assignment_expression "uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))()" (identifier "uVar3") (= "=") (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))" (( "(") (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4))" (* "*") (cast_expression "(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4))" (( "(") (binary_expression "&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)" (pointer_expression "&_gp_1" (& "&") (identifier "_gp_1")) (+ "+") (pointer_expression "*(int *)(puVar1 + uVar3 * 4 + -0x2fa4)" (* "*") (cast_expression "(int *)(puVar1 + uVar3 * 4 + -0x2fa4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + uVar3 * 4 + -0x2fa4)" (( "(") (binary_expression "puVar1 + uVar3 * 4 + -0x2fa4" (binary_expression "puVar1 + uVar3 * 4" (identifier "puVar1") (+ "+") (binary_expression "uVar3 * 4" (identifier "uVar3") (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x2fa4")) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

int function_1(type_1 *pParse,type_2 *p,type_2 *pNN,int iTab,int seenNot)

{
  type_3 *var_4;
  int var_2;
  type_4 var_3;
  
  var_4 = PTR_yy_shift_ofst_376__000f52d4;
  var_2 = var_1(pParse,p,pNN,iTab);
  if (var_2 == 0) {
    return (type_4)(pNN->op != 'w');
  }
  var_3 = p->op - 0x13 & 0xff;
  if (var_3 < 0xa0) {
                    /* WARNING: Could not emulate address calculation at 0x00063818 */
                    /* WARNING: Treating indirect jump as call */
    var_2 = (*(type_5 *)(&_gp + *(int *)(var_4 + var_3 * 4 + -0x2fa4)))();
    return var_2;
  }
  return 0;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) 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)))))))))) arguments: (argument_list)))) (return_statement (identifier)))) (return_statement (number_literal)))))

uint MASKED(undefined4 param_1,byte *param_2,char *param_3,undefined4 param_4)

{
  undefined *puVar1;
  int iVar2;
  uint uVar3;
  
  puVar1 = PTR_DAT_000f52d4;
  iVar2 = FUN_00062ed8(param_1,param_2,param_3,param_4);
  if (iVar2 == 0) {
    return (uint)(*param_3 != 'w');
  }
  uVar3 = *param_2 - 0x13 & 0xff;
  if (uVar3 < 0xa0) {
                    /* WARNING: Could not emulate address calculation at 0x00063818 */
                    /* WARNING: Treating indirect jump as call */
    uVar3 = (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + -0x2fa4)))();
    return uVar3;
  }
  return 0;
}

