
/* WARNING: Unknown calling convention */

int sqlite3MutexInit(void)

{
  int iVar1;
  undefined1 *puVar2;
  
  if (sqlite3Config.mutex.xMutexAlloc == (_func_sqlite3_mutex_ptr_int *)0x0) {
    puVar2 = sMutex_10929;
    if (sqlite3Config.bCoreMutex == '\0') {
      puVar2 = (undefined1 *)&sMutex_10427;
    }
    sqlite3Config.mutex.xMutexInit = *(_func_int **)puVar2;
    sqlite3Config.mutex.xMutexEnd = *(_func_int **)((long)puVar2 + 8);
    sqlite3Config.mutex.xMutexFree = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x18);
    sqlite3Config.mutex.xMutexEnter = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x20);
    sqlite3Config.mutex.xMutexTry = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x28);
    sqlite3Config.mutex.xMutexLeave = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x30);
    sqlite3Config.mutex.xMutexHeld = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x38);
    sqlite3Config.mutex.xMutexNotheld = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x40);
    sqlite3Config.mutex.xMutexAlloc = *(_func_sqlite3_mutex_ptr_int **)((long)puVar2 + 0x10);
  }
  iVar1 = (*sqlite3Config.mutex.xMutexInit)();
  return iVar1;
}



void FUN_001193e6(void)

{
  undefined **ppuVar1;
  
  if (DAT_003b05f0 == (undefined *)0x0) {
    ppuVar1 = &PTR_FUN_003ae880;
    if (DAT_003b0584 == '\0') {
      ppuVar1 = &PTR_FUN_003ae820;
    }
    DAT_003b05e0 = (code *)*ppuVar1;
    DAT_003b05e8 = ppuVar1[1];
    DAT_003b05f8 = ppuVar1[3];
    DAT_003b0600 = ppuVar1[4];
    DAT_003b0608 = ppuVar1[5];
    DAT_003b0610 = ppuVar1[6];
    DAT_003b0618 = ppuVar1[7];
    DAT_003b0620 = ppuVar1[8];
    DAT_003b05f0 = ppuVar1[2];
  }
  (*DAT_003b05e0)();
  return;
}


