
int sqlite3AuthCheck(Parse *pParse,int code,char *zArg1,char *zArg2,char *zArg3)

{
  sqlite3 *psVar1;
  Parse *pParse_00;
  uint uVar2;
  char *extraout_ECX;
  int unaff_EDI;
  undefined8 uVar3;
  
  uVar3 = __x86_get_pc_thunk_di();
  pParse_00 = (Parse *)uVar3;
  psVar1 = pParse_00->db;
  if ((psVar1->init).busy == '\0') {
    uVar2 = 0;
    if ((pParse_00->eParseMode == '\0') && (psVar1->xAuth != (sqlite3_xauth)0x0)) {
      uVar2 = (*psVar1->xAuth)(psVar1->pAuthArg,(int)((ulonglong)uVar3 >> 0x20),extraout_ECX,
                               (char *)pParse,(char *)code,pParse_00->zAuthContext);
      if (uVar2 == 1) {
        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dc9));
        pParse_00->rc = 0x17;
      }
      else if ((uVar2 & 0xfffffffd) != 0) {
        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dd8));
        pParse_00->rc = 1;
        uVar2 = 1;
      }
    }
    return uVar2;
  }
  return 0;
}



uint FUN_00088da0(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  undefined4 extraout_ECX;
  int unaff_EDI;
  undefined8 uVar4;
  
  uVar4 = FUN_0003a401();
  piVar2 = (int *)uVar4;
  iVar1 = *piVar2;
  if (*(char *)(iVar1 + 0xa1) == '\0') {
    uVar3 = 0;
    if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {
      uVar3 = (**(code **)(iVar1 + 0x13c))
                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX
                         ,param_1,param_2,piVar2[0x3b]);
      if (uVar3 == 1) {
        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);
        piVar2[3] = 0x17;
      }
      else if ((uVar3 & 0xfffffffd) != 0) {
        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);
        piVar2[3] = 1;
        uVar3 = 1;
      }
    }
    return uVar3;
  }
  return 0;
}


