
int sqlite3_wal_checkpoint_v2(sqlite3 *db,char *zDb,int eMode,int *pnLog,int *pnCkpt)

{
  int iVar1;
  
  if (pnLog != (int *)0x0) {
    *pnLog = -1;
  }
  if (pnCkpt != (int *)0x0) {
    *pnCkpt = -1;
  }
  if (3 < (uint)eMode) {
    return 0x15;
  }
  sqlite3_mutex_enter(db->mutex);
  if (zDb == (char *)0x0) {
    iVar1 = 10;
  }
  else {
    iVar1 = 10;
    if ((*zDb != '\0') && (iVar1 = sqlite3FindDbName(db,zDb), iVar1 < 0)) {
      sqlite3ErrorWithMsg(db,1,"unknown database: %s",zDb);
      iVar1 = 1;
      goto LAB_0018bff5;
    }
  }
  (db->busyHandler).nBusy = 0;
  iVar1 = sqlite3Checkpoint(db,iVar1,eMode,pnLog,pnCkpt);
  sqlite3Error(db,iVar1);
LAB_0018bff5:
  iVar1 = sqlite3ApiExit(db,iVar1);
  if (db->nVdbeActive == 0) {
    (db->u1).isInterrupted = 0;
  }
  sqlite3_mutex_leave(db->mutex);
  return iVar1;
}



undefined4
FUN_0018bf78(long param_1,char *param_2,uint param_3,undefined4 *param_4,undefined4 *param_5)

{
  undefined4 uVar1;
  int iVar2;
  
  if (param_4 != (undefined4 *)0x0) {
    *param_4 = 0xffffffff;
  }
  if (param_5 != (undefined4 *)0x0) {
    *param_5 = 0xffffffff;
  }
  if (3 < param_3) {
    return 0x15;
  }
  FUN_0012a8c7(*(undefined8 *)(param_1 + 0x18));
  if (param_2 == (char *)0x0) {
    iVar2 = 10;
  }
  else {
    iVar2 = 10;
    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {
      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);
      uVar1 = 1;
      goto LAB_0018bff5;
    }
  }
  *(undefined4 *)(param_1 + 0x248) = 0;
  uVar1 = FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5);
  FUN_001422f4(param_1,uVar1);
LAB_0018bff5:
  uVar1 = FUN_00142331(param_1,uVar1);
  if (*(int *)(param_1 + 0xb8) == 0) {
    *(undefined4 *)(param_1 + 0x170) = 0;
  }
  FUN_0012a8f6(*(undefined8 *)(param_1 + 0x18));
  return uVar1;
}


PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
TEST RCX,RCX
JZ 0x0018bf8b
MOV dword ptr [RCX],0xffffffff
TEST R8,R8
JZ 0x0018bf97
MOV dword ptr [R8],0xffffffff
MOV R12D,0x15
CMP EDX,0x3
JA 0x0018c01e
MOV R13,R8
MOV R12,RCX
MOV R14D,EDX
MOV RBP,RSI
MOV RBX,RDI
MOV RDI,qword ptr [RDI + 0x18]
CALL 0x0012a8c7
TEST RBP,RBP
JZ 0x0018c05e
MOV ESI,0xa
CMP byte ptr [RBP],0x0
JNZ 0x0018c02a
MOV dword ptr [RBX + 0x248],0x0
MOV R8,R13
MOV RCX,R12
MOV EDX,R14D
MOV RDI,RBX
CALL 0x0018bdde
MOV EBP,EAX
MOV ESI,EAX
MOV RDI,RBX
CALL 0x001422f4
MOV ESI,EBP
MOV RDI,RBX
CALL 0x00142331
MOV R12D,EAX
CMP dword ptr [RBX + 0xb8],0x0
JNZ 0x0018c015
MOV dword ptr [RBX + 0x170],0x0
MOV RDI,qword ptr [RBX + 0x18]
CALL 0x0012a8f6
MOV EAX,R12D
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
MOV RSI,RBP
MOV RDI,RBX
CALL 0x0012ed10
MOV ESI,EAX
TEST EAX,EAX
JNS 0x0018bfce
MOV RCX,RBP
LEA RDX,[0x1f4a5c]
MOV ESI,0x1
MOV RDI,RBX
MOV EAX,0x0
CALL 0x0015ec39
MOV EBP,0x1
JMP 0x0018bff5
MOV ESI,0xa
JMP 0x0018bfce
(translation_unit "undefined4\nFUN_0018bf78(long param_1,char *param_2,uint param_3,undefined4 *param_4,undefined4 *param_5)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  \n  if (param_4 != (undefined4 *)0x0) {\n    *param_4 = 0xffffffff;\n  }\n  if (param_5 != (undefined4 *)0x0) {\n    *param_5 = 0xffffffff;\n  }\n  if (3 < param_3) {\n    return 0x15;\n  }\n  FUN_0012a8c7(*(undefined8 *)(param_1 + 0x18));\n  if (param_2 == (char *)0x0) {\n    iVar2 = 10;\n  }\n  else {\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }\n  *(undefined4 *)(param_1 + 0x248) = 0;\n  uVar1 = FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5);\n  FUN_001422f4(param_1,uVar1);\nLAB_0018bff5:\n  uVar1 = FUN_00142331(param_1,uVar1);\n  if (*(int *)(param_1 + 0xb8) == 0) {\n    *(undefined4 *)(param_1 + 0x170) = 0;\n  }\n  FUN_0012a8f6(*(undefined8 *)(param_1 + 0x18));\n  return uVar1;\n}\n\n" (function_definition "undefined4\nFUN_0018bf78(long param_1,char *param_2,uint param_3,undefined4 *param_4,undefined4 *param_5)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  \n  if (param_4 != (undefined4 *)0x0) {\n    *param_4 = 0xffffffff;\n  }\n  if (param_5 != (undefined4 *)0x0) {\n    *param_5 = 0xffffffff;\n  }\n  if (3 < param_3) {\n    return 0x15;\n  }\n  FUN_0012a8c7(*(undefined8 *)(param_1 + 0x18));\n  if (param_2 == (char *)0x0) {\n    iVar2 = 10;\n  }\n  else {\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }\n  *(undefined4 *)(param_1 + 0x248) = 0;\n  uVar1 = FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5);\n  FUN_001422f4(param_1,uVar1);\nLAB_0018bff5:\n  uVar1 = FUN_00142331(param_1,uVar1);\n  if (*(int *)(param_1 + 0xb8) == 0) {\n    *(undefined4 *)(param_1 + 0x170) = 0;\n  }\n  FUN_0012a8f6(*(undefined8 *)(param_1 + 0x18));\n  return uVar1;\n}" type_identifier (function_declarator "FUN_0018bf78(long param_1,char *param_2,uint param_3,undefined4 *param_4,undefined4 *param_5)" identifier (parameter_list "(long param_1,char *param_2,uint param_3,undefined4 *param_4,undefined4 *param_5)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "undefined4 *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  \n  if (param_4 != (undefined4 *)0x0) {\n    *param_4 = 0xffffffff;\n  }\n  if (param_5 != (undefined4 *)0x0) {\n    *param_5 = 0xffffffff;\n  }\n  if (3 < param_3) {\n    return 0x15;\n  }\n  FUN_0012a8c7(*(undefined8 *)(param_1 + 0x18));\n  if (param_2 == (char *)0x0) {\n    iVar2 = 10;\n  }\n  else {\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }\n  *(undefined4 *)(param_1 + 0x248) = 0;\n  uVar1 = FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5);\n  FUN_001422f4(param_1,uVar1);\nLAB_0018bff5:\n  uVar1 = FUN_00142331(param_1,uVar1);\n  if (*(int *)(param_1 + 0xb8) == 0) {\n    *(undefined4 *)(param_1 + 0x170) = 0;\n  }\n  FUN_0012a8f6(*(undefined8 *)(param_1 + 0x18));\n  return uVar1;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (if_statement "if (param_4 != (undefined4 *)0x0) {\n    *param_4 = 0xffffffff;\n  }" if (parenthesized_expression "(param_4 != (undefined4 *)0x0)" ( (binary_expression "param_4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *param_4 = 0xffffffff;\n  }" { (expression_statement "*param_4 = 0xffffffff;" (assignment_expression "*param_4 = 0xffffffff" (pointer_expression "*param_4" * identifier) = number_literal) ;) })) (if_statement "if (param_5 != (undefined4 *)0x0) {\n    *param_5 = 0xffffffff;\n  }" if (parenthesized_expression "(param_5 != (undefined4 *)0x0)" ( (binary_expression "param_5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *param_5 = 0xffffffff;\n  }" { (expression_statement "*param_5 = 0xffffffff;" (assignment_expression "*param_5 = 0xffffffff" (pointer_expression "*param_5" * identifier) = number_literal) ;) })) (if_statement "if (3 < param_3) {\n    return 0x15;\n  }" if (parenthesized_expression "(3 < param_3)" ( (binary_expression "3 < param_3" number_literal < identifier) )) (compound_statement "{\n    return 0x15;\n  }" { (return_statement "return 0x15;" return number_literal ;) })) (expression_statement "FUN_0012a8c7(*(undefined8 *)(param_1 + 0x18));" (call_expression "FUN_0012a8c7(*(undefined8 *)(param_1 + 0x18))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x18))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) ))) ;) (if_statement "if (param_2 == (char *)0x0) {\n    iVar2 = 10;\n  }\n  else {\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }" if (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar2 = 10;\n  }" { (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 10" identifier = number_literal) ;) }) (else_clause "else {\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }" else (compound_statement "{\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }" { (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 10" identifier = number_literal) ;) (if_statement "if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }" if (parenthesized_expression "((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0))" ( (binary_expression "(*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)" (parenthesized_expression "(*param_2 != '\0')" ( (binary_expression "*param_2 != '\0'" (pointer_expression "*param_2" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)" ( (comma_expression "iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0" (assignment_expression "iVar2 = FUN_0012ed10(param_1,param_2)" identifier = (call_expression "FUN_0012ed10(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) , (binary_expression "iVar2 < 0" identifier < number_literal)) ))) )) (compound_statement "{\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }" { (expression_statement "FUN_0015ec39(param_1,1,"unknown database: %s",param_2);" (call_expression "FUN_0015ec39(param_1,1,"unknown database: %s",param_2)" identifier (argument_list "(param_1,1,"unknown database: %s",param_2)" ( identifier , number_literal , (string_literal ""unknown database: %s"" " string_content ") , identifier ))) ;) (expression_statement "uVar1 = 1;" (assignment_expression "uVar1 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0018bff5;" goto statement_identifier ;) })) }))) (expression_statement "*(undefined4 *)(param_1 + 0x248) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x248) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x248)" * (cast_expression "(undefined4 *)(param_1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar1 = FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5);" (assignment_expression "uVar1 = FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5)" identifier = (call_expression "FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5)" identifier (argument_list "(param_1,iVar2,param_3,param_4,param_5)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "FUN_001422f4(param_1,uVar1);" (call_expression "FUN_001422f4(param_1,uVar1)" identifier (argument_list "(param_1,uVar1)" ( identifier , identifier ))) ;) (labeled_statement "LAB_0018bff5:\n  uVar1 = FUN_00142331(param_1,uVar1);" statement_identifier : (expression_statement "uVar1 = FUN_00142331(param_1,uVar1);" (assignment_expression "uVar1 = FUN_00142331(param_1,uVar1)" identifier = (call_expression "FUN_00142331(param_1,uVar1)" identifier (argument_list "(param_1,uVar1)" ( identifier , identifier )))) ;)) (if_statement "if (*(int *)(param_1 + 0xb8) == 0) {\n    *(undefined4 *)(param_1 + 0x170) = 0;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0xb8) == 0)" ( (binary_expression "*(int *)(param_1 + 0xb8) == 0" (pointer_expression "*(int *)(param_1 + 0xb8)" * (cast_expression "(int *)(param_1 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb8)" ( (binary_expression "param_1 + 0xb8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    *(undefined4 *)(param_1 + 0x170) = 0;\n  }" { (expression_statement "*(undefined4 *)(param_1 + 0x170) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x170) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x170)" * (cast_expression "(undefined4 *)(param_1 + 0x170)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x170)" ( (binary_expression "param_1 + 0x170" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "FUN_0012a8f6(*(undefined8 *)(param_1 + 0x18));" (call_expression "FUN_0012a8f6(*(undefined8 *)(param_1 + 0x18))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x18))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) ))) ;) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit "int sqlite3_wal_checkpoint_v2(sqlite3 *db,char *zDb,int eMode,int *pnLog,int *pnCkpt)\n\n{\n  int iVar1;\n  \n  if (pnLog != (int *)0x0) {\n    *pnLog = -1;\n  }\n  if (pnCkpt != (int *)0x0) {\n    *pnCkpt = -1;\n  }\n  if (3 < (uint)eMode) {\n    return 0x15;\n  }\n  sqlite3_mutex_enter(db->mutex);\n  if (zDb == (char *)0x0) {\n    iVar1 = 10;\n  }\n  else {\n    iVar1 = 10;\n    if ((*zDb != '\0') && (iVar1 = sqlite3FindDbName(db,zDb), iVar1 < 0)) {\n      sqlite3ErrorWithMsg(db,1,"unknown database: %s",zDb);\n      iVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }\n  (db->busyHandler).nBusy = 0;\n  iVar1 = sqlite3Checkpoint(db,iVar1,eMode,pnLog,pnCkpt);\n  sqlite3Error(db,iVar1);\nLAB_0018bff5:\n  iVar1 = sqlite3ApiExit(db,iVar1);\n  if (db->nVdbeActive == 0) {\n    (db->u1).isInterrupted = 0;\n  }\n  sqlite3_mutex_leave(db->mutex);\n  return iVar1;\n}\n\n" (function_definition "int sqlite3_wal_checkpoint_v2(sqlite3 *db,char *zDb,int eMode,int *pnLog,int *pnCkpt)\n\n{\n  int iVar1;\n  \n  if (pnLog != (int *)0x0) {\n    *pnLog = -1;\n  }\n  if (pnCkpt != (int *)0x0) {\n    *pnCkpt = -1;\n  }\n  if (3 < (uint)eMode) {\n    return 0x15;\n  }\n  sqlite3_mutex_enter(db->mutex);\n  if (zDb == (char *)0x0) {\n    iVar1 = 10;\n  }\n  else {\n    iVar1 = 10;\n    if ((*zDb != '\0') && (iVar1 = sqlite3FindDbName(db,zDb), iVar1 < 0)) {\n      sqlite3ErrorWithMsg(db,1,"unknown database: %s",zDb);\n      iVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }\n  (db->busyHandler).nBusy = 0;\n  iVar1 = sqlite3Checkpoint(db,iVar1,eMode,pnLog,pnCkpt);\n  sqlite3Error(db,iVar1);\nLAB_0018bff5:\n  iVar1 = sqlite3ApiExit(db,iVar1);\n  if (db->nVdbeActive == 0) {\n    (db->u1).isInterrupted = 0;\n  }\n  sqlite3_mutex_leave(db->mutex);\n  return iVar1;\n}" primitive_type (function_declarator "sqlite3_wal_checkpoint_v2(sqlite3 *db,char *zDb,int eMode,int *pnLog,int *pnCkpt)" identifier (parameter_list "(sqlite3 *db,char *zDb,int eMode,int *pnLog,int *pnCkpt)" ( (parameter_declaration "sqlite3 *db" type_identifier (pointer_declarator "*db" * identifier)) , (parameter_declaration "char *zDb" primitive_type (pointer_declarator "*zDb" * identifier)) , (parameter_declaration "int eMode" primitive_type identifier) , (parameter_declaration "int *pnLog" primitive_type (pointer_declarator "*pnLog" * identifier)) , (parameter_declaration "int *pnCkpt" primitive_type (pointer_declarator "*pnCkpt" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  \n  if (pnLog != (int *)0x0) {\n    *pnLog = -1;\n  }\n  if (pnCkpt != (int *)0x0) {\n    *pnCkpt = -1;\n  }\n  if (3 < (uint)eMode) {\n    return 0x15;\n  }\n  sqlite3_mutex_enter(db->mutex);\n  if (zDb == (char *)0x0) {\n    iVar1 = 10;\n  }\n  else {\n    iVar1 = 10;\n    if ((*zDb != '\0') && (iVar1 = sqlite3FindDbName(db,zDb), iVar1 < 0)) {\n      sqlite3ErrorWithMsg(db,1,"unknown database: %s",zDb);\n      iVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }\n  (db->busyHandler).nBusy = 0;\n  iVar1 = sqlite3Checkpoint(db,iVar1,eMode,pnLog,pnCkpt);\n  sqlite3Error(db,iVar1);\nLAB_0018bff5:\n  iVar1 = sqlite3ApiExit(db,iVar1);\n  if (db->nVdbeActive == 0) {\n    (db->u1).isInterrupted = 0;\n  }\n  sqlite3_mutex_leave(db->mutex);\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (if_statement "if (pnLog != (int *)0x0) {\n    *pnLog = -1;\n  }" if (parenthesized_expression "(pnLog != (int *)0x0)" ( (binary_expression "pnLog != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *pnLog = -1;\n  }" { (expression_statement "*pnLog = -1;" (assignment_expression "*pnLog = -1" (pointer_expression "*pnLog" * identifier) = number_literal) ;) })) (if_statement "if (pnCkpt != (int *)0x0) {\n    *pnCkpt = -1;\n  }" if (parenthesized_expression "(pnCkpt != (int *)0x0)" ( (binary_expression "pnCkpt != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *pnCkpt = -1;\n  }" { (expression_statement "*pnCkpt = -1;" (assignment_expression "*pnCkpt = -1" (pointer_expression "*pnCkpt" * identifier) = number_literal) ;) })) (if_statement "if (3 < (uint)eMode) {\n    return 0x15;\n  }" if (parenthesized_expression "(3 < (uint)eMode)" ( (binary_expression "3 < (uint)eMode" number_literal < (cast_expression "(uint)eMode" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n    return 0x15;\n  }" { (return_statement "return 0x15;" return number_literal ;) })) (expression_statement "sqlite3_mutex_enter(db->mutex);" (call_expression "sqlite3_mutex_enter(db->mutex)" identifier (argument_list "(db->mutex)" ( (field_expression "db->mutex" identifier -> field_identifier) ))) ;) (if_statement "if (zDb == (char *)0x0) {\n    iVar1 = 10;\n  }\n  else {\n    iVar1 = 10;\n    if ((*zDb != '\0') && (iVar1 = sqlite3FindDbName(db,zDb), iVar1 < 0)) {\n      sqlite3ErrorWithMsg(db,1,"unknown database: %s",zDb);\n      iVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }" if (parenthesized_expression "(zDb == (char *)0x0)" ( (binary_expression "zDb == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar1 = 10;\n  }" { (expression_statement "iVar1 = 10;" (assignment_expression "iVar1 = 10" identifier = number_literal) ;) }) (else_clause "else {\n    iVar1 = 10;\n    if ((*zDb != '\0') && (iVar1 = sqlite3FindDbName(db,zDb), iVar1 < 0)) {\n      sqlite3ErrorWithMsg(db,1,"unknown database: %s",zDb);\n      iVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }" else (compound_statement "{\n    iVar1 = 10;\n    if ((*zDb != '\0') && (iVar1 = sqlite3FindDbName(db,zDb), iVar1 < 0)) {\n      sqlite3ErrorWithMsg(db,1,"unknown database: %s",zDb);\n      iVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }" { (expression_statement "iVar1 = 10;" (assignment_expression "iVar1 = 10" identifier = number_literal) ;) (if_statement "if ((*zDb != '\0') && (iVar1 = sqlite3FindDbName(db,zDb), iVar1 < 0)) {\n      sqlite3ErrorWithMsg(db,1,"unknown database: %s",zDb);\n      iVar1 = 1;\n      goto LAB_0018bff5;\n    }" if (parenthesized_expression "((*zDb != '\0') && (iVar1 = sqlite3FindDbName(db,zDb), iVar1 < 0))" ( (binary_expression "(*zDb != '\0') && (iVar1 = sqlite3FindDbName(db,zDb), iVar1 < 0)" (parenthesized_expression "(*zDb != '\0')" ( (binary_expression "*zDb != '\0'" (pointer_expression "*zDb" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar1 = sqlite3FindDbName(db,zDb), iVar1 < 0)" ( (comma_expression "iVar1 = sqlite3FindDbName(db,zDb), iVar1 < 0" (assignment_expression "iVar1 = sqlite3FindDbName(db,zDb)" identifier = (call_expression "sqlite3FindDbName(db,zDb)" identifier (argument_list "(db,zDb)" ( identifier , identifier )))) , (binary_expression "iVar1 < 0" identifier < number_literal)) ))) )) (compound_statement "{\n      sqlite3ErrorWithMsg(db,1,"unknown database: %s",zDb);\n      iVar1 = 1;\n      goto LAB_0018bff5;\n    }" { (expression_statement "sqlite3ErrorWithMsg(db,1,"unknown database: %s",zDb);" (call_expression "sqlite3ErrorWithMsg(db,1,"unknown database: %s",zDb)" identifier (argument_list "(db,1,"unknown database: %s",zDb)" ( identifier , number_literal , (string_literal ""unknown database: %s"" " string_content ") , identifier ))) ;) (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0018bff5;" goto statement_identifier ;) })) }))) (expression_statement "(db->busyHandler).nBusy = 0;" (assignment_expression "(db->busyHandler).nBusy = 0" (field_expression "(db->busyHandler).nBusy" (parenthesized_expression "(db->busyHandler)" ( (field_expression "db->busyHandler" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "iVar1 = sqlite3Checkpoint(db,iVar1,eMode,pnLog,pnCkpt);" (assignment_expression "iVar1 = sqlite3Checkpoint(db,iVar1,eMode,pnLog,pnCkpt)" identifier = (call_expression "sqlite3Checkpoint(db,iVar1,eMode,pnLog,pnCkpt)" identifier (argument_list "(db,iVar1,eMode,pnLog,pnCkpt)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "sqlite3Error(db,iVar1);" (call_expression "sqlite3Error(db,iVar1)" identifier (argument_list "(db,iVar1)" ( identifier , identifier ))) ;) (labeled_statement "LAB_0018bff5:\n  iVar1 = sqlite3ApiExit(db,iVar1);" statement_identifier : (expression_statement "iVar1 = sqlite3ApiExit(db,iVar1);" (assignment_expression "iVar1 = sqlite3ApiExit(db,iVar1)" identifier = (call_expression "sqlite3ApiExit(db,iVar1)" identifier (argument_list "(db,iVar1)" ( identifier , identifier )))) ;)) (if_statement "if (db->nVdbeActive == 0) {\n    (db->u1).isInterrupted = 0;\n  }" if (parenthesized_expression "(db->nVdbeActive == 0)" ( (binary_expression "db->nVdbeActive == 0" (field_expression "db->nVdbeActive" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    (db->u1).isInterrupted = 0;\n  }" { (expression_statement "(db->u1).isInterrupted = 0;" (assignment_expression "(db->u1).isInterrupted = 0" (field_expression "(db->u1).isInterrupted" (parenthesized_expression "(db->u1)" ( (field_expression "db->u1" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) })) (expression_statement "sqlite3_mutex_leave(db->mutex);" (call_expression "sqlite3_mutex_leave(db->mutex)" identifier (argument_list "(db->mutex)" ( (field_expression "db->mutex" identifier -> field_identifier) ))) ;) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit "undefined4\nFUN_0018bf78(long param_1,char *param_2,uint param_3,undefined4 *param_4,undefined4 *param_5)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  \n  if (param_4 != (undefined4 *)0x0) {\n    *param_4 = 0xffffffff;\n  }\n  if (param_5 != (undefined4 *)0x0) {\n    *param_5 = 0xffffffff;\n  }\n  if (3 < param_3) {\n    return 0x15;\n  }\n  FUN_0012a8c7(*(undefined8 *)(param_1 + 0x18));\n  if (param_2 == (char *)0x0) {\n    iVar2 = 10;\n  }\n  else {\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }\n  *(undefined4 *)(param_1 + 0x248) = 0;\n  uVar1 = FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5);\n  FUN_001422f4(param_1,uVar1);\nLAB_0018bff5:\n  uVar1 = FUN_00142331(param_1,uVar1);\n  if (*(int *)(param_1 + 0xb8) == 0) {\n    *(undefined4 *)(param_1 + 0x170) = 0;\n  }\n  FUN_0012a8f6(*(undefined8 *)(param_1 + 0x18));\n  return uVar1;\n}\n\n" (function_definition "undefined4\nFUN_0018bf78(long param_1,char *param_2,uint param_3,undefined4 *param_4,undefined4 *param_5)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  \n  if (param_4 != (undefined4 *)0x0) {\n    *param_4 = 0xffffffff;\n  }\n  if (param_5 != (undefined4 *)0x0) {\n    *param_5 = 0xffffffff;\n  }\n  if (3 < param_3) {\n    return 0x15;\n  }\n  FUN_0012a8c7(*(undefined8 *)(param_1 + 0x18));\n  if (param_2 == (char *)0x0) {\n    iVar2 = 10;\n  }\n  else {\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }\n  *(undefined4 *)(param_1 + 0x248) = 0;\n  uVar1 = FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5);\n  FUN_001422f4(param_1,uVar1);\nLAB_0018bff5:\n  uVar1 = FUN_00142331(param_1,uVar1);\n  if (*(int *)(param_1 + 0xb8) == 0) {\n    *(undefined4 *)(param_1 + 0x170) = 0;\n  }\n  FUN_0012a8f6(*(undefined8 *)(param_1 + 0x18));\n  return uVar1;\n}" type_identifier (function_declarator "FUN_0018bf78(long param_1,char *param_2,uint param_3,undefined4 *param_4,undefined4 *param_5)" identifier (parameter_list "(long param_1,char *param_2,uint param_3,undefined4 *param_4,undefined4 *param_5)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "undefined4 *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  \n  if (param_4 != (undefined4 *)0x0) {\n    *param_4 = 0xffffffff;\n  }\n  if (param_5 != (undefined4 *)0x0) {\n    *param_5 = 0xffffffff;\n  }\n  if (3 < param_3) {\n    return 0x15;\n  }\n  FUN_0012a8c7(*(undefined8 *)(param_1 + 0x18));\n  if (param_2 == (char *)0x0) {\n    iVar2 = 10;\n  }\n  else {\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }\n  *(undefined4 *)(param_1 + 0x248) = 0;\n  uVar1 = FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5);\n  FUN_001422f4(param_1,uVar1);\nLAB_0018bff5:\n  uVar1 = FUN_00142331(param_1,uVar1);\n  if (*(int *)(param_1 + 0xb8) == 0) {\n    *(undefined4 *)(param_1 + 0x170) = 0;\n  }\n  FUN_0012a8f6(*(undefined8 *)(param_1 + 0x18));\n  return uVar1;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (if_statement "if (param_4 != (undefined4 *)0x0) {\n    *param_4 = 0xffffffff;\n  }" if (parenthesized_expression "(param_4 != (undefined4 *)0x0)" ( (binary_expression "param_4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *param_4 = 0xffffffff;\n  }" { (expression_statement "*param_4 = 0xffffffff;" (assignment_expression "*param_4 = 0xffffffff" (pointer_expression "*param_4" * identifier) = number_literal) ;) })) (if_statement "if (param_5 != (undefined4 *)0x0) {\n    *param_5 = 0xffffffff;\n  }" if (parenthesized_expression "(param_5 != (undefined4 *)0x0)" ( (binary_expression "param_5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *param_5 = 0xffffffff;\n  }" { (expression_statement "*param_5 = 0xffffffff;" (assignment_expression "*param_5 = 0xffffffff" (pointer_expression "*param_5" * identifier) = number_literal) ;) })) (if_statement "if (3 < param_3) {\n    return 0x15;\n  }" if (parenthesized_expression "(3 < param_3)" ( (binary_expression "3 < param_3" number_literal < identifier) )) (compound_statement "{\n    return 0x15;\n  }" { (return_statement "return 0x15;" return number_literal ;) })) (expression_statement "FUN_0012a8c7(*(undefined8 *)(param_1 + 0x18));" (call_expression "FUN_0012a8c7(*(undefined8 *)(param_1 + 0x18))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x18))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) ))) ;) (if_statement "if (param_2 == (char *)0x0) {\n    iVar2 = 10;\n  }\n  else {\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }" if (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar2 = 10;\n  }" { (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 10" identifier = number_literal) ;) }) (else_clause "else {\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }" else (compound_statement "{\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }" { (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 10" identifier = number_literal) ;) (if_statement "if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }" if (parenthesized_expression "((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0))" ( (binary_expression "(*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)" (parenthesized_expression "(*param_2 != '\0')" ( (binary_expression "*param_2 != '\0'" (pointer_expression "*param_2" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)" ( (comma_expression "iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0" (assignment_expression "iVar2 = FUN_0012ed10(param_1,param_2)" identifier = (call_expression "FUN_0012ed10(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) , (binary_expression "iVar2 < 0" identifier < number_literal)) ))) )) (compound_statement "{\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }" { (expression_statement "FUN_0015ec39(param_1,1,"unknown database: %s",param_2);" (call_expression "FUN_0015ec39(param_1,1,"unknown database: %s",param_2)" identifier (argument_list "(param_1,1,"unknown database: %s",param_2)" ( identifier , number_literal , (string_literal ""unknown database: %s"" " string_content ") , identifier ))) ;) (expression_statement "uVar1 = 1;" (assignment_expression "uVar1 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0018bff5;" goto statement_identifier ;) })) }))) (expression_statement "*(undefined4 *)(param_1 + 0x248) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x248) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x248)" * (cast_expression "(undefined4 *)(param_1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar1 = FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5);" (assignment_expression "uVar1 = FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5)" identifier = (call_expression "FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5)" identifier (argument_list "(param_1,iVar2,param_3,param_4,param_5)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "FUN_001422f4(param_1,uVar1);" (call_expression "FUN_001422f4(param_1,uVar1)" identifier (argument_list "(param_1,uVar1)" ( identifier , identifier ))) ;) (labeled_statement "LAB_0018bff5:\n  uVar1 = FUN_00142331(param_1,uVar1);" statement_identifier : (expression_statement "uVar1 = FUN_00142331(param_1,uVar1);" (assignment_expression "uVar1 = FUN_00142331(param_1,uVar1)" identifier = (call_expression "FUN_00142331(param_1,uVar1)" identifier (argument_list "(param_1,uVar1)" ( identifier , identifier )))) ;)) (if_statement "if (*(int *)(param_1 + 0xb8) == 0) {\n    *(undefined4 *)(param_1 + 0x170) = 0;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0xb8) == 0)" ( (binary_expression "*(int *)(param_1 + 0xb8) == 0" (pointer_expression "*(int *)(param_1 + 0xb8)" * (cast_expression "(int *)(param_1 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb8)" ( (binary_expression "param_1 + 0xb8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    *(undefined4 *)(param_1 + 0x170) = 0;\n  }" { (expression_statement "*(undefined4 *)(param_1 + 0x170) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x170) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x170)" * (cast_expression "(undefined4 *)(param_1 + 0x170)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x170)" ( (binary_expression "param_1 + 0x170" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "FUN_0012a8f6(*(undefined8 *)(param_1 + 0x18));" (call_expression "FUN_0012a8f6(*(undefined8 *)(param_1 + 0x18))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x18))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) ))) ;) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) , (binary_expression IDENT < LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (string_literal " string_content ") , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4\nFUN_0018bf78(long param_1,char *param_2,uint param_3,undefined4 *param_4,undefined4 *param_5)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  \n  if (param_4 != (undefined4 *)0x0) {\n    *param_4 = 0xffffffff;\n  }\n  if (param_5 != (undefined4 *)0x0) {\n    *param_5 = 0xffffffff;\n  }\n  if (3 < param_3) {\n    return 0x15;\n  }\n  FUN_0012a8c7(*(undefined8 *)(param_1 + 0x18));\n  if (param_2 == (char *)0x0) {\n    iVar2 = 10;\n  }\n  else {\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }\n  *(undefined4 *)(param_1 + 0x248) = 0;\n  uVar1 = FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5);\n  FUN_001422f4(param_1,uVar1);\nLAB_0018bff5:\n  uVar1 = FUN_00142331(param_1,uVar1);\n  if (*(int *)(param_1 + 0xb8) == 0) {\n    *(undefined4 *)(param_1 + 0x170) = 0;\n  }\n  FUN_0012a8f6(*(undefined8 *)(param_1 + 0x18));\n  return uVar1;\n}" (type_identifier "undefined4") (function_declarator "FUN_0018bf78(long param_1,char *param_2,uint param_3,undefined4 *param_4,undefined4 *param_5)" (identifier "FUN_0018bf78") (parameter_list "(long param_1,char *param_2,uint param_3,undefined4 *param_4,undefined4 *param_5)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "undefined4 *param_5" (type_identifier "undefined4") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  \n  if (param_4 != (undefined4 *)0x0) {\n    *param_4 = 0xffffffff;\n  }\n  if (param_5 != (undefined4 *)0x0) {\n    *param_5 = 0xffffffff;\n  }\n  if (3 < param_3) {\n    return 0x15;\n  }\n  FUN_0012a8c7(*(undefined8 *)(param_1 + 0x18));\n  if (param_2 == (char *)0x0) {\n    iVar2 = 10;\n  }\n  else {\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }\n  *(undefined4 *)(param_1 + 0x248) = 0;\n  uVar1 = FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5);\n  FUN_001422f4(param_1,uVar1);\nLAB_0018bff5:\n  uVar1 = FUN_00142331(param_1,uVar1);\n  if (*(int *)(param_1 + 0xb8) == 0) {\n    *(undefined4 *)(param_1 + 0x170) = 0;\n  }\n  FUN_0012a8f6(*(undefined8 *)(param_1 + 0x18));\n  return uVar1;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (if_statement "if (param_4 != (undefined4 *)0x0) {\n    *param_4 = 0xffffffff;\n  }" (if "if") (parenthesized_expression "(param_4 != (undefined4 *)0x0)" (( "(") (binary_expression "param_4 != (undefined4 *)0x0" (identifier "param_4") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    *param_4 = 0xffffffff;\n  }" ({ "{") (expression_statement "*param_4 = 0xffffffff;" (assignment_expression "*param_4 = 0xffffffff" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (if_statement "if (param_5 != (undefined4 *)0x0) {\n    *param_5 = 0xffffffff;\n  }" (if "if") (parenthesized_expression "(param_5 != (undefined4 *)0x0)" (( "(") (binary_expression "param_5 != (undefined4 *)0x0" (identifier "param_5") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    *param_5 = 0xffffffff;\n  }" ({ "{") (expression_statement "*param_5 = 0xffffffff;" (assignment_expression "*param_5 = 0xffffffff" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (if_statement "if (3 < param_3) {\n    return 0x15;\n  }" (if "if") (parenthesized_expression "(3 < param_3)" (( "(") (binary_expression "3 < param_3" (number_literal "3") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n    return 0x15;\n  }" ({ "{") (return_statement "return 0x15;" (return "return") (number_literal "0x15") (; ";")) (} "}"))) (expression_statement "FUN_0012a8c7(*(undefined8 *)(param_1 + 0x18));" (call_expression "FUN_0012a8c7(*(undefined8 *)(param_1 + 0x18))" (identifier "FUN_0012a8c7") (argument_list "(*(undefined8 *)(param_1 + 0x18))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) () ")"))) (; ";")) (if_statement "if (param_2 == (char *)0x0) {\n    iVar2 = 10;\n  }\n  else {\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }" (if "if") (parenthesized_expression "(param_2 == (char *)0x0)" (( "(") (binary_expression "param_2 == (char *)0x0" (identifier "param_2") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar2 = 10;\n  }" ({ "{") (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 10" (identifier "iVar2") (= "=") (number_literal "10")) (; ";")) (} "}")) (else_clause "else {\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }" (else "else") (compound_statement "{\n    iVar2 = 10;\n    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }\n  }" ({ "{") (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 10" (identifier "iVar2") (= "=") (number_literal "10")) (; ";")) (if_statement "if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }" (if "if") (parenthesized_expression "((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0))" (( "(") (binary_expression "(*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)" (parenthesized_expression "(*param_2 != '\0')" (( "(") (binary_expression "*param_2 != '\0'" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)" (( "(") (comma_expression "iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0" (assignment_expression "iVar2 = FUN_0012ed10(param_1,param_2)" (identifier "iVar2") (= "=") (call_expression "FUN_0012ed10(param_1,param_2)" (identifier "FUN_0012ed10") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (, ",") (binary_expression "iVar2 < 0" (identifier "iVar2") (< "<") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);\n      uVar1 = 1;\n      goto LAB_0018bff5;\n    }" ({ "{") (expression_statement "FUN_0015ec39(param_1,1,"unknown database: %s",param_2);" (call_expression "FUN_0015ec39(param_1,1,"unknown database: %s",param_2)" (identifier "FUN_0015ec39") (argument_list "(param_1,1,"unknown database: %s",param_2)" (( "(") (identifier "param_1") (, ",") (number_literal "1") (, ",") (string_literal ""unknown database: %s"" (" """) (string_content "unknown database: %s") (" """)) (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "uVar1 = 1;" (assignment_expression "uVar1 = 1" (identifier "uVar1") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0018bff5;" (goto "goto") (statement_identifier "LAB_0018bff5") (; ";")) (} "}"))) (} "}")))) (expression_statement "*(undefined4 *)(param_1 + 0x248) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x248) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x248)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x248)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x248)" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar1 = FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5);" (assignment_expression "uVar1 = FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5)" (identifier "uVar1") (= "=") (call_expression "FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5)" (identifier "FUN_0018bdde") (argument_list "(param_1,iVar2,param_3,param_4,param_5)" (( "(") (identifier "param_1") (, ",") (identifier "iVar2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "FUN_001422f4(param_1,uVar1);" (call_expression "FUN_001422f4(param_1,uVar1)" (identifier "FUN_001422f4") (argument_list "(param_1,uVar1)" (( "(") (identifier "param_1") (, ",") (identifier "uVar1") () ")"))) (; ";")) (labeled_statement "LAB_0018bff5:\n  uVar1 = FUN_00142331(param_1,uVar1);" (statement_identifier "LAB_0018bff5") (: ":") (expression_statement "uVar1 = FUN_00142331(param_1,uVar1);" (assignment_expression "uVar1 = FUN_00142331(param_1,uVar1)" (identifier "uVar1") (= "=") (call_expression "FUN_00142331(param_1,uVar1)" (identifier "FUN_00142331") (argument_list "(param_1,uVar1)" (( "(") (identifier "param_1") (, ",") (identifier "uVar1") () ")")))) (; ";"))) (if_statement "if (*(int *)(param_1 + 0xb8) == 0) {\n    *(undefined4 *)(param_1 + 0x170) = 0;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0xb8) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xb8) == 0" (pointer_expression "*(int *)(param_1 + 0xb8)" (* "*") (cast_expression "(int *)(param_1 + 0xb8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb8)" (( "(") (binary_expression "param_1 + 0xb8" (identifier "param_1") (+ "+") (number_literal "0xb8")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined4 *)(param_1 + 0x170) = 0;\n  }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x170) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x170) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x170)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x170)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x170)" (( "(") (binary_expression "param_1 + 0x170" (identifier "param_1") (+ "+") (number_literal "0x170")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "FUN_0012a8f6(*(undefined8 *)(param_1 + 0x18));" (call_expression "FUN_0012a8f6(*(undefined8 *)(param_1 + 0x18))" (identifier "FUN_0012a8f6") (argument_list "(*(undefined8 *)(param_1 + 0x18))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) () ")"))) (; ";")) (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}")))

int function_1(type_1 *db,char *var_4,int eMode,int *var_1,int *var_2)

{
  int var_6;
  
  if (var_1 != (int *)0x0) {
    *var_1 = -1;
  }
  if (var_2 != (int *)0x0) {
    *var_2 = -1;
  }
  if (3 < (type_2)eMode) {
    return 0x15;
  }
  var_3(db->mutex);
  if (var_4 == (char *)0x0) {
    var_6 = 10;
  }
  else {
    var_6 = 10;
    if ((*var_4 != '\0') && (var_6 = var_5(db,var_4), var_6 < 0)) {
      var_7(db,1,"unknown database: %s",var_4);
      var_6 = 1;
      goto LAB_0018bff5;
    }
  }
  (db->busyHandler).nBusy = 0;
  var_6 = var_8(db,var_6,eMode,var_1,var_2);
  var_9(db,var_6);
LAB_0018bff5:
  var_6 = var_10(db,var_6);
  if (db->nVdbeActive == 0) {
    (db->u1).isInterrupted = 0;
  }
  var_11(db->mutex);
  return var_6;
}


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

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

{
  undefined4 uVar1;
  int iVar2;
  
  if (param_4 != (undefined4 *)0x0) {
    *param_4 = 0xffffffff;
  }
  if (param_5 != (undefined4 *)0x0) {
    *param_5 = 0xffffffff;
  }
  if (3 < param_3) {
    return 0x15;
  }
  FUN_0012a8c7(*(undefined8 *)(param_1 + 0x18));
  if (param_2 == (char *)0x0) {
    iVar2 = 10;
  }
  else {
    iVar2 = 10;
    if ((*param_2 != '\0') && (iVar2 = FUN_0012ed10(param_1,param_2), iVar2 < 0)) {
      FUN_0015ec39(param_1,1,"unknown database: %s",param_2);
      uVar1 = 1;
      goto LAB_0018bff5;
    }
  }
  *(undefined4 *)(param_1 + 0x248) = 0;
  uVar1 = FUN_0018bdde(param_1,iVar2,param_3,param_4,param_5);
  FUN_001422f4(param_1,uVar1);
LAB_0018bff5:
  uVar1 = FUN_00142331(param_1,uVar1);
  if (*(int *)(param_1 + 0xb8) == 0) {
    *(undefined4 *)(param_1 + 0x170) = 0;
  }
  FUN_0012a8f6(*(undefined8 *)(param_1 + 0x18));
  return uVar1;
}