SUB RSP,0x8
CMP qword ptr [0x003b05f0],0x0
JZ 0x00119402
CALL qword ptr [0x003b05e0]
MFENCE
ADD RSP,0x8
RET
CMP byte ptr [0x003b0584],0x0
LEA RAX,[0x3ae880]
LEA RDX,[0x3ae820]
CMOVZ RAX,RDX
MOV RDX,qword ptr [RAX]
MOV qword ptr [0x003b05e0],RDX
MOV RDX,qword ptr [RAX + 0x8]
MOV qword ptr [0x003b05e8],RDX
MOV RDX,qword ptr [RAX + 0x18]
MOV qword ptr [0x003b05f8],RDX
MOV RDX,qword ptr [RAX + 0x20]
MOV qword ptr [0x003b0600],RDX
MOV RDX,qword ptr [RAX + 0x28]
MOV qword ptr [0x003b0608],RDX
MOV RDX,qword ptr [RAX + 0x30]
MOV qword ptr [0x003b0610],RDX
MOV RDX,qword ptr [RAX + 0x38]
MOV qword ptr [0x003b0618],RDX
MOV RDX,qword ptr [RAX + 0x40]
MOV qword ptr [0x003b0620],RDX
MFENCE
MOV RAX,qword ptr [RAX + 0x10]
MOV qword ptr [0x003b05f0],RAX
JMP 0x001193f4
(translation_unit "void FUN_001193e6(void)\n\n{\n  undefined **ppuVar1;\n  \n  if (DAT_003b05f0 == (undefined *)0x0) {\n    ppuVar1 = &PTR_FUN_003ae880;\n    if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }\n    DAT_003b05e0 = (code *)*ppuVar1;\n    DAT_003b05e8 = ppuVar1[1];\n    DAT_003b05f8 = ppuVar1[3];\n    DAT_003b0600 = ppuVar1[4];\n    DAT_003b0608 = ppuVar1[5];\n    DAT_003b0610 = ppuVar1[6];\n    DAT_003b0618 = ppuVar1[7];\n    DAT_003b0620 = ppuVar1[8];\n    DAT_003b05f0 = ppuVar1[2];\n  }\n  (*DAT_003b05e0)();\n  return;\n}\n\n" (function_definition "void FUN_001193e6(void)\n\n{\n  undefined **ppuVar1;\n  \n  if (DAT_003b05f0 == (undefined *)0x0) {\n    ppuVar1 = &PTR_FUN_003ae880;\n    if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }\n    DAT_003b05e0 = (code *)*ppuVar1;\n    DAT_003b05e8 = ppuVar1[1];\n    DAT_003b05f8 = ppuVar1[3];\n    DAT_003b0600 = ppuVar1[4];\n    DAT_003b0608 = ppuVar1[5];\n    DAT_003b0610 = ppuVar1[6];\n    DAT_003b0618 = ppuVar1[7];\n    DAT_003b0620 = ppuVar1[8];\n    DAT_003b05f0 = ppuVar1[2];\n  }\n  (*DAT_003b05e0)();\n  return;\n}" primitive_type (function_declarator "FUN_001193e6(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined **ppuVar1;\n  \n  if (DAT_003b05f0 == (undefined *)0x0) {\n    ppuVar1 = &PTR_FUN_003ae880;\n    if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }\n    DAT_003b05e0 = (code *)*ppuVar1;\n    DAT_003b05e8 = ppuVar1[1];\n    DAT_003b05f8 = ppuVar1[3];\n    DAT_003b0600 = ppuVar1[4];\n    DAT_003b0608 = ppuVar1[5];\n    DAT_003b0610 = ppuVar1[6];\n    DAT_003b0618 = ppuVar1[7];\n    DAT_003b0620 = ppuVar1[8];\n    DAT_003b05f0 = ppuVar1[2];\n  }\n  (*DAT_003b05e0)();\n  return;\n}" { (declaration "undefined **ppuVar1;" type_identifier (pointer_declarator "**ppuVar1" * (pointer_declarator "*ppuVar1" * identifier)) ;) (if_statement "if (DAT_003b05f0 == (undefined *)0x0) {\n    ppuVar1 = &PTR_FUN_003ae880;\n    if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }\n    DAT_003b05e0 = (code *)*ppuVar1;\n    DAT_003b05e8 = ppuVar1[1];\n    DAT_003b05f8 = ppuVar1[3];\n    DAT_003b0600 = ppuVar1[4];\n    DAT_003b0608 = ppuVar1[5];\n    DAT_003b0610 = ppuVar1[6];\n    DAT_003b0618 = ppuVar1[7];\n    DAT_003b0620 = ppuVar1[8];\n    DAT_003b05f0 = ppuVar1[2];\n  }" if (parenthesized_expression "(DAT_003b05f0 == (undefined *)0x0)" ( (binary_expression "DAT_003b05f0 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    ppuVar1 = &PTR_FUN_003ae880;\n    if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }\n    DAT_003b05e0 = (code *)*ppuVar1;\n    DAT_003b05e8 = ppuVar1[1];\n    DAT_003b05f8 = ppuVar1[3];\n    DAT_003b0600 = ppuVar1[4];\n    DAT_003b0608 = ppuVar1[5];\n    DAT_003b0610 = ppuVar1[6];\n    DAT_003b0618 = ppuVar1[7];\n    DAT_003b0620 = ppuVar1[8];\n    DAT_003b05f0 = ppuVar1[2];\n  }" { (expression_statement "ppuVar1 = &PTR_FUN_003ae880;" (assignment_expression "ppuVar1 = &PTR_FUN_003ae880" identifier = (pointer_expression "&PTR_FUN_003ae880" & identifier)) ;) (if_statement "if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }" if (parenthesized_expression "(DAT_003b0584 == '\0')" ( (binary_expression "DAT_003b0584 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      ppuVar1 = &PTR_FUN_003ae820;\n    }" { (expression_statement "ppuVar1 = &PTR_FUN_003ae820;" (assignment_expression "ppuVar1 = &PTR_FUN_003ae820" identifier = (pointer_expression "&PTR_FUN_003ae820" & identifier)) ;) })) (expression_statement "DAT_003b05e0 = (code *)*ppuVar1;" (assignment_expression "DAT_003b05e0 = (code *)*ppuVar1" identifier = (cast_expression "(code *)*ppuVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*ppuVar1" * identifier))) ;) (expression_statement "DAT_003b05e8 = ppuVar1[1];" (assignment_expression "DAT_003b05e8 = ppuVar1[1]" identifier = (subscript_expression "ppuVar1[1]" identifier [ number_literal ])) ;) (expression_statement "DAT_003b05f8 = ppuVar1[3];" (assignment_expression "DAT_003b05f8 = ppuVar1[3]" identifier = (subscript_expression "ppuVar1[3]" identifier [ number_literal ])) ;) (expression_statement "DAT_003b0600 = ppuVar1[4];" (assignment_expression "DAT_003b0600 = ppuVar1[4]" identifier = (subscript_expression "ppuVar1[4]" identifier [ number_literal ])) ;) (expression_statement "DAT_003b0608 = ppuVar1[5];" (assignment_expression "DAT_003b0608 = ppuVar1[5]" identifier = (subscript_expression "ppuVar1[5]" identifier [ number_literal ])) ;) (expression_statement "DAT_003b0610 = ppuVar1[6];" (assignment_expression "DAT_003b0610 = ppuVar1[6]" identifier = (subscript_expression "ppuVar1[6]" identifier [ number_literal ])) ;) (expression_statement "DAT_003b0618 = ppuVar1[7];" (assignment_expression "DAT_003b0618 = ppuVar1[7]" identifier = (subscript_expression "ppuVar1[7]" identifier [ number_literal ])) ;) (expression_statement "DAT_003b0620 = ppuVar1[8];" (assignment_expression "DAT_003b0620 = ppuVar1[8]" identifier = (subscript_expression "ppuVar1[8]" identifier [ number_literal ])) ;) (expression_statement "DAT_003b05f0 = ppuVar1[2];" (assignment_expression "DAT_003b05f0 = ppuVar1[2]" identifier = (subscript_expression "ppuVar1[2]" identifier [ number_literal ])) ;) })) (expression_statement "(*DAT_003b05e0)();" (call_expression "(*DAT_003b05e0)()" (parenthesized_expression "(*DAT_003b05e0)" ( (pointer_expression "*DAT_003b05e0" * identifier) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nint sqlite3MutexInit(void)\n\n{\n  int iVar1;\n  undefined1 *puVar2;\n  \n  if (sqlite3Config.mutex.xMutexAlloc == (_func_sqlite3_mutex_ptr_int *)0x0) {\n    puVar2 = sMutex_10929;\n    if (sqlite3Config.bCoreMutex == '\0') {\n      puVar2 = (undefined1 *)&sMutex_10427;\n    }\n    sqlite3Config.mutex.xMutexInit = *(_func_int **)puVar2;\n    sqlite3Config.mutex.xMutexEnd = *(_func_int **)((long)puVar2 + 8);\n    sqlite3Config.mutex.xMutexFree = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x18);\n    sqlite3Config.mutex.xMutexEnter = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x20);\n    sqlite3Config.mutex.xMutexTry = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x28);\n    sqlite3Config.mutex.xMutexLeave = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x30);\n    sqlite3Config.mutex.xMutexHeld = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x38);\n    sqlite3Config.mutex.xMutexNotheld = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x40);\n    sqlite3Config.mutex.xMutexAlloc = *(_func_sqlite3_mutex_ptr_int **)((long)puVar2 + 0x10);\n  }\n  iVar1 = (*sqlite3Config.mutex.xMutexInit)();\n  return iVar1;\n}\n\n" comment (function_definition "int sqlite3MutexInit(void)\n\n{\n  int iVar1;\n  undefined1 *puVar2;\n  \n  if (sqlite3Config.mutex.xMutexAlloc == (_func_sqlite3_mutex_ptr_int *)0x0) {\n    puVar2 = sMutex_10929;\n    if (sqlite3Config.bCoreMutex == '\0') {\n      puVar2 = (undefined1 *)&sMutex_10427;\n    }\n    sqlite3Config.mutex.xMutexInit = *(_func_int **)puVar2;\n    sqlite3Config.mutex.xMutexEnd = *(_func_int **)((long)puVar2 + 8);\n    sqlite3Config.mutex.xMutexFree = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x18);\n    sqlite3Config.mutex.xMutexEnter = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x20);\n    sqlite3Config.mutex.xMutexTry = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x28);\n    sqlite3Config.mutex.xMutexLeave = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x30);\n    sqlite3Config.mutex.xMutexHeld = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x38);\n    sqlite3Config.mutex.xMutexNotheld = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x40);\n    sqlite3Config.mutex.xMutexAlloc = *(_func_sqlite3_mutex_ptr_int **)((long)puVar2 + 0x10);\n  }\n  iVar1 = (*sqlite3Config.mutex.xMutexInit)();\n  return iVar1;\n}" primitive_type (function_declarator "sqlite3MutexInit(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  undefined1 *puVar2;\n  \n  if (sqlite3Config.mutex.xMutexAlloc == (_func_sqlite3_mutex_ptr_int *)0x0) {\n    puVar2 = sMutex_10929;\n    if (sqlite3Config.bCoreMutex == '\0') {\n      puVar2 = (undefined1 *)&sMutex_10427;\n    }\n    sqlite3Config.mutex.xMutexInit = *(_func_int **)puVar2;\n    sqlite3Config.mutex.xMutexEnd = *(_func_int **)((long)puVar2 + 8);\n    sqlite3Config.mutex.xMutexFree = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x18);\n    sqlite3Config.mutex.xMutexEnter = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x20);\n    sqlite3Config.mutex.xMutexTry = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x28);\n    sqlite3Config.mutex.xMutexLeave = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x30);\n    sqlite3Config.mutex.xMutexHeld = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x38);\n    sqlite3Config.mutex.xMutexNotheld = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x40);\n    sqlite3Config.mutex.xMutexAlloc = *(_func_sqlite3_mutex_ptr_int **)((long)puVar2 + 0x10);\n  }\n  iVar1 = (*sqlite3Config.mutex.xMutexInit)();\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (if_statement "if (sqlite3Config.mutex.xMutexAlloc == (_func_sqlite3_mutex_ptr_int *)0x0) {\n    puVar2 = sMutex_10929;\n    if (sqlite3Config.bCoreMutex == '\0') {\n      puVar2 = (undefined1 *)&sMutex_10427;\n    }\n    sqlite3Config.mutex.xMutexInit = *(_func_int **)puVar2;\n    sqlite3Config.mutex.xMutexEnd = *(_func_int **)((long)puVar2 + 8);\n    sqlite3Config.mutex.xMutexFree = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x18);\n    sqlite3Config.mutex.xMutexEnter = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x20);\n    sqlite3Config.mutex.xMutexTry = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x28);\n    sqlite3Config.mutex.xMutexLeave = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x30);\n    sqlite3Config.mutex.xMutexHeld = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x38);\n    sqlite3Config.mutex.xMutexNotheld = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x40);\n    sqlite3Config.mutex.xMutexAlloc = *(_func_sqlite3_mutex_ptr_int **)((long)puVar2 + 0x10);\n  }" if (parenthesized_expression "(sqlite3Config.mutex.xMutexAlloc == (_func_sqlite3_mutex_ptr_int *)0x0)" ( (binary_expression "sqlite3Config.mutex.xMutexAlloc == (_func_sqlite3_mutex_ptr_int *)0x0" (field_expression "sqlite3Config.mutex.xMutexAlloc" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier) == (cast_expression "(_func_sqlite3_mutex_ptr_int *)0x0" ( (type_descriptor "_func_sqlite3_mutex_ptr_int *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar2 = sMutex_10929;\n    if (sqlite3Config.bCoreMutex == '\0') {\n      puVar2 = (undefined1 *)&sMutex_10427;\n    }\n    sqlite3Config.mutex.xMutexInit = *(_func_int **)puVar2;\n    sqlite3Config.mutex.xMutexEnd = *(_func_int **)((long)puVar2 + 8);\n    sqlite3Config.mutex.xMutexFree = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x18);\n    sqlite3Config.mutex.xMutexEnter = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x20);\n    sqlite3Config.mutex.xMutexTry = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x28);\n    sqlite3Config.mutex.xMutexLeave = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x30);\n    sqlite3Config.mutex.xMutexHeld = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x38);\n    sqlite3Config.mutex.xMutexNotheld = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x40);\n    sqlite3Config.mutex.xMutexAlloc = *(_func_sqlite3_mutex_ptr_int **)((long)puVar2 + 0x10);\n  }" { (expression_statement "puVar2 = sMutex_10929;" (assignment_expression "puVar2 = sMutex_10929" identifier = identifier) ;) (if_statement "if (sqlite3Config.bCoreMutex == '\0') {\n      puVar2 = (undefined1 *)&sMutex_10427;\n    }" if (parenthesized_expression "(sqlite3Config.bCoreMutex == '\0')" ( (binary_expression "sqlite3Config.bCoreMutex == '\0'" (field_expression "sqlite3Config.bCoreMutex" identifier . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      puVar2 = (undefined1 *)&sMutex_10427;\n    }" { (expression_statement "puVar2 = (undefined1 *)&sMutex_10427;" (assignment_expression "puVar2 = (undefined1 *)&sMutex_10427" identifier = (cast_expression "(undefined1 *)&sMutex_10427" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&sMutex_10427" & identifier))) ;) })) (expression_statement "sqlite3Config.mutex.xMutexInit = *(_func_int **)puVar2;" (assignment_expression "sqlite3Config.mutex.xMutexInit = *(_func_int **)puVar2" (field_expression "sqlite3Config.mutex.xMutexInit" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier) = (pointer_expression "*(_func_int **)puVar2" * (cast_expression "(_func_int **)puVar2" ( (type_descriptor "_func_int **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "sqlite3Config.mutex.xMutexEnd = *(_func_int **)((long)puVar2 + 8);" (assignment_expression "sqlite3Config.mutex.xMutexEnd = *(_func_int **)((long)puVar2 + 8)" (field_expression "sqlite3Config.mutex.xMutexEnd" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier) = (pointer_expression "*(_func_int **)((long)puVar2 + 8)" * (cast_expression "(_func_int **)((long)puVar2 + 8)" ( (type_descriptor "_func_int **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)puVar2 + 8)" ( (binary_expression "(long)puVar2 + 8" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "sqlite3Config.mutex.xMutexFree = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x18);" (assignment_expression "sqlite3Config.mutex.xMutexFree = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x18)" (field_expression "sqlite3Config.mutex.xMutexFree" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier) = (pointer_expression "*(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x18)" * (cast_expression "(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x18)" ( (type_descriptor "_func_void_sqlite3_mutex_ptr **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)puVar2 + 0x18)" ( (binary_expression "(long)puVar2 + 0x18" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "sqlite3Config.mutex.xMutexEnter = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x20);" (assignment_expression "sqlite3Config.mutex.xMutexEnter = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x20)" (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier) = (pointer_expression "*(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x20)" * (cast_expression "(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x20)" ( (type_descriptor "_func_void_sqlite3_mutex_ptr **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)puVar2 + 0x20)" ( (binary_expression "(long)puVar2 + 0x20" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "sqlite3Config.mutex.xMutexTry = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x28);" (assignment_expression "sqlite3Config.mutex.xMutexTry = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x28)" (field_expression "sqlite3Config.mutex.xMutexTry" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier) = (pointer_expression "*(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x28)" * (cast_expression "(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x28)" ( (type_descriptor "_func_int_sqlite3_mutex_ptr **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)puVar2 + 0x28)" ( (binary_expression "(long)puVar2 + 0x28" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "sqlite3Config.mutex.xMutexLeave = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x30);" (assignment_expression "sqlite3Config.mutex.xMutexLeave = *(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x30)" (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier) = (pointer_expression "*(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x30)" * (cast_expression "(_func_void_sqlite3_mutex_ptr **)((long)puVar2 + 0x30)" ( (type_descriptor "_func_void_sqlite3_mutex_ptr **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)puVar2 + 0x30)" ( (binary_expression "(long)puVar2 + 0x30" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "sqlite3Config.mutex.xMutexHeld = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x38);" (assignment_expression "sqlite3Config.mutex.xMutexHeld = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x38)" (field_expression "sqlite3Config.mutex.xMutexHeld" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier) = (pointer_expression "*(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x38)" * (cast_expression "(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x38)" ( (type_descriptor "_func_int_sqlite3_mutex_ptr **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)puVar2 + 0x38)" ( (binary_expression "(long)puVar2 + 0x38" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "sqlite3Config.mutex.xMutexNotheld = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x40);" (assignment_expression "sqlite3Config.mutex.xMutexNotheld = *(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x40)" (field_expression "sqlite3Config.mutex.xMutexNotheld" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier) = (pointer_expression "*(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x40)" * (cast_expression "(_func_int_sqlite3_mutex_ptr **)((long)puVar2 + 0x40)" ( (type_descriptor "_func_int_sqlite3_mutex_ptr **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)puVar2 + 0x40)" ( (binary_expression "(long)puVar2 + 0x40" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "sqlite3Config.mutex.xMutexAlloc = *(_func_sqlite3_mutex_ptr_int **)((long)puVar2 + 0x10);" (assignment_expression "sqlite3Config.mutex.xMutexAlloc = *(_func_sqlite3_mutex_ptr_int **)((long)puVar2 + 0x10)" (field_expression "sqlite3Config.mutex.xMutexAlloc" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier) = (pointer_expression "*(_func_sqlite3_mutex_ptr_int **)((long)puVar2 + 0x10)" * (cast_expression "(_func_sqlite3_mutex_ptr_int **)((long)puVar2 + 0x10)" ( (type_descriptor "_func_sqlite3_mutex_ptr_int **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)puVar2 + 0x10)" ( (binary_expression "(long)puVar2 + 0x10" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) })) (expression_statement "iVar1 = (*sqlite3Config.mutex.xMutexInit)();" (assignment_expression "iVar1 = (*sqlite3Config.mutex.xMutexInit)()" identifier = (call_expression "(*sqlite3Config.mutex.xMutexInit)()" (parenthesized_expression "(*sqlite3Config.mutex.xMutexInit)" ( (pointer_expression "*sqlite3Config.mutex.xMutexInit" * (field_expression "sqlite3Config.mutex.xMutexInit" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "()" ( )))) ;) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit "void FUN_001193e6(void)\n\n{\n  undefined **ppuVar1;\n  \n  if (DAT_003b05f0 == (undefined *)0x0) {\n    ppuVar1 = &PTR_FUN_003ae880;\n    if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }\n    DAT_003b05e0 = (code *)*ppuVar1;\n    DAT_003b05e8 = ppuVar1[1];\n    DAT_003b05f8 = ppuVar1[3];\n    DAT_003b0600 = ppuVar1[4];\n    DAT_003b0608 = ppuVar1[5];\n    DAT_003b0610 = ppuVar1[6];\n    DAT_003b0618 = ppuVar1[7];\n    DAT_003b0620 = ppuVar1[8];\n    DAT_003b05f0 = ppuVar1[2];\n  }\n  (*DAT_003b05e0)();\n  return;\n}\n\n" (function_definition "void FUN_001193e6(void)\n\n{\n  undefined **ppuVar1;\n  \n  if (DAT_003b05f0 == (undefined *)0x0) {\n    ppuVar1 = &PTR_FUN_003ae880;\n    if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }\n    DAT_003b05e0 = (code *)*ppuVar1;\n    DAT_003b05e8 = ppuVar1[1];\n    DAT_003b05f8 = ppuVar1[3];\n    DAT_003b0600 = ppuVar1[4];\n    DAT_003b0608 = ppuVar1[5];\n    DAT_003b0610 = ppuVar1[6];\n    DAT_003b0618 = ppuVar1[7];\n    DAT_003b0620 = ppuVar1[8];\n    DAT_003b05f0 = ppuVar1[2];\n  }\n  (*DAT_003b05e0)();\n  return;\n}" primitive_type (function_declarator "FUN_001193e6(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined **ppuVar1;\n  \n  if (DAT_003b05f0 == (undefined *)0x0) {\n    ppuVar1 = &PTR_FUN_003ae880;\n    if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }\n    DAT_003b05e0 = (code *)*ppuVar1;\n    DAT_003b05e8 = ppuVar1[1];\n    DAT_003b05f8 = ppuVar1[3];\n    DAT_003b0600 = ppuVar1[4];\n    DAT_003b0608 = ppuVar1[5];\n    DAT_003b0610 = ppuVar1[6];\n    DAT_003b0618 = ppuVar1[7];\n    DAT_003b0620 = ppuVar1[8];\n    DAT_003b05f0 = ppuVar1[2];\n  }\n  (*DAT_003b05e0)();\n  return;\n}" { (declaration "undefined **ppuVar1;" type_identifier (pointer_declarator "**ppuVar1" * (pointer_declarator "*ppuVar1" * identifier)) ;) (if_statement "if (DAT_003b05f0 == (undefined *)0x0) {\n    ppuVar1 = &PTR_FUN_003ae880;\n    if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }\n    DAT_003b05e0 = (code *)*ppuVar1;\n    DAT_003b05e8 = ppuVar1[1];\n    DAT_003b05f8 = ppuVar1[3];\n    DAT_003b0600 = ppuVar1[4];\n    DAT_003b0608 = ppuVar1[5];\n    DAT_003b0610 = ppuVar1[6];\n    DAT_003b0618 = ppuVar1[7];\n    DAT_003b0620 = ppuVar1[8];\n    DAT_003b05f0 = ppuVar1[2];\n  }" if (parenthesized_expression "(DAT_003b05f0 == (undefined *)0x0)" ( (binary_expression "DAT_003b05f0 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    ppuVar1 = &PTR_FUN_003ae880;\n    if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }\n    DAT_003b05e0 = (code *)*ppuVar1;\n    DAT_003b05e8 = ppuVar1[1];\n    DAT_003b05f8 = ppuVar1[3];\n    DAT_003b0600 = ppuVar1[4];\n    DAT_003b0608 = ppuVar1[5];\n    DAT_003b0610 = ppuVar1[6];\n    DAT_003b0618 = ppuVar1[7];\n    DAT_003b0620 = ppuVar1[8];\n    DAT_003b05f0 = ppuVar1[2];\n  }" { (expression_statement "ppuVar1 = &PTR_FUN_003ae880;" (assignment_expression "ppuVar1 = &PTR_FUN_003ae880" identifier = (pointer_expression "&PTR_FUN_003ae880" & identifier)) ;) (if_statement "if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }" if (parenthesized_expression "(DAT_003b0584 == '\0')" ( (binary_expression "DAT_003b0584 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      ppuVar1 = &PTR_FUN_003ae820;\n    }" { (expression_statement "ppuVar1 = &PTR_FUN_003ae820;" (assignment_expression "ppuVar1 = &PTR_FUN_003ae820" identifier = (pointer_expression "&PTR_FUN_003ae820" & identifier)) ;) })) (expression_statement "DAT_003b05e0 = (code *)*ppuVar1;" (assignment_expression "DAT_003b05e0 = (code *)*ppuVar1" identifier = (cast_expression "(code *)*ppuVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*ppuVar1" * identifier))) ;) (expression_statement "DAT_003b05e8 = ppuVar1[1];" (assignment_expression "DAT_003b05e8 = ppuVar1[1]" identifier = (subscript_expression "ppuVar1[1]" identifier [ number_literal ])) ;) (expression_statement "DAT_003b05f8 = ppuVar1[3];" (assignment_expression "DAT_003b05f8 = ppuVar1[3]" identifier = (subscript_expression "ppuVar1[3]" identifier [ number_literal ])) ;) (expression_statement "DAT_003b0600 = ppuVar1[4];" (assignment_expression "DAT_003b0600 = ppuVar1[4]" identifier = (subscript_expression "ppuVar1[4]" identifier [ number_literal ])) ;) (expression_statement "DAT_003b0608 = ppuVar1[5];" (assignment_expression "DAT_003b0608 = ppuVar1[5]" identifier = (subscript_expression "ppuVar1[5]" identifier [ number_literal ])) ;) (expression_statement "DAT_003b0610 = ppuVar1[6];" (assignment_expression "DAT_003b0610 = ppuVar1[6]" identifier = (subscript_expression "ppuVar1[6]" identifier [ number_literal ])) ;) (expression_statement "DAT_003b0618 = ppuVar1[7];" (assignment_expression "DAT_003b0618 = ppuVar1[7]" identifier = (subscript_expression "ppuVar1[7]" identifier [ number_literal ])) ;) (expression_statement "DAT_003b0620 = ppuVar1[8];" (assignment_expression "DAT_003b0620 = ppuVar1[8]" identifier = (subscript_expression "ppuVar1[8]" identifier [ number_literal ])) ;) (expression_statement "DAT_003b05f0 = ppuVar1[2];" (assignment_expression "DAT_003b05f0 = ppuVar1[2]" identifier = (subscript_expression "ppuVar1[2]" identifier [ number_literal ])) ;) })) (expression_statement "(*DAT_003b05e0)();" (call_expression "(*DAT_003b05e0)()" (parenthesized_expression "(*DAT_003b05e0)" ( (pointer_expression "*DAT_003b05e0" * identifier) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (return_statement return ;) })))
(function_definition "void FUN_001193e6(void)\n\n{\n  undefined **ppuVar1;\n  \n  if (DAT_003b05f0 == (undefined *)0x0) {\n    ppuVar1 = &PTR_FUN_003ae880;\n    if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }\n    DAT_003b05e0 = (code *)*ppuVar1;\n    DAT_003b05e8 = ppuVar1[1];\n    DAT_003b05f8 = ppuVar1[3];\n    DAT_003b0600 = ppuVar1[4];\n    DAT_003b0608 = ppuVar1[5];\n    DAT_003b0610 = ppuVar1[6];\n    DAT_003b0618 = ppuVar1[7];\n    DAT_003b0620 = ppuVar1[8];\n    DAT_003b05f0 = ppuVar1[2];\n  }\n  (*DAT_003b05e0)();\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001193e6(void)" (identifier "FUN_001193e6") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  undefined **ppuVar1;\n  \n  if (DAT_003b05f0 == (undefined *)0x0) {\n    ppuVar1 = &PTR_FUN_003ae880;\n    if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }\n    DAT_003b05e0 = (code *)*ppuVar1;\n    DAT_003b05e8 = ppuVar1[1];\n    DAT_003b05f8 = ppuVar1[3];\n    DAT_003b0600 = ppuVar1[4];\n    DAT_003b0608 = ppuVar1[5];\n    DAT_003b0610 = ppuVar1[6];\n    DAT_003b0618 = ppuVar1[7];\n    DAT_003b0620 = ppuVar1[8];\n    DAT_003b05f0 = ppuVar1[2];\n  }\n  (*DAT_003b05e0)();\n  return;\n}" ({ "{") (declaration "undefined **ppuVar1;" (type_identifier "undefined") (pointer_declarator "**ppuVar1" (* "*") (pointer_declarator "*ppuVar1" (* "*") (identifier "ppuVar1"))) (; ";")) (if_statement "if (DAT_003b05f0 == (undefined *)0x0) {\n    ppuVar1 = &PTR_FUN_003ae880;\n    if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }\n    DAT_003b05e0 = (code *)*ppuVar1;\n    DAT_003b05e8 = ppuVar1[1];\n    DAT_003b05f8 = ppuVar1[3];\n    DAT_003b0600 = ppuVar1[4];\n    DAT_003b0608 = ppuVar1[5];\n    DAT_003b0610 = ppuVar1[6];\n    DAT_003b0618 = ppuVar1[7];\n    DAT_003b0620 = ppuVar1[8];\n    DAT_003b05f0 = ppuVar1[2];\n  }" (if "if") (parenthesized_expression "(DAT_003b05f0 == (undefined *)0x0)" (( "(") (binary_expression "DAT_003b05f0 == (undefined *)0x0" (identifier "DAT_003b05f0") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    ppuVar1 = &PTR_FUN_003ae880;\n    if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }\n    DAT_003b05e0 = (code *)*ppuVar1;\n    DAT_003b05e8 = ppuVar1[1];\n    DAT_003b05f8 = ppuVar1[3];\n    DAT_003b0600 = ppuVar1[4];\n    DAT_003b0608 = ppuVar1[5];\n    DAT_003b0610 = ppuVar1[6];\n    DAT_003b0618 = ppuVar1[7];\n    DAT_003b0620 = ppuVar1[8];\n    DAT_003b05f0 = ppuVar1[2];\n  }" ({ "{") (expression_statement "ppuVar1 = &PTR_FUN_003ae880;" (assignment_expression "ppuVar1 = &PTR_FUN_003ae880" (identifier "ppuVar1") (= "=") (pointer_expression "&PTR_FUN_003ae880" (& "&") (identifier "PTR_FUN_003ae880"))) (; ";")) (if_statement "if (DAT_003b0584 == '\0') {\n      ppuVar1 = &PTR_FUN_003ae820;\n    }" (if "if") (parenthesized_expression "(DAT_003b0584 == '\0')" (( "(") (binary_expression "DAT_003b0584 == '\0'" (identifier "DAT_003b0584") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      ppuVar1 = &PTR_FUN_003ae820;\n    }" ({ "{") (expression_statement "ppuVar1 = &PTR_FUN_003ae820;" (assignment_expression "ppuVar1 = &PTR_FUN_003ae820" (identifier "ppuVar1") (= "=") (pointer_expression "&PTR_FUN_003ae820" (& "&") (identifier "PTR_FUN_003ae820"))) (; ";")) (} "}"))) (expression_statement "DAT_003b05e0 = (code *)*ppuVar1;" (assignment_expression "DAT_003b05e0 = (code *)*ppuVar1" (identifier "DAT_003b05e0") (= "=") (cast_expression "(code *)*ppuVar1" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*ppuVar1" (* "*") (identifier "ppuVar1")))) (; ";")) (expression_statement "DAT_003b05e8 = ppuVar1[1];" (assignment_expression "DAT_003b05e8 = ppuVar1[1]" (identifier "DAT_003b05e8") (= "=") (subscript_expression "ppuVar1[1]" (identifier "ppuVar1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "DAT_003b05f8 = ppuVar1[3];" (assignment_expression "DAT_003b05f8 = ppuVar1[3]" (identifier "DAT_003b05f8") (= "=") (subscript_expression "ppuVar1[3]" (identifier "ppuVar1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "DAT_003b0600 = ppuVar1[4];" (assignment_expression "DAT_003b0600 = ppuVar1[4]" (identifier "DAT_003b0600") (= "=") (subscript_expression "ppuVar1[4]" (identifier "ppuVar1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "DAT_003b0608 = ppuVar1[5];" (assignment_expression "DAT_003b0608 = ppuVar1[5]" (identifier "DAT_003b0608") (= "=") (subscript_expression "ppuVar1[5]" (identifier "ppuVar1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "DAT_003b0610 = ppuVar1[6];" (assignment_expression "DAT_003b0610 = ppuVar1[6]" (identifier "DAT_003b0610") (= "=") (subscript_expression "ppuVar1[6]" (identifier "ppuVar1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "DAT_003b0618 = ppuVar1[7];" (assignment_expression "DAT_003b0618 = ppuVar1[7]" (identifier "DAT_003b0618") (= "=") (subscript_expression "ppuVar1[7]" (identifier "ppuVar1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "DAT_003b0620 = ppuVar1[8];" (assignment_expression "DAT_003b0620 = ppuVar1[8]" (identifier "DAT_003b0620") (= "=") (subscript_expression "ppuVar1[8]" (identifier "ppuVar1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "DAT_003b05f0 = ppuVar1[2];" (assignment_expression "DAT_003b05f0 = ppuVar1[2]" (identifier "DAT_003b05f0") (= "=") (subscript_expression "ppuVar1[2]" (identifier "ppuVar1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (expression_statement "(*DAT_003b05e0)();" (call_expression "(*DAT_003b05e0)()" (parenthesized_expression "(*DAT_003b05e0)" (( "(") (pointer_expression "*DAT_003b05e0" (* "*") (identifier "DAT_003b05e0")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

int function_1(void)

{
  int iVar1;
  type_1 *puVar2;
  
  if (sqlite3Config.mutex.xMutexAlloc == (type_2 *)0x0) {
    puVar2 = sMutex_10929;
    if (sqlite3Config.bCoreMutex == '\0') {
      puVar2 = (type_1 *)&sMutex_10427;
    }
    sqlite3Config.mutex.xMutexInit = *(type_3 **)puVar2;
    sqlite3Config.mutex.xMutexEnd = *(type_3 **)((long)puVar2 + 8);
    sqlite3Config.mutex.xMutexFree = *(type_4 **)((long)puVar2 + 0x18);
    sqlite3Config.mutex.xMutexEnter = *(type_4 **)((long)puVar2 + 0x20);
    sqlite3Config.mutex.xMutexTry = *(type_5 **)((long)puVar2 + 0x28);
    sqlite3Config.mutex.xMutexLeave = *(type_4 **)((long)puVar2 + 0x30);
    sqlite3Config.mutex.xMutexHeld = *(type_5 **)((long)puVar2 + 0x38);
    sqlite3Config.mutex.xMutexNotheld = *(type_5 **)((long)puVar2 + 0x40);
    sqlite3Config.mutex.xMutexAlloc = *(type_2 **)((long)puVar2 + 0x10);
  }
  iVar1 = (*sqlite3Config.mutex.xMutexInit)();
  return iVar1;
}


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

void MASKED(void)

{
  undefined **ppuVar1;
  
  if (DAT_003b05f0 == (undefined *)0x0) {
    ppuVar1 = &PTR_FUN_003ae880;
    if (DAT_003b0584 == '\0') {
      ppuVar1 = &PTR_FUN_003ae820;
    }
    DAT_003b05e0 = (code *)*ppuVar1;
    DAT_003b05e8 = ppuVar1[1];
    DAT_003b05f8 = ppuVar1[3];
    DAT_003b0600 = ppuVar1[4];
    DAT_003b0608 = ppuVar1[5];
    DAT_003b0610 = ppuVar1[6];
    DAT_003b0618 = ppuVar1[7];
    DAT_003b0620 = ppuVar1[8];
    DAT_003b05f0 = ppuVar1[2];
  }
  (*DAT_003b05e0)();
  return;
}