PUSH EBP
PUSH EDI
CALL 0x0003a401
ADD EDI,0x132081
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV ESI,dword ptr [EAX]
CMP byte ptr [ESI + 0xa1],0x0
JNZ 0x00088e10
MOV EBX,EAX
XOR EAX,EAX
CMP byte ptr [EBX + 0xc6],0x0
JNZ 0x00088dfe
MOV EBP,dword ptr [ESI + 0x13c]
TEST EBP,EBP
JZ 0x00088dfe
SUB ESP,0x8
PUSH dword ptr [EBX + 0xec]
PUSH dword ptr [ESP + 0x40]
PUSH dword ptr [ESP + 0x40]
PUSH ECX
PUSH EDX
PUSH dword ptr [ESI + 0x140]
CALL EBP
ADD ESP,0x20
CMP EAX,0x1
JZ 0x00088e48
TEST EAX,0xfffffffd
JNZ 0x00088e20
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD ESP,0x1c
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x8
LEA EAX,[EDI + 0xfffa1d57]
PUSH EAX
PUSH EBX
CALL 0x000886b0
MOV dword ptr [EBX + 0xc],0x1
ADD ESP,0x10
MOV EAX,0x1
JMP 0x00088dfe
MOV dword ptr [ESP + 0xc],EAX
LEA EDX,[EDI + 0xfffa1d48]
SUB ESP,0x8
PUSH EDX
PUSH EBX
CALL 0x000886b0
ADD ESP,0x10
MOV dword ptr [EBX + 0xc],0x17
MOV EAX,dword ptr [ESP + 0xc]
JMP 0x00088dfe
(translation_unit "uint FUN_00088da0(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  int *piVar2;\n  uint uVar3;\n  undefined4 extraout_ECX;\n  int unaff_EDI;\n  undefined8 uVar4;\n  \n  uVar4 = FUN_0003a401();\n  piVar2 = (int *)uVar4;\n  iVar1 = *piVar2;\n  if (*(char *)(iVar1 + 0xa1) == '\0') {\n    uVar3 = 0;\n    if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }\n    return uVar3;\n  }\n  return 0;\n}\n\n" (function_definition "uint FUN_00088da0(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  int *piVar2;\n  uint uVar3;\n  undefined4 extraout_ECX;\n  int unaff_EDI;\n  undefined8 uVar4;\n  \n  uVar4 = FUN_0003a401();\n  piVar2 = (int *)uVar4;\n  iVar1 = *piVar2;\n  if (*(char *)(iVar1 + 0xa1) == '\0') {\n    uVar3 = 0;\n    if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }\n    return uVar3;\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00088da0(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  uint uVar3;\n  undefined4 extraout_ECX;\n  int unaff_EDI;\n  undefined8 uVar4;\n  \n  uVar4 = FUN_0003a401();\n  piVar2 = (int *)uVar4;\n  iVar1 = *piVar2;\n  if (*(char *)(iVar1 + 0xa1) == '\0') {\n    uVar3 = 0;\n    if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }\n    return uVar3;\n  }\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (expression_statement "uVar4 = FUN_0003a401();" (assignment_expression "uVar4 = FUN_0003a401()" identifier = (call_expression "FUN_0003a401()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar2 = (int *)uVar4;" (assignment_expression "piVar2 = (int *)uVar4" identifier = (cast_expression "(int *)uVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar1 = *piVar2;" (assignment_expression "iVar1 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (if_statement "if (*(char *)(iVar1 + 0xa1) == '\0') {\n    uVar3 = 0;\n    if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }\n    return uVar3;\n  }" if (parenthesized_expression "(*(char *)(iVar1 + 0xa1) == '\0')" ( (binary_expression "*(char *)(iVar1 + 0xa1) == '\0'" (pointer_expression "*(char *)(iVar1 + 0xa1)" * (cast_expression "(char *)(iVar1 + 0xa1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xa1)" ( (binary_expression "iVar1 + 0xa1" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar3 = 0;\n    if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }\n    return uVar3;\n  }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }" if (parenthesized_expression "((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0))" ( (binary_expression "(*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)" (parenthesized_expression "(*(char *)((int)piVar2 + 0xc6) == '\0')" ( (binary_expression "*(char *)((int)piVar2 + 0xc6) == '\0'" (pointer_expression "*(char *)((int)piVar2 + 0xc6)" * (cast_expression "(char *)((int)piVar2 + 0xc6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar2 + 0xc6)" ( (binary_expression "(int)piVar2 + 0xc6" (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(code **)(iVar1 + 0x13c) != (code *)0x0)" ( (binary_expression "*(code **)(iVar1 + 0x13c) != (code *)0x0" (pointer_expression "*(code **)(iVar1 + 0x13c)" * (cast_expression "(code **)(iVar1 + 0x13c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x13c)" ( (binary_expression "iVar1 + 0x13c" identifier + number_literal) )))) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }" { (expression_statement "uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);" (assignment_expression "uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b])" identifier = (call_expression "(**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b])" (parenthesized_expression "(**(code **)(iVar1 + 0x13c))" ( (pointer_expression "**(code **)(iVar1 + 0x13c)" * (pointer_expression "*(code **)(iVar1 + 0x13c)" * (cast_expression "(code **)(iVar1 + 0x13c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x13c)" ( (binary_expression "iVar1 + 0x13c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b])" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x140)" * (cast_expression "(undefined4 *)(iVar1 + 0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x140)" ( (binary_expression "iVar1 + 0x140" identifier + number_literal) )))) , (cast_expression "(int)((ulonglong)uVar4 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar4 >> 0x20)" ( (binary_expression "(ulonglong)uVar4 >> 0x20" (cast_expression "(ulonglong)uVar4" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , identifier , identifier , identifier , (subscript_expression "piVar2[0x3b]" identifier [ number_literal ]) )))) ;) (if_statement "if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }" if (parenthesized_expression "(uVar3 == 1)" ( (binary_expression "uVar3 == 1" identifier == number_literal) )) (compound_statement "{\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }" { (expression_statement "FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);" (call_expression "FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9)" identifier (argument_list "(piVar2,unaff_EDI + 0xd3dc9)" ( identifier , (binary_expression "unaff_EDI + 0xd3dc9" identifier + number_literal) ))) ;) (expression_statement "piVar2[3] = 0x17;" (assignment_expression "piVar2[3] = 0x17" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }" else (if_statement "if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }" if (parenthesized_expression "((uVar3 & 0xfffffffd) != 0)" ( (binary_expression "(uVar3 & 0xfffffffd) != 0" (parenthesized_expression "(uVar3 & 0xfffffffd)" ( (binary_expression "uVar3 & 0xfffffffd" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }" { (expression_statement "FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);" (call_expression "FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8)" identifier (argument_list "(piVar2,unaff_EDI + 0xd3dd8)" ( identifier , (binary_expression "unaff_EDI + 0xd3dd8" identifier + number_literal) ))) ;) (expression_statement "piVar2[3] = 1;" (assignment_expression "piVar2[3] = 1" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) })))) })) (return_statement "return uVar3;" return identifier ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int sqlite3AuthCheck(Parse *pParse,int code,char *zArg1,char *zArg2,char *zArg3)\n\n{\n  sqlite3 *psVar1;\n  Parse *pParse_00;\n  uint uVar2;\n  char *extraout_ECX;\n  int unaff_EDI;\n  undefined8 uVar3;\n  \n  uVar3 = __x86_get_pc_thunk_di();\n  pParse_00 = (Parse *)uVar3;\n  psVar1 = pParse_00->db;\n  if ((psVar1->init).busy == '\0') {\n    uVar2 = 0;\n    if ((pParse_00->eParseMode == '\0') && (psVar1->xAuth != (sqlite3_xauth)0x0)) {\n      uVar2 = (*psVar1->xAuth)(psVar1->pAuthArg,(int)((ulonglong)uVar3 >> 0x20),extraout_ECX,\n                               (char *)pParse,(char *)code,pParse_00->zAuthContext);\n      if (uVar2 == 1) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dc9));\n        pParse_00->rc = 0x17;\n      }\n      else if ((uVar2 & 0xfffffffd) != 0) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dd8));\n        pParse_00->rc = 1;\n        uVar2 = 1;\n      }\n    }\n    return uVar2;\n  }\n  return 0;\n}\n\n" (function_definition "int sqlite3AuthCheck(Parse *pParse,int code,char *zArg1,char *zArg2,char *zArg3)\n\n{\n  sqlite3 *psVar1;\n  Parse *pParse_00;\n  uint uVar2;\n  char *extraout_ECX;\n  int unaff_EDI;\n  undefined8 uVar3;\n  \n  uVar3 = __x86_get_pc_thunk_di();\n  pParse_00 = (Parse *)uVar3;\n  psVar1 = pParse_00->db;\n  if ((psVar1->init).busy == '\0') {\n    uVar2 = 0;\n    if ((pParse_00->eParseMode == '\0') && (psVar1->xAuth != (sqlite3_xauth)0x0)) {\n      uVar2 = (*psVar1->xAuth)(psVar1->pAuthArg,(int)((ulonglong)uVar3 >> 0x20),extraout_ECX,\n                               (char *)pParse,(char *)code,pParse_00->zAuthContext);\n      if (uVar2 == 1) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dc9));\n        pParse_00->rc = 0x17;\n      }\n      else if ((uVar2 & 0xfffffffd) != 0) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dd8));\n        pParse_00->rc = 1;\n        uVar2 = 1;\n      }\n    }\n    return uVar2;\n  }\n  return 0;\n}" primitive_type (function_declarator "sqlite3AuthCheck(Parse *pParse,int code,char *zArg1,char *zArg2,char *zArg3)" identifier (parameter_list "(Parse *pParse,int code,char *zArg1,char *zArg2,char *zArg3)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "int code" primitive_type identifier) , (parameter_declaration "char *zArg1" primitive_type (pointer_declarator "*zArg1" * identifier)) , (parameter_declaration "char *zArg2" primitive_type (pointer_declarator "*zArg2" * identifier)) , (parameter_declaration "char *zArg3" primitive_type (pointer_declarator "*zArg3" * identifier)) ))) (compound_statement "{\n  sqlite3 *psVar1;\n  Parse *pParse_00;\n  uint uVar2;\n  char *extraout_ECX;\n  int unaff_EDI;\n  undefined8 uVar3;\n  \n  uVar3 = __x86_get_pc_thunk_di();\n  pParse_00 = (Parse *)uVar3;\n  psVar1 = pParse_00->db;\n  if ((psVar1->init).busy == '\0') {\n    uVar2 = 0;\n    if ((pParse_00->eParseMode == '\0') && (psVar1->xAuth != (sqlite3_xauth)0x0)) {\n      uVar2 = (*psVar1->xAuth)(psVar1->pAuthArg,(int)((ulonglong)uVar3 >> 0x20),extraout_ECX,\n                               (char *)pParse,(char *)code,pParse_00->zAuthContext);\n      if (uVar2 == 1) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dc9));\n        pParse_00->rc = 0x17;\n      }\n      else if ((uVar2 & 0xfffffffd) != 0) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dd8));\n        pParse_00->rc = 1;\n        uVar2 = 1;\n      }\n    }\n    return uVar2;\n  }\n  return 0;\n}" { (declaration "sqlite3 *psVar1;" type_identifier (pointer_declarator "*psVar1" * identifier) ;) (declaration "Parse *pParse_00;" type_identifier (pointer_declarator "*pParse_00" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (expression_statement "uVar3 = __x86_get_pc_thunk_di();" (assignment_expression "uVar3 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "pParse_00 = (Parse *)uVar3;" (assignment_expression "pParse_00 = (Parse *)uVar3" identifier = (cast_expression "(Parse *)uVar3" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "psVar1 = pParse_00->db;" (assignment_expression "psVar1 = pParse_00->db" identifier = (field_expression "pParse_00->db" identifier -> field_identifier)) ;) (if_statement "if ((psVar1->init).busy == '\0') {\n    uVar2 = 0;\n    if ((pParse_00->eParseMode == '\0') && (psVar1->xAuth != (sqlite3_xauth)0x0)) {\n      uVar2 = (*psVar1->xAuth)(psVar1->pAuthArg,(int)((ulonglong)uVar3 >> 0x20),extraout_ECX,\n                               (char *)pParse,(char *)code,pParse_00->zAuthContext);\n      if (uVar2 == 1) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dc9));\n        pParse_00->rc = 0x17;\n      }\n      else if ((uVar2 & 0xfffffffd) != 0) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dd8));\n        pParse_00->rc = 1;\n        uVar2 = 1;\n      }\n    }\n    return uVar2;\n  }" if (parenthesized_expression "((psVar1->init).busy == '\0')" ( (binary_expression "(psVar1->init).busy == '\0'" (field_expression "(psVar1->init).busy" (parenthesized_expression "(psVar1->init)" ( (field_expression "psVar1->init" identifier -> field_identifier) )) . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar2 = 0;\n    if ((pParse_00->eParseMode == '\0') && (psVar1->xAuth != (sqlite3_xauth)0x0)) {\n      uVar2 = (*psVar1->xAuth)(psVar1->pAuthArg,(int)((ulonglong)uVar3 >> 0x20),extraout_ECX,\n                               (char *)pParse,(char *)code,pParse_00->zAuthContext);\n      if (uVar2 == 1) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dc9));\n        pParse_00->rc = 0x17;\n      }\n      else if ((uVar2 & 0xfffffffd) != 0) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dd8));\n        pParse_00->rc = 1;\n        uVar2 = 1;\n      }\n    }\n    return uVar2;\n  }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if ((pParse_00->eParseMode == '\0') && (psVar1->xAuth != (sqlite3_xauth)0x0)) {\n      uVar2 = (*psVar1->xAuth)(psVar1->pAuthArg,(int)((ulonglong)uVar3 >> 0x20),extraout_ECX,\n                               (char *)pParse,(char *)code,pParse_00->zAuthContext);\n      if (uVar2 == 1) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dc9));\n        pParse_00->rc = 0x17;\n      }\n      else if ((uVar2 & 0xfffffffd) != 0) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dd8));\n        pParse_00->rc = 1;\n        uVar2 = 1;\n      }\n    }" if (parenthesized_expression "((pParse_00->eParseMode == '\0') && (psVar1->xAuth != (sqlite3_xauth)0x0))" ( (binary_expression "(pParse_00->eParseMode == '\0') && (psVar1->xAuth != (sqlite3_xauth)0x0)" (parenthesized_expression "(pParse_00->eParseMode == '\0')" ( (binary_expression "pParse_00->eParseMode == '\0'" (field_expression "pParse_00->eParseMode" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(psVar1->xAuth != (sqlite3_xauth)0x0)" ( (binary_expression "psVar1->xAuth != (sqlite3_xauth)0x0" (field_expression "psVar1->xAuth" identifier -> field_identifier) != (cast_expression "(sqlite3_xauth)0x0" ( (type_descriptor "sqlite3_xauth" type_identifier) ) number_literal)) ))) )) (compound_statement "{\n      uVar2 = (*psVar1->xAuth)(psVar1->pAuthArg,(int)((ulonglong)uVar3 >> 0x20),extraout_ECX,\n                               (char *)pParse,(char *)code,pParse_00->zAuthContext);\n      if (uVar2 == 1) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dc9));\n        pParse_00->rc = 0x17;\n      }\n      else if ((uVar2 & 0xfffffffd) != 0) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dd8));\n        pParse_00->rc = 1;\n        uVar2 = 1;\n      }\n    }" { (expression_statement "uVar2 = (*psVar1->xAuth)(psVar1->pAuthArg,(int)((ulonglong)uVar3 >> 0x20),extraout_ECX,\n                               (char *)pParse,(char *)code,pParse_00->zAuthContext);" (assignment_expression "uVar2 = (*psVar1->xAuth)(psVar1->pAuthArg,(int)((ulonglong)uVar3 >> 0x20),extraout_ECX,\n                               (char *)pParse,(char *)code,pParse_00->zAuthContext)" identifier = (call_expression "(*psVar1->xAuth)(psVar1->pAuthArg,(int)((ulonglong)uVar3 >> 0x20),extraout_ECX,\n                               (char *)pParse,(char *)code,pParse_00->zAuthContext)" (parenthesized_expression "(*psVar1->xAuth)" ( (pointer_expression "*psVar1->xAuth" * (field_expression "psVar1->xAuth" identifier -> field_identifier)) )) (argument_list "(psVar1->pAuthArg,(int)((ulonglong)uVar3 >> 0x20),extraout_ECX,\n                               (char *)pParse,(char *)code,pParse_00->zAuthContext)" ( (field_expression "psVar1->pAuthArg" identifier -> field_identifier) , (cast_expression "(int)((ulonglong)uVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar3 >> 0x20)" ( (binary_expression "(ulonglong)uVar3 >> 0x20" (cast_expression "(ulonglong)uVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , identifier , (cast_expression "(char *)pParse" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)code" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (field_expression "pParse_00->zAuthContext" identifier -> field_identifier) )))) ;) (if_statement "if (uVar2 == 1) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dc9));\n        pParse_00->rc = 0x17;\n      }\n      else if ((uVar2 & 0xfffffffd) != 0) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dd8));\n        pParse_00->rc = 1;\n        uVar2 = 1;\n      }" if (parenthesized_expression "(uVar2 == 1)" ( (binary_expression "uVar2 == 1" identifier == number_literal) )) (compound_statement "{\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dc9));\n        pParse_00->rc = 0x17;\n      }" { (expression_statement "sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dc9));" (call_expression "sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dc9))" identifier (argument_list "(pParse_00,(char *)(unaff_EDI + 0xd3dc9))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0xd3dc9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xd3dc9)" ( (binary_expression "unaff_EDI + 0xd3dc9" identifier + number_literal) ))) ))) ;) (expression_statement "pParse_00->rc = 0x17;" (assignment_expression "pParse_00->rc = 0x17" (field_expression "pParse_00->rc" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else if ((uVar2 & 0xfffffffd) != 0) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dd8));\n        pParse_00->rc = 1;\n        uVar2 = 1;\n      }" else (if_statement "if ((uVar2 & 0xfffffffd) != 0) {\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dd8));\n        pParse_00->rc = 1;\n        uVar2 = 1;\n      }" if (parenthesized_expression "((uVar2 & 0xfffffffd) != 0)" ( (binary_expression "(uVar2 & 0xfffffffd) != 0" (parenthesized_expression "(uVar2 & 0xfffffffd)" ( (binary_expression "uVar2 & 0xfffffffd" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dd8));\n        pParse_00->rc = 1;\n        uVar2 = 1;\n      }" { (expression_statement "sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dd8));" (call_expression "sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0xd3dd8))" identifier (argument_list "(pParse_00,(char *)(unaff_EDI + 0xd3dd8))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0xd3dd8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xd3dd8)" ( (binary_expression "unaff_EDI + 0xd3dd8" identifier + number_literal) ))) ))) ;) (expression_statement "pParse_00->rc = 1;" (assignment_expression "pParse_00->rc = 1" (field_expression "pParse_00->rc" identifier -> field_identifier) = number_literal) ;) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) })))) })) (return_statement "return uVar2;" return identifier ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "uint FUN_00088da0(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  int *piVar2;\n  uint uVar3;\n  undefined4 extraout_ECX;\n  int unaff_EDI;\n  undefined8 uVar4;\n  \n  uVar4 = FUN_0003a401();\n  piVar2 = (int *)uVar4;\n  iVar1 = *piVar2;\n  if (*(char *)(iVar1 + 0xa1) == '\0') {\n    uVar3 = 0;\n    if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }\n    return uVar3;\n  }\n  return 0;\n}\n\n" (function_definition "uint FUN_00088da0(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  int *piVar2;\n  uint uVar3;\n  undefined4 extraout_ECX;\n  int unaff_EDI;\n  undefined8 uVar4;\n  \n  uVar4 = FUN_0003a401();\n  piVar2 = (int *)uVar4;\n  iVar1 = *piVar2;\n  if (*(char *)(iVar1 + 0xa1) == '\0') {\n    uVar3 = 0;\n    if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }\n    return uVar3;\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00088da0(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  uint uVar3;\n  undefined4 extraout_ECX;\n  int unaff_EDI;\n  undefined8 uVar4;\n  \n  uVar4 = FUN_0003a401();\n  piVar2 = (int *)uVar4;\n  iVar1 = *piVar2;\n  if (*(char *)(iVar1 + 0xa1) == '\0') {\n    uVar3 = 0;\n    if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }\n    return uVar3;\n  }\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (expression_statement "uVar4 = FUN_0003a401();" (assignment_expression "uVar4 = FUN_0003a401()" identifier = (call_expression "FUN_0003a401()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar2 = (int *)uVar4;" (assignment_expression "piVar2 = (int *)uVar4" identifier = (cast_expression "(int *)uVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar1 = *piVar2;" (assignment_expression "iVar1 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (if_statement "if (*(char *)(iVar1 + 0xa1) == '\0') {\n    uVar3 = 0;\n    if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }\n    return uVar3;\n  }" if (parenthesized_expression "(*(char *)(iVar1 + 0xa1) == '\0')" ( (binary_expression "*(char *)(iVar1 + 0xa1) == '\0'" (pointer_expression "*(char *)(iVar1 + 0xa1)" * (cast_expression "(char *)(iVar1 + 0xa1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xa1)" ( (binary_expression "iVar1 + 0xa1" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar3 = 0;\n    if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }\n    return uVar3;\n  }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }" if (parenthesized_expression "((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0))" ( (binary_expression "(*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)" (parenthesized_expression "(*(char *)((int)piVar2 + 0xc6) == '\0')" ( (binary_expression "*(char *)((int)piVar2 + 0xc6) == '\0'" (pointer_expression "*(char *)((int)piVar2 + 0xc6)" * (cast_expression "(char *)((int)piVar2 + 0xc6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar2 + 0xc6)" ( (binary_expression "(int)piVar2 + 0xc6" (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(code **)(iVar1 + 0x13c) != (code *)0x0)" ( (binary_expression "*(code **)(iVar1 + 0x13c) != (code *)0x0" (pointer_expression "*(code **)(iVar1 + 0x13c)" * (cast_expression "(code **)(iVar1 + 0x13c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x13c)" ( (binary_expression "iVar1 + 0x13c" identifier + number_literal) )))) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }" { (expression_statement "uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);" (assignment_expression "uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b])" identifier = (call_expression "(**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b])" (parenthesized_expression "(**(code **)(iVar1 + 0x13c))" ( (pointer_expression "**(code **)(iVar1 + 0x13c)" * (pointer_expression "*(code **)(iVar1 + 0x13c)" * (cast_expression "(code **)(iVar1 + 0x13c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x13c)" ( (binary_expression "iVar1 + 0x13c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b])" ( (pointer_expression "*(undefined4 *)(iVar1 + 0x140)" * (cast_expression "(undefined4 *)(iVar1 + 0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x140)" ( (binary_expression "iVar1 + 0x140" identifier + number_literal) )))) , (cast_expression "(int)((ulonglong)uVar4 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar4 >> 0x20)" ( (binary_expression "(ulonglong)uVar4 >> 0x20" (cast_expression "(ulonglong)uVar4" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , identifier , identifier , identifier , (subscript_expression "piVar2[0x3b]" identifier [ number_literal ]) )))) ;) (if_statement "if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }" if (parenthesized_expression "(uVar3 == 1)" ( (binary_expression "uVar3 == 1" identifier == number_literal) )) (compound_statement "{\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }" { (expression_statement "FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);" (call_expression "FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9)" identifier (argument_list "(piVar2,unaff_EDI + 0xd3dc9)" ( identifier , (binary_expression "unaff_EDI + 0xd3dc9" identifier + number_literal) ))) ;) (expression_statement "piVar2[3] = 0x17;" (assignment_expression "piVar2[3] = 0x17" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }" else (if_statement "if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }" if (parenthesized_expression "((uVar3 & 0xfffffffd) != 0)" ( (binary_expression "(uVar3 & 0xfffffffd) != 0" (parenthesized_expression "(uVar3 & 0xfffffffd)" ( (binary_expression "uVar3 & 0xfffffffd" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }" { (expression_statement "FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);" (call_expression "FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8)" identifier (argument_list "(piVar2,unaff_EDI + 0xd3dd8)" ( identifier , (binary_expression "unaff_EDI + 0xd3dd8" identifier + number_literal) ))) ;) (expression_statement "piVar2[3] = 1;" (assignment_expression "piVar2[3] = 1" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) })))) })) (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 IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) , IDENT , IDENT , IDENT , (subscript_expression IDENT [ LIT ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })))) })) (return_statement return IDENT ;) })) (return_statement return LIT ;) })))
(function_definition "uint FUN_00088da0(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  int *piVar2;\n  uint uVar3;\n  undefined4 extraout_ECX;\n  int unaff_EDI;\n  undefined8 uVar4;\n  \n  uVar4 = FUN_0003a401();\n  piVar2 = (int *)uVar4;\n  iVar1 = *piVar2;\n  if (*(char *)(iVar1 + 0xa1) == '\0') {\n    uVar3 = 0;\n    if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }\n    return uVar3;\n  }\n  return 0;\n}" (type_identifier "uint") (function_declarator "FUN_00088da0(undefined4 param_1,undefined4 param_2)" (identifier "FUN_00088da0") (parameter_list "(undefined4 param_1,undefined4 param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  uint uVar3;\n  undefined4 extraout_ECX;\n  int unaff_EDI;\n  undefined8 uVar4;\n  \n  uVar4 = FUN_0003a401();\n  piVar2 = (int *)uVar4;\n  iVar1 = *piVar2;\n  if (*(char *)(iVar1 + 0xa1) == '\0') {\n    uVar3 = 0;\n    if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }\n    return uVar3;\n  }\n  return 0;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined4 extraout_ECX;" (type_identifier "undefined4") (identifier "extraout_ECX") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (expression_statement "uVar4 = FUN_0003a401();" (assignment_expression "uVar4 = FUN_0003a401()" (identifier "uVar4") (= "=") (call_expression "FUN_0003a401()" (identifier "FUN_0003a401") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar2 = (int *)uVar4;" (assignment_expression "piVar2 = (int *)uVar4" (identifier "piVar2") (= "=") (cast_expression "(int *)uVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar4"))) (; ";")) (expression_statement "iVar1 = *piVar2;" (assignment_expression "iVar1 = *piVar2" (identifier "iVar1") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (if_statement "if (*(char *)(iVar1 + 0xa1) == '\0') {\n    uVar3 = 0;\n    if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }\n    return uVar3;\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar1 + 0xa1) == '\0')" (( "(") (binary_expression "*(char *)(iVar1 + 0xa1) == '\0'" (pointer_expression "*(char *)(iVar1 + 0xa1)" (* "*") (cast_expression "(char *)(iVar1 + 0xa1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xa1)" (( "(") (binary_expression "iVar1 + 0xa1" (identifier "iVar1") (+ "+") (number_literal "0xa1")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    uVar3 = 0;\n    if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }\n    return uVar3;\n  }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }" (if "if") (parenthesized_expression "((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0))" (( "(") (binary_expression "(*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)" (parenthesized_expression "(*(char *)((int)piVar2 + 0xc6) == '\0')" (( "(") (binary_expression "*(char *)((int)piVar2 + 0xc6) == '\0'" (pointer_expression "*(char *)((int)piVar2 + 0xc6)" (* "*") (cast_expression "(char *)((int)piVar2 + 0xc6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar2 + 0xc6)" (( "(") (binary_expression "(int)piVar2 + 0xc6" (cast_expression "(int)piVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar2")) (+ "+") (number_literal "0xc6")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(code **)(iVar1 + 0x13c) != (code *)0x0)" (( "(") (binary_expression "*(code **)(iVar1 + 0x13c) != (code *)0x0" (pointer_expression "*(code **)(iVar1 + 0x13c)" (* "*") (cast_expression "(code **)(iVar1 + 0x13c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0x13c)" (( "(") (binary_expression "iVar1 + 0x13c" (identifier "iVar1") (+ "+") (number_literal "0x13c")) () ")")))) (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n      uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);\n      if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }\n    }" ({ "{") (expression_statement "uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b]);" (assignment_expression "uVar3 = (**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b])" (identifier "uVar3") (= "=") (call_expression "(**(code **)(iVar1 + 0x13c))\n                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b])" (parenthesized_expression "(**(code **)(iVar1 + 0x13c))" (( "(") (pointer_expression "**(code **)(iVar1 + 0x13c)" (* "*") (pointer_expression "*(code **)(iVar1 + 0x13c)" (* "*") (cast_expression "(code **)(iVar1 + 0x13c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0x13c)" (( "(") (binary_expression "iVar1 + 0x13c" (identifier "iVar1") (+ "+") (number_literal "0x13c")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX\n                         ,param_1,param_2,piVar2[0x3b])" (( "(") (pointer_expression "*(undefined4 *)(iVar1 + 0x140)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x140)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x140)" (( "(") (binary_expression "iVar1 + 0x140" (identifier "iVar1") (+ "+") (number_literal "0x140")) () ")")))) (, ",") (cast_expression "(int)((ulonglong)uVar4 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar4 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar4 >> 0x20" (cast_expression "(ulonglong)uVar4" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x20")) () ")"))) (, ",") (identifier "extraout_ECX") (, ",") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (subscript_expression "piVar2[0x3b]" (identifier "piVar2") ([ "[") (number_literal "0x3b") (] "]")) () ")")))) (; ";")) (if_statement "if (uVar3 == 1) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }\n      else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }" (if "if") (parenthesized_expression "(uVar3 == 1)" (( "(") (binary_expression "uVar3 == 1" (identifier "uVar3") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);\n        piVar2[3] = 0x17;\n      }" ({ "{") (expression_statement "FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);" (call_expression "FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9)" (identifier "FUN_000886b0") (argument_list "(piVar2,unaff_EDI + 0xd3dc9)" (( "(") (identifier "piVar2") (, ",") (binary_expression "unaff_EDI + 0xd3dc9" (identifier "unaff_EDI") (+ "+") (number_literal "0xd3dc9")) () ")"))) (; ";")) (expression_statement "piVar2[3] = 0x17;" (assignment_expression "piVar2[3] = 0x17" (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0x17")) (; ";")) (} "}")) (else_clause "else if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }" (else "else") (if_statement "if ((uVar3 & 0xfffffffd) != 0) {\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }" (if "if") (parenthesized_expression "((uVar3 & 0xfffffffd) != 0)" (( "(") (binary_expression "(uVar3 & 0xfffffffd) != 0" (parenthesized_expression "(uVar3 & 0xfffffffd)" (( "(") (binary_expression "uVar3 & 0xfffffffd" (identifier "uVar3") (& "&") (number_literal "0xfffffffd")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);\n        piVar2[3] = 1;\n        uVar3 = 1;\n      }" ({ "{") (expression_statement "FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);" (call_expression "FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8)" (identifier "FUN_000886b0") (argument_list "(piVar2,unaff_EDI + 0xd3dd8)" (( "(") (identifier "piVar2") (, ",") (binary_expression "unaff_EDI + 0xd3dd8" (identifier "unaff_EDI") (+ "+") (number_literal "0xd3dd8")) () ")"))) (; ";")) (expression_statement "piVar2[3] = 1;" (assignment_expression "piVar2[3] = 1" (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";")) (} "}"))))) (} "}"))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

int function_1(type_1 *pParse,int code,char *zArg1,char *zArg2,char *zArg3)

{
  type_2 *psVar1;
  type_1 *pParse_00;
  type_3 var_2;
  char *extraout_ECX;
  int var_4;
  type_4 uVar3;
  
  uVar3 = var_1();
  pParse_00 = (type_1 *)uVar3;
  psVar1 = pParse_00->db;
  if ((psVar1->init).busy == '\0') {
    var_2 = 0;
    if ((pParse_00->eParseMode == '\0') && (psVar1->xAuth != (type_5)0x0)) {
      var_2 = (*psVar1->xAuth)(psVar1->pAuthArg,(int)((type_6)uVar3 >> 0x20),extraout_ECX,
                               (char *)pParse,(char *)code,pParse_00->zAuthContext);
      if (var_2 == 1) {
        var_3(pParse_00,(char *)(var_4 + 0xd3dc9));
        pParse_00->rc = 0x17;
      }
      else if ((var_2 & 0xfffffffd) != 0) {
        var_3(pParse_00,(char *)(var_4 + 0xd3dd8));
        pParse_00->rc = 1;
        var_2 = 1;
      }
    }
    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: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (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: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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))))) (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (identifier) (identifier) (identifier) (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))))) (return_statement (identifier)))) (return_statement (number_literal)))))

uint MASKED(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  undefined4 extraout_ECX;
  int unaff_EDI;
  undefined8 uVar4;
  
  uVar4 = FUN_0003a401();
  piVar2 = (int *)uVar4;
  iVar1 = *piVar2;
  if (*(char *)(iVar1 + 0xa1) == '\0') {
    uVar3 = 0;
    if ((*(char *)((int)piVar2 + 0xc6) == '\0') && (*(code **)(iVar1 + 0x13c) != (code *)0x0)) {
      uVar3 = (**(code **)(iVar1 + 0x13c))
                        (*(undefined4 *)(iVar1 + 0x140),(int)((ulonglong)uVar4 >> 0x20),extraout_ECX
                         ,param_1,param_2,piVar2[0x3b]);
      if (uVar3 == 1) {
        FUN_000886b0(piVar2,unaff_EDI + 0xd3dc9);
        piVar2[3] = 0x17;
      }
      else if ((uVar3 & 0xfffffffd) != 0) {
        FUN_000886b0(piVar2,unaff_EDI + 0xd3dd8);
        piVar2[3] = 1;
        uVar3 = 1;
      }
    }
    return uVar3;
  }
  return 0;
}

