
int __regparm3 sqlite3Init(sqlite3 *db,char **pzErrMsg)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int in_stack_ffffffd8;
  char **in_stack_ffffffdc;
  u32 in_stack_ffffffe0;
  
  uVar1 = db->mDbFlags;
  db->enc = db->aDb->pSchema->enc;
  if (((db->aDb->pSchema->schemaFlags & 1) == 0) &&
     (iVar3 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,in_stack_ffffffe0),
     iVar3 != 0)) {
    return iVar3;
  }
  iVar3 = db->nDb + -1;
  if (0 < iVar3) {
    do {
      if ((((db->aDb[iVar3].pSchema)->schemaFlags & 1) == 0) &&
         (iVar2 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,
                                 in_stack_ffffffe0), iVar2 != 0)) {
        return iVar2;
      }
      iVar3 = iVar3 + -1;
    } while (iVar3 != 0);
  }
  if ((uVar1 & 1) != 0) {
    return 0;
  }
  db->mDbFlags = db->mDbFlags & 0xfffffffe;
  return 0;
}



int __regparm3 FUN_000ea720(int param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  
  uVar1 = *(uint *)(param_1 + 0x18);
  *(undefined1 *)(param_1 + 0x4a) = *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)
  ;
  if (((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&
     (iVar3 = FUN_000e9e50(0), iVar3 != 0)) {
    return iVar3;
  }
  iVar3 = *(int *)(param_1 + 0x14) + -1;
  if (0 < iVar3) {
    do {
      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&
         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {
        return iVar2;
      }
      iVar3 = iVar3 + -1;
    } while (iVar3 != 0);
  }
  if ((uVar1 & 1) != 0) {
    return 0;
  }
  *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe;
  return 0;
}


PUSH EBP
PUSH EDI
MOV EDI,EDX
PUSH ESI
MOV ESI,EAX
PUSH EBX
SUB ESP,0xc
MOV EBP,dword ptr [EAX + 0x18]
MOV EAX,dword ptr [EAX + 0x10]
MOV EDX,dword ptr [EAX + 0xc]
MOVZX EDX,byte ptr [EDX + 0x4d]
MOV byte ptr [ESI + 0x4a],DL
MOV EAX,dword ptr [EAX + 0xc]
TEST byte ptr [EAX + 0x4e],0x1
JZ 0x000ea7a0
MOV EAX,dword ptr [ESI + 0x14]
LEA EBX,[EAX + -0x1]
TEST EBX,EBX
JG 0x000ea755
JMP 0x000ea788
SUB EBX,0x1
JZ 0x000ea788
MOV EAX,EBX
SHL EAX,0x4
ADD EAX,dword ptr [ESI + 0x10]
MOV EAX,dword ptr [EAX + 0xc]
TEST byte ptr [EAX + 0x4e],0x1
JNZ 0x000ea750
SUB ESP,0xc
MOV ECX,EDI
MOV EDX,EBX
MOV EAX,ESI
PUSH 0x0
CALL 0x000e9e50
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000ea750
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
XOR EAX,EAX
AND EBP,0x1
JNZ 0x000ea77d
AND dword ptr [ESI + 0x18],0xfffffffe
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
MOV ECX,EDI
XOR EDX,EDX
MOV EAX,ESI
PUSH 0x0
CALL 0x000e9e50
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000ea744
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "int __regparm3 FUN_000ea720(int param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  \n  uVar1 = *(uint *)(param_1 + 0x18);\n  *(undefined1 *)(param_1 + 0x4a) = *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)\n  ;\n  if (((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0)) {\n    return iVar3;\n  }\n  iVar3 = *(int *)(param_1 + 0x14) + -1;\n  if (0 < iVar3) {\n    do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }\n  if ((uVar1 & 1) != 0) {\n    return 0;\n  }\n  *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe;\n  return 0;\n}\n\n" (function_definition "int __regparm3 FUN_000ea720(int param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  \n  uVar1 = *(uint *)(param_1 + 0x18);\n  *(undefined1 *)(param_1 + 0x4a) = *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)\n  ;\n  if (((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0)) {\n    return iVar3;\n  }\n  iVar3 = *(int *)(param_1 + 0x14) + -1;\n  if (0 < iVar3) {\n    do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }\n  if ((uVar1 & 1) != 0) {\n    return 0;\n  }\n  *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe;\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000ea720(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  \n  uVar1 = *(uint *)(param_1 + 0x18);\n  *(undefined1 *)(param_1 + 0x4a) = *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)\n  ;\n  if (((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0)) {\n    return iVar3;\n  }\n  iVar3 = *(int *)(param_1 + 0x14) + -1;\n  if (0 < iVar3) {\n    do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }\n  if ((uVar1 & 1) != 0) {\n    return 0;\n  }\n  *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe;\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "uVar1 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x4a) = *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)\n  ;" (assignment_expression "*(undefined1 *)(param_1 + 0x4a) = *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)" (pointer_expression "*(undefined1 *)(param_1 + 0x4a)" * (cast_expression "(undefined1 *)(param_1 + 0x4a)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4a)" ( (binary_expression "param_1 + 0x4a" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)" * (cast_expression "(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d" (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 0xc)" * (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x10) + 0xc)" ( (binary_expression "*(int *)(param_1 + 0x10) + 0xc" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0)) {\n    return iVar3;\n  }" if (parenthesized_expression "(((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0))" ( (binary_expression "((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0)" (parenthesized_expression "((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0)" ( (binary_expression "(*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0" (parenthesized_expression "(*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1)" ( (binary_expression "*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1" (pointer_expression "*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e)" * (cast_expression "(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e" (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 0xc)" * (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x10) + 0xc)" ( (binary_expression "*(int *)(param_1 + 0x10) + 0xc" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) )))) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar3 = FUN_000e9e50(0), iVar3 != 0)" ( (comma_expression "iVar3 = FUN_000e9e50(0), iVar3 != 0" (assignment_expression "iVar3 = FUN_000e9e50(0)" identifier = (call_expression "FUN_000e9e50(0)" identifier (argument_list "(0)" ( number_literal )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    return iVar3;\n  }" { (return_statement "return iVar3;" return identifier ;) })) (expression_statement "iVar3 = *(int *)(param_1 + 0x14) + -1;" (assignment_expression "iVar3 = *(int *)(param_1 + 0x14) + -1" identifier = (binary_expression "*(int *)(param_1 + 0x14) + -1" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (0 < iVar3) {\n    do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }" if (parenthesized_expression "(0 < iVar3)" ( (binary_expression "0 < iVar3" number_literal < identifier) )) (compound_statement "{\n    do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }" { (do_statement "do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);" do (compound_statement "{\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    }" { (if_statement "if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }" if (parenthesized_expression "(((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0))" ( (binary_expression "((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)" (parenthesized_expression "((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0)" ( (binary_expression "(*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1)" ( (binary_expression "*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1" (pointer_expression "*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e)" * (cast_expression "(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e)" ( (binary_expression "*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e" (pointer_expression "*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" * (cast_expression "(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" ( (binary_expression "iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc" (binary_expression "iVar3 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar3 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) + number_literal) )))) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar2 = FUN_000e9e50(0), iVar2 != 0)" ( (comma_expression "iVar2 = FUN_000e9e50(0), iVar2 != 0" (assignment_expression "iVar2 = FUN_000e9e50(0)" identifier = (call_expression "FUN_000e9e50(0)" identifier (argument_list "(0)" ( number_literal )))) , (binary_expression "iVar2 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        return iVar2;\n      }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) ;) })) (if_statement "if ((uVar1 & 1) != 0) {\n    return 0;\n  }" if (parenthesized_expression "((uVar1 & 1) != 0)" ( (binary_expression "(uVar1 & 1) != 0" (parenthesized_expression "(uVar1 & 1)" ( (binary_expression "uVar1 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe;" (assignment_expression "*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 0x18) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) & number_literal)) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int __regparm3 sqlite3Init(sqlite3 *db,char **pzErrMsg)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  int in_stack_ffffffd8;\n  char **in_stack_ffffffdc;\n  u32 in_stack_ffffffe0;\n  \n  uVar1 = db->mDbFlags;\n  db->enc = db->aDb->pSchema->enc;\n  if (((db->aDb->pSchema->schemaFlags & 1) == 0) &&\n     (iVar3 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,in_stack_ffffffe0),\n     iVar3 != 0)) {\n    return iVar3;\n  }\n  iVar3 = db->nDb + -1;\n  if (0 < iVar3) {\n    do {\n      if ((((db->aDb[iVar3].pSchema)->schemaFlags & 1) == 0) &&\n         (iVar2 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,\n                                 in_stack_ffffffe0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }\n  if ((uVar1 & 1) != 0) {\n    return 0;\n  }\n  db->mDbFlags = db->mDbFlags & 0xfffffffe;\n  return 0;\n}\n\n" (function_definition "int __regparm3 sqlite3Init(sqlite3 *db,char **pzErrMsg)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  int in_stack_ffffffd8;\n  char **in_stack_ffffffdc;\n  u32 in_stack_ffffffe0;\n  \n  uVar1 = db->mDbFlags;\n  db->enc = db->aDb->pSchema->enc;\n  if (((db->aDb->pSchema->schemaFlags & 1) == 0) &&\n     (iVar3 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,in_stack_ffffffe0),\n     iVar3 != 0)) {\n    return iVar3;\n  }\n  iVar3 = db->nDb + -1;\n  if (0 < iVar3) {\n    do {\n      if ((((db->aDb[iVar3].pSchema)->schemaFlags & 1) == 0) &&\n         (iVar2 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,\n                                 in_stack_ffffffe0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }\n  if ((uVar1 & 1) != 0) {\n    return 0;\n  }\n  db->mDbFlags = db->mDbFlags & 0xfffffffe;\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "sqlite3Init(sqlite3 *db,char **pzErrMsg)" identifier (parameter_list "(sqlite3 *db,char **pzErrMsg)" ( (parameter_declaration "sqlite3 *db" type_identifier (pointer_declarator "*db" * identifier)) , (parameter_declaration "char **pzErrMsg" primitive_type (pointer_declarator "**pzErrMsg" * (pointer_declarator "*pzErrMsg" * identifier))) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  int in_stack_ffffffd8;\n  char **in_stack_ffffffdc;\n  u32 in_stack_ffffffe0;\n  \n  uVar1 = db->mDbFlags;\n  db->enc = db->aDb->pSchema->enc;\n  if (((db->aDb->pSchema->schemaFlags & 1) == 0) &&\n     (iVar3 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,in_stack_ffffffe0),\n     iVar3 != 0)) {\n    return iVar3;\n  }\n  iVar3 = db->nDb + -1;\n  if (0 < iVar3) {\n    do {\n      if ((((db->aDb[iVar3].pSchema)->schemaFlags & 1) == 0) &&\n         (iVar2 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,\n                                 in_stack_ffffffe0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }\n  if ((uVar1 & 1) != 0) {\n    return 0;\n  }\n  db->mDbFlags = db->mDbFlags & 0xfffffffe;\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int in_stack_ffffffd8;" primitive_type identifier ;) (declaration "char **in_stack_ffffffdc;" primitive_type (pointer_declarator "**in_stack_ffffffdc" * (pointer_declarator "*in_stack_ffffffdc" * identifier)) ;) (declaration "u32 in_stack_ffffffe0;" type_identifier identifier ;) (expression_statement "uVar1 = db->mDbFlags;" (assignment_expression "uVar1 = db->mDbFlags" identifier = (field_expression "db->mDbFlags" identifier -> field_identifier)) ;) (expression_statement "db->enc = db->aDb->pSchema->enc;" (assignment_expression "db->enc = db->aDb->pSchema->enc" (field_expression "db->enc" identifier -> field_identifier) = (field_expression "db->aDb->pSchema->enc" (field_expression "db->aDb->pSchema" (field_expression "db->aDb" identifier -> field_identifier) -> field_identifier) -> field_identifier)) ;) (if_statement "if (((db->aDb->pSchema->schemaFlags & 1) == 0) &&\n     (iVar3 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,in_stack_ffffffe0),\n     iVar3 != 0)) {\n    return iVar3;\n  }" if (parenthesized_expression "(((db->aDb->pSchema->schemaFlags & 1) == 0) &&\n     (iVar3 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,in_stack_ffffffe0),\n     iVar3 != 0))" ( (binary_expression "((db->aDb->pSchema->schemaFlags & 1) == 0) &&\n     (iVar3 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,in_stack_ffffffe0),\n     iVar3 != 0)" (parenthesized_expression "((db->aDb->pSchema->schemaFlags & 1) == 0)" ( (binary_expression "(db->aDb->pSchema->schemaFlags & 1) == 0" (parenthesized_expression "(db->aDb->pSchema->schemaFlags & 1)" ( (binary_expression "db->aDb->pSchema->schemaFlags & 1" (field_expression "db->aDb->pSchema->schemaFlags" (field_expression "db->aDb->pSchema" (field_expression "db->aDb" identifier -> field_identifier) -> field_identifier) -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar3 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,in_stack_ffffffe0),\n     iVar3 != 0)" ( (comma_expression "iVar3 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,in_stack_ffffffe0),\n     iVar3 != 0" (assignment_expression "iVar3 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,in_stack_ffffffe0)" identifier = (call_expression "sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,in_stack_ffffffe0)" identifier (argument_list "((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,in_stack_ffffffe0)" ( (cast_expression "(sqlite3 *)0x0" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , identifier , identifier )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    return iVar3;\n  }" { (return_statement "return iVar3;" return identifier ;) })) (expression_statement "iVar3 = db->nDb + -1;" (assignment_expression "iVar3 = db->nDb + -1" identifier = (binary_expression "db->nDb + -1" (field_expression "db->nDb" identifier -> field_identifier) + number_literal)) ;) (if_statement "if (0 < iVar3) {\n    do {\n      if ((((db->aDb[iVar3].pSchema)->schemaFlags & 1) == 0) &&\n         (iVar2 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,\n                                 in_stack_ffffffe0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }" if (parenthesized_expression "(0 < iVar3)" ( (binary_expression "0 < iVar3" number_literal < identifier) )) (compound_statement "{\n    do {\n      if ((((db->aDb[iVar3].pSchema)->schemaFlags & 1) == 0) &&\n         (iVar2 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,\n                                 in_stack_ffffffe0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }" { (do_statement "do {\n      if ((((db->aDb[iVar3].pSchema)->schemaFlags & 1) == 0) &&\n         (iVar2 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,\n                                 in_stack_ffffffe0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);" do (compound_statement "{\n      if ((((db->aDb[iVar3].pSchema)->schemaFlags & 1) == 0) &&\n         (iVar2 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,\n                                 in_stack_ffffffe0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    }" { (if_statement "if ((((db->aDb[iVar3].pSchema)->schemaFlags & 1) == 0) &&\n         (iVar2 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,\n                                 in_stack_ffffffe0), iVar2 != 0)) {\n        return iVar2;\n      }" if (parenthesized_expression "((((db->aDb[iVar3].pSchema)->schemaFlags & 1) == 0) &&\n         (iVar2 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,\n                                 in_stack_ffffffe0), iVar2 != 0))" ( (binary_expression "(((db->aDb[iVar3].pSchema)->schemaFlags & 1) == 0) &&\n         (iVar2 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,\n                                 in_stack_ffffffe0), iVar2 != 0)" (parenthesized_expression "(((db->aDb[iVar3].pSchema)->schemaFlags & 1) == 0)" ( (binary_expression "((db->aDb[iVar3].pSchema)->schemaFlags & 1) == 0" (parenthesized_expression "((db->aDb[iVar3].pSchema)->schemaFlags & 1)" ( (binary_expression "(db->aDb[iVar3].pSchema)->schemaFlags & 1" (field_expression "(db->aDb[iVar3].pSchema)->schemaFlags" (parenthesized_expression "(db->aDb[iVar3].pSchema)" ( (field_expression "db->aDb[iVar3].pSchema" (subscript_expression "db->aDb[iVar3]" (field_expression "db->aDb" identifier -> field_identifier) [ identifier ]) . field_identifier) )) -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar2 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,\n                                 in_stack_ffffffe0), iVar2 != 0)" ( (comma_expression "iVar2 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,\n                                 in_stack_ffffffe0), iVar2 != 0" (assignment_expression "iVar2 = sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,\n                                 in_stack_ffffffe0)" identifier = (call_expression "sqlite3InitOne((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,\n                                 in_stack_ffffffe0)" identifier (argument_list "((sqlite3 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,\n                                 in_stack_ffffffe0)" ( (cast_expression "(sqlite3 *)0x0" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , identifier , identifier )))) , (binary_expression "iVar2 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        return iVar2;\n      }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) ;) })) (if_statement "if ((uVar1 & 1) != 0) {\n    return 0;\n  }" if (parenthesized_expression "((uVar1 & 1) != 0)" ( (binary_expression "(uVar1 & 1) != 0" (parenthesized_expression "(uVar1 & 1)" ( (binary_expression "uVar1 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "db->mDbFlags = db->mDbFlags & 0xfffffffe;" (assignment_expression "db->mDbFlags = db->mDbFlags & 0xfffffffe" (field_expression "db->mDbFlags" identifier -> field_identifier) = (binary_expression "db->mDbFlags & 0xfffffffe" (field_expression "db->mDbFlags" identifier -> field_identifier) & number_literal)) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int __regparm3 FUN_000ea720(int param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  \n  uVar1 = *(uint *)(param_1 + 0x18);\n  *(undefined1 *)(param_1 + 0x4a) = *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)\n  ;\n  if (((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0)) {\n    return iVar3;\n  }\n  iVar3 = *(int *)(param_1 + 0x14) + -1;\n  if (0 < iVar3) {\n    do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }\n  if ((uVar1 & 1) != 0) {\n    return 0;\n  }\n  *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe;\n  return 0;\n}\n\n" (function_definition "int __regparm3 FUN_000ea720(int param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  \n  uVar1 = *(uint *)(param_1 + 0x18);\n  *(undefined1 *)(param_1 + 0x4a) = *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)\n  ;\n  if (((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0)) {\n    return iVar3;\n  }\n  iVar3 = *(int *)(param_1 + 0x14) + -1;\n  if (0 < iVar3) {\n    do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }\n  if ((uVar1 & 1) != 0) {\n    return 0;\n  }\n  *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe;\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000ea720(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  \n  uVar1 = *(uint *)(param_1 + 0x18);\n  *(undefined1 *)(param_1 + 0x4a) = *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)\n  ;\n  if (((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0)) {\n    return iVar3;\n  }\n  iVar3 = *(int *)(param_1 + 0x14) + -1;\n  if (0 < iVar3) {\n    do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }\n  if ((uVar1 & 1) != 0) {\n    return 0;\n  }\n  *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe;\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "uVar1 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x4a) = *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)\n  ;" (assignment_expression "*(undefined1 *)(param_1 + 0x4a) = *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)" (pointer_expression "*(undefined1 *)(param_1 + 0x4a)" * (cast_expression "(undefined1 *)(param_1 + 0x4a)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4a)" ( (binary_expression "param_1 + 0x4a" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)" * (cast_expression "(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d" (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 0xc)" * (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x10) + 0xc)" ( (binary_expression "*(int *)(param_1 + 0x10) + 0xc" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0)) {\n    return iVar3;\n  }" if (parenthesized_expression "(((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0))" ( (binary_expression "((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0)" (parenthesized_expression "((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0)" ( (binary_expression "(*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0" (parenthesized_expression "(*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1)" ( (binary_expression "*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1" (pointer_expression "*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e)" * (cast_expression "(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e" (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 0xc)" * (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x10) + 0xc)" ( (binary_expression "*(int *)(param_1 + 0x10) + 0xc" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) )))) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar3 = FUN_000e9e50(0), iVar3 != 0)" ( (comma_expression "iVar3 = FUN_000e9e50(0), iVar3 != 0" (assignment_expression "iVar3 = FUN_000e9e50(0)" identifier = (call_expression "FUN_000e9e50(0)" identifier (argument_list "(0)" ( number_literal )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    return iVar3;\n  }" { (return_statement "return iVar3;" return identifier ;) })) (expression_statement "iVar3 = *(int *)(param_1 + 0x14) + -1;" (assignment_expression "iVar3 = *(int *)(param_1 + 0x14) + -1" identifier = (binary_expression "*(int *)(param_1 + 0x14) + -1" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (0 < iVar3) {\n    do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }" if (parenthesized_expression "(0 < iVar3)" ( (binary_expression "0 < iVar3" number_literal < identifier) )) (compound_statement "{\n    do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }" { (do_statement "do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);" do (compound_statement "{\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    }" { (if_statement "if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }" if (parenthesized_expression "(((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0))" ( (binary_expression "((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)" (parenthesized_expression "((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0)" ( (binary_expression "(*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1)" ( (binary_expression "*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1" (pointer_expression "*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e)" * (cast_expression "(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e)" ( (binary_expression "*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e" (pointer_expression "*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" * (cast_expression "(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" ( (binary_expression "iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc" (binary_expression "iVar3 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar3 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) + number_literal) )))) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar2 = FUN_000e9e50(0), iVar2 != 0)" ( (comma_expression "iVar2 = FUN_000e9e50(0), iVar2 != 0" (assignment_expression "iVar2 = FUN_000e9e50(0)" identifier = (call_expression "FUN_000e9e50(0)" identifier (argument_list "(0)" ( number_literal )))) , (binary_expression "iVar2 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        return iVar2;\n      }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) ;) })) (if_statement "if ((uVar1 & 1) != 0) {\n    return 0;\n  }" if (parenthesized_expression "((uVar1 & 1) != 0)" ( (binary_expression "(uVar1 & 1) != 0" (parenthesized_expression "(uVar1 & 1)" ( (binary_expression "uVar1 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe;" (assignment_expression "*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 0x18) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) & number_literal)) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) )))) & LIT) )) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) )))) + LIT) )))) & LIT) )) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (return_statement return LIT ;) })))
(function_definition "int __regparm3 FUN_000ea720(int param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  \n  uVar1 = *(uint *)(param_1 + 0x18);\n  *(undefined1 *)(param_1 + 0x4a) = *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)\n  ;\n  if (((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0)) {\n    return iVar3;\n  }\n  iVar3 = *(int *)(param_1 + 0x14) + -1;\n  if (0 < iVar3) {\n    do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }\n  if ((uVar1 & 1) != 0) {\n    return 0;\n  }\n  *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe;\n  return 0;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000ea720(int param_1)" (identifier "FUN_000ea720") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  \n  uVar1 = *(uint *)(param_1 + 0x18);\n  *(undefined1 *)(param_1 + 0x4a) = *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)\n  ;\n  if (((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0)) {\n    return iVar3;\n  }\n  iVar3 = *(int *)(param_1 + 0x14) + -1;\n  if (0 < iVar3) {\n    do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }\n  if ((uVar1 & 1) != 0) {\n    return 0;\n  }\n  *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe;\n  return 0;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (expression_statement "uVar1 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x18)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(param_1 + 0x18)" (* "*") (cast_expression "(uint *)(param_1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x4a) = *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)\n  ;" (assignment_expression "*(undefined1 *)(param_1 + 0x4a) = *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)" (pointer_expression "*(undefined1 *)(param_1 + 0x4a)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x4a)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4a)" (( "(") (binary_expression "param_1 + 0x4a" (identifier "param_1") (+ "+") (number_literal "0x4a")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)" (* "*") (cast_expression "(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d" (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 0xc)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x10) + 0xc)" (( "(") (binary_expression "*(int *)(param_1 + 0x10) + 0xc" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "0x4d")) () ")"))))) (; ";")) (if_statement "if (((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0)) {\n    return iVar3;\n  }" (if "if") (parenthesized_expression "(((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0))" (( "(") (binary_expression "((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n     (iVar3 = FUN_000e9e50(0), iVar3 != 0)" (parenthesized_expression "((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0" (parenthesized_expression "(*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1)" (( "(") (binary_expression "*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1" (pointer_expression "*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e)" (* "*") (cast_expression "(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e)" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e" (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 0xc)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x10) + 0xc)" (( "(") (binary_expression "*(int *)(param_1 + 0x10) + 0xc" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "0x4e")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar3 = FUN_000e9e50(0), iVar3 != 0)" (( "(") (comma_expression "iVar3 = FUN_000e9e50(0), iVar3 != 0" (assignment_expression "iVar3 = FUN_000e9e50(0)" (identifier "iVar3") (= "=") (call_expression "FUN_000e9e50(0)" (identifier "FUN_000e9e50") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (, ",") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    return iVar3;\n  }" ({ "{") (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}"))) (expression_statement "iVar3 = *(int *)(param_1 + 0x14) + -1;" (assignment_expression "iVar3 = *(int *)(param_1 + 0x14) + -1" (identifier "iVar3") (= "=") (binary_expression "*(int *)(param_1 + 0x14) + -1" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (0 < iVar3) {\n    do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }" (if "if") (parenthesized_expression "(0 < iVar3)" (( "(") (binary_expression "0 < iVar3" (number_literal "0") (< "<") (identifier "iVar3")) () ")")) (compound_statement "{\n    do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);\n  }" ({ "{") (do_statement "do {\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    } while (iVar3 != 0);" (do "do") (compound_statement "{\n      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }\n      iVar3 = iVar3 + -1;\n    }" ({ "{") (if_statement "if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {\n        return iVar2;\n      }" (if "if") (parenthesized_expression "(((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0))" (( "(") (binary_expression "((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&\n         (iVar2 = FUN_000e9e50(0), iVar2 != 0)" (parenthesized_expression "((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1)" (( "(") (binary_expression "*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1" (pointer_expression "*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e)" (* "*") (cast_expression "(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e)" (( "(") (binary_expression "*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e" (pointer_expression "*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" (* "*") (cast_expression "(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" (( "(") (binary_expression "iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc" (binary_expression "iVar3 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar3 * 0x10" (identifier "iVar3") (* "*") (number_literal "0x10")) (+ "+") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "0x4e")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar2 = FUN_000e9e50(0), iVar2 != 0)" (( "(") (comma_expression "iVar2 = FUN_000e9e50(0), iVar2 != 0" (assignment_expression "iVar2 = FUN_000e9e50(0)" (identifier "iVar2") (= "=") (call_expression "FUN_000e9e50(0)" (identifier "FUN_000e9e50") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (, ",") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        return iVar2;\n      }" ({ "{") (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (if_statement "if ((uVar1 & 1) != 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "((uVar1 & 1) != 0)" (( "(") (binary_expression "(uVar1 & 1) != 0" (parenthesized_expression "(uVar1 & 1)" (( "(") (binary_expression "uVar1 & 1" (identifier "uVar1") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe;" (assignment_expression "*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 0x18)" (* "*") (cast_expression "(uint *)(param_1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 0x18) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 0x18)" (* "*") (cast_expression "(uint *)(param_1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (& "&") (number_literal "0xfffffffe"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

int __regparm3 function_1(type_1 *db,char **pzErrMsg)

{
  type_2 var_4;
  int var_3;
  int var_2;
  int in_stack_ffffffd8;
  char **in_stack_ffffffdc;
  type_3 in_stack_ffffffe0;
  
  var_4 = db->mDbFlags;
  db->enc = db->aDb->pSchema->enc;
  if (((db->aDb->pSchema->schemaFlags & 1) == 0) &&
     (var_2 = var_1((type_1 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,in_stack_ffffffe0),
     var_2 != 0)) {
    return var_2;
  }
  var_2 = db->nDb + -1;
  if (0 < var_2) {
    do {
      if ((((db->aDb[var_2].pSchema)->schemaFlags & 1) == 0) &&
         (var_3 = var_1((type_1 *)0x0,in_stack_ffffffd8,in_stack_ffffffdc,
                                 in_stack_ffffffe0), var_3 != 0)) {
        return var_3;
      }
      var_2 = var_2 + -1;
    } while (var_2 != 0);
  }
  if ((var_4 & 1) != 0) {
    return 0;
  }
  db->mDbFlags = db->mDbFlags & 0xfffffffe;
  return 0;
}


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

int __regparm3 MASKED(int param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  
  uVar1 = *(uint *)(param_1 + 0x18);
  *(undefined1 *)(param_1 + 0x4a) = *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4d)
  ;
  if (((*(byte *)(*(int *)(*(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&
     (iVar3 = FUN_000e9e50(0), iVar3 != 0)) {
    return iVar3;
  }
  iVar3 = *(int *)(param_1 + 0x14) + -1;
  if (0 < iVar3) {
    do {
      if (((*(byte *)(*(int *)(iVar3 * 0x10 + *(int *)(param_1 + 0x10) + 0xc) + 0x4e) & 1) == 0) &&
         (iVar2 = FUN_000e9e50(0), iVar2 != 0)) {
        return iVar2;
      }
      iVar3 = iVar3 + -1;
    } while (iVar3 != 0);
  }
  if ((uVar1 & 1) != 0) {
    return 0;
  }
  *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe;
  return 0;
}

