
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 sqlite3Fts5ConfigFree(Fts5Config *pConfig)

{
  char **ppcVar1;
  int iVar2;
  
  if (pConfig != (Fts5Config *)0x0) {
    if (pConfig->pTok != (Fts5Tokenizer *)0x0) {
      (*pConfig->pTokApi->xDelete)(pConfig->pTok);
    }
    sqlite3_free(pConfig->zDb);
    sqlite3_free(pConfig->zName);
    if (0 < pConfig->nCol) {
      iVar2 = 0;
      do {
        ppcVar1 = pConfig->azCol + iVar2;
        iVar2 = iVar2 + 1;
        sqlite3_free(*ppcVar1);
      } while (iVar2 < pConfig->nCol);
    }
    sqlite3_free(pConfig->azCol);
    sqlite3_free(pConfig->aPrefix);
    sqlite3_free(pConfig->zRank);
    sqlite3_free(pConfig->zRankArgs);
    sqlite3_free(pConfig->zContent);
    sqlite3_free(pConfig->zContentRowid);
    sqlite3_free(pConfig->zContentExprlist);
    sqlite3_free(pConfig);
  }
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 FUN_000326a0(int param_1)

{
  int iVar1;
  int iVar2;
  
  if (param_1 != 0) {
    if (*(int *)(param_1 + 0x38) != 0) {
      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));
    }
    FUN_00024cc0(*(undefined4 *)(param_1 + 4));
    FUN_00024cc0(*(undefined4 *)(param_1 + 8));
    if (0 < *(int *)(param_1 + 0xc)) {
      iVar2 = 0;
      do {
        iVar1 = iVar2 * 4;
        iVar2 = iVar2 + 1;
        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));
      } while (iVar2 < *(int *)(param_1 + 0xc));
    }
    FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));
    FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));
    FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));
    FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));
    FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));
    FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));
    FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));
    FUN_00024cc0(param_1);
  }
  return;
}


PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00014cf0
ADD EBX,0x11682c
TEST EAX,EAX
JZ 0x00032755
MOV ESI,EAX
MOV EAX,dword ptr [EAX + 0x38]
TEST EAX,EAX
JZ 0x000326cc
SUB ESP,0xc
MOV EDX,dword ptr [ESI + 0x3c]
PUSH EAX
CALL dword ptr [EDX + 0x4]
ADD ESP,0x10
SUB ESP,0xc
PUSH dword ptr [ESI + 0x4]
CALL 0x00024cc0
POP EAX
PUSH dword ptr [ESI + 0x8]
CALL 0x00024cc0
MOV EAX,dword ptr [ESI + 0xc]
ADD ESP,0x10
TEST EAX,EAX
JLE 0x00032709
XOR EDI,EDI
LEA ESI,[ESI]
MOV EAX,dword ptr [ESI + 0x10]
SUB ESP,0xc
PUSH dword ptr [EAX + EDI*0x4]
ADD EDI,0x1
CALL 0x00024cc0
ADD ESP,0x10
CMP dword ptr [ESI + 0xc],EDI
JG 0x000326f0
SUB ESP,0xc
PUSH dword ptr [ESI + 0x10]
CALL 0x00024cc0
POP EAX
PUSH dword ptr [ESI + 0x1c]
CALL 0x00024cc0
POP EDX
PUSH dword ptr [ESI + 0x58]
CALL 0x00024cc0
POP ECX
PUSH dword ptr [ESI + 0x5c]
CALL 0x00024cc0
POP EDI
PUSH dword ptr [ESI + 0x24]
CALL 0x00024cc0
POP EAX
PUSH dword ptr [ESI + 0x28]
CALL 0x00024cc0
POP EAX
PUSH dword ptr [ESI + 0x34]
CALL 0x00024cc0
MOV dword ptr [ESP],ESI
CALL 0x00024cc0
ADD ESP,0x10
POP EBX
POP ESI
POP EDI
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 FUN_000326a0(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 4));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 8));\n    if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));\n    FUN_00024cc0(param_1);\n  }\n  return;\n}\n\n" comment (function_definition "void __regparm3 FUN_000326a0(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 4));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 8));\n    if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));\n    FUN_00024cc0(param_1);\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000326a0(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  \n  if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 4));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 8));\n    if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));\n    FUN_00024cc0(param_1);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (if_statement "if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 4));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 8));\n    if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));\n    FUN_00024cc0(param_1);\n  }" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (compound_statement "{\n    if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 4));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 8));\n    if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));\n    FUN_00024cc0(param_1);\n  }" { (if_statement "if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x38) != 0)" ( (binary_expression "*(int *)(param_1 + 0x38) != 0" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }" { (expression_statement "(**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));" (call_expression "(**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x3c) + 4))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x3c) + 4)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x3c) + 4)" * (cast_expression "(code **)(*(int *)(param_1 + 0x3c) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x3c) + 4)" ( (binary_expression "*(int *)(param_1 + 0x3c) + 4" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(int *)(param_1 + 0x38))" ( (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) ))) ;) })) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 4));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 4))" identifier (argument_list "(*(undefined4 *)(param_1 + 4))" ( (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 8));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 8))" identifier (argument_list "(*(undefined4 *)(param_1 + 8))" ( (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) ))) ;) (if_statement "if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }" if (parenthesized_expression "(0 < *(int *)(param_1 + 0xc))" ( (binary_expression "0 < *(int *)(param_1 + 0xc)" number_literal < (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));" do (compound_statement "{\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      }" { (expression_statement "iVar1 = iVar2 * 4;" (assignment_expression "iVar1 = iVar2 * 4" identifier = (binary_expression "iVar2 * 4" identifier * number_literal)) ;) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));" (call_expression "FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1))" identifier (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1))" ( (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x10) + iVar1)" ( (binary_expression "*(int *)(param_1 + 0x10) + iVar1" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + identifier) )))) ))) ;) }) while (parenthesized_expression "(iVar2 < *(int *)(param_1 + 0xc))" ( (binary_expression "iVar2 < *(int *)(param_1 + 0xc)" identifier < (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) )) ;) })) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x10))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x10))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x1c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x1c)" * (cast_expression "(undefined4 *)(param_1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x58))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x58))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x58)" * (cast_expression "(undefined4 *)(param_1 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x5c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x5c)" * (cast_expression "(undefined4 *)(param_1 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x24))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x24))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x24)" * (cast_expression "(undefined4 *)(param_1 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x28))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x28))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x28)" * (cast_expression "(undefined4 *)(param_1 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x34))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x34))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x34)" * (cast_expression "(undefined4 *)(param_1 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(param_1);" (call_expression "FUN_00024cc0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 sqlite3Fts5ConfigFree(Fts5Config *pConfig)\n\n{\n  char **ppcVar1;\n  int iVar2;\n  \n  if (pConfig != (Fts5Config *)0x0) {\n    if (pConfig->pTok != (Fts5Tokenizer *)0x0) {\n      (*pConfig->pTokApi->xDelete)(pConfig->pTok);\n    }\n    sqlite3_free(pConfig->zDb);\n    sqlite3_free(pConfig->zName);\n    if (0 < pConfig->nCol) {\n      iVar2 = 0;\n      do {\n        ppcVar1 = pConfig->azCol + iVar2;\n        iVar2 = iVar2 + 1;\n        sqlite3_free(*ppcVar1);\n      } while (iVar2 < pConfig->nCol);\n    }\n    sqlite3_free(pConfig->azCol);\n    sqlite3_free(pConfig->aPrefix);\n    sqlite3_free(pConfig->zRank);\n    sqlite3_free(pConfig->zRankArgs);\n    sqlite3_free(pConfig->zContent);\n    sqlite3_free(pConfig->zContentRowid);\n    sqlite3_free(pConfig->zContentExprlist);\n    sqlite3_free(pConfig);\n  }\n  return;\n}\n\n" comment (function_definition "void __regparm3 sqlite3Fts5ConfigFree(Fts5Config *pConfig)\n\n{\n  char **ppcVar1;\n  int iVar2;\n  \n  if (pConfig != (Fts5Config *)0x0) {\n    if (pConfig->pTok != (Fts5Tokenizer *)0x0) {\n      (*pConfig->pTokApi->xDelete)(pConfig->pTok);\n    }\n    sqlite3_free(pConfig->zDb);\n    sqlite3_free(pConfig->zName);\n    if (0 < pConfig->nCol) {\n      iVar2 = 0;\n      do {\n        ppcVar1 = pConfig->azCol + iVar2;\n        iVar2 = iVar2 + 1;\n        sqlite3_free(*ppcVar1);\n      } while (iVar2 < pConfig->nCol);\n    }\n    sqlite3_free(pConfig->azCol);\n    sqlite3_free(pConfig->aPrefix);\n    sqlite3_free(pConfig->zRank);\n    sqlite3_free(pConfig->zRankArgs);\n    sqlite3_free(pConfig->zContent);\n    sqlite3_free(pConfig->zContentRowid);\n    sqlite3_free(pConfig->zContentExprlist);\n    sqlite3_free(pConfig);\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "sqlite3Fts5ConfigFree(Fts5Config *pConfig)" identifier (parameter_list "(Fts5Config *pConfig)" ( (parameter_declaration "Fts5Config *pConfig" type_identifier (pointer_declarator "*pConfig" * identifier)) ))) (compound_statement "{\n  char **ppcVar1;\n  int iVar2;\n  \n  if (pConfig != (Fts5Config *)0x0) {\n    if (pConfig->pTok != (Fts5Tokenizer *)0x0) {\n      (*pConfig->pTokApi->xDelete)(pConfig->pTok);\n    }\n    sqlite3_free(pConfig->zDb);\n    sqlite3_free(pConfig->zName);\n    if (0 < pConfig->nCol) {\n      iVar2 = 0;\n      do {\n        ppcVar1 = pConfig->azCol + iVar2;\n        iVar2 = iVar2 + 1;\n        sqlite3_free(*ppcVar1);\n      } while (iVar2 < pConfig->nCol);\n    }\n    sqlite3_free(pConfig->azCol);\n    sqlite3_free(pConfig->aPrefix);\n    sqlite3_free(pConfig->zRank);\n    sqlite3_free(pConfig->zRankArgs);\n    sqlite3_free(pConfig->zContent);\n    sqlite3_free(pConfig->zContentRowid);\n    sqlite3_free(pConfig->zContentExprlist);\n    sqlite3_free(pConfig);\n  }\n  return;\n}" { (declaration "char **ppcVar1;" primitive_type (pointer_declarator "**ppcVar1" * (pointer_declarator "*ppcVar1" * identifier)) ;) (declaration "int iVar2;" primitive_type identifier ;) (if_statement "if (pConfig != (Fts5Config *)0x0) {\n    if (pConfig->pTok != (Fts5Tokenizer *)0x0) {\n      (*pConfig->pTokApi->xDelete)(pConfig->pTok);\n    }\n    sqlite3_free(pConfig->zDb);\n    sqlite3_free(pConfig->zName);\n    if (0 < pConfig->nCol) {\n      iVar2 = 0;\n      do {\n        ppcVar1 = pConfig->azCol + iVar2;\n        iVar2 = iVar2 + 1;\n        sqlite3_free(*ppcVar1);\n      } while (iVar2 < pConfig->nCol);\n    }\n    sqlite3_free(pConfig->azCol);\n    sqlite3_free(pConfig->aPrefix);\n    sqlite3_free(pConfig->zRank);\n    sqlite3_free(pConfig->zRankArgs);\n    sqlite3_free(pConfig->zContent);\n    sqlite3_free(pConfig->zContentRowid);\n    sqlite3_free(pConfig->zContentExprlist);\n    sqlite3_free(pConfig);\n  }" if (parenthesized_expression "(pConfig != (Fts5Config *)0x0)" ( (binary_expression "pConfig != (Fts5Config *)0x0" identifier != (cast_expression "(Fts5Config *)0x0" ( (type_descriptor "Fts5Config *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (pConfig->pTok != (Fts5Tokenizer *)0x0) {\n      (*pConfig->pTokApi->xDelete)(pConfig->pTok);\n    }\n    sqlite3_free(pConfig->zDb);\n    sqlite3_free(pConfig->zName);\n    if (0 < pConfig->nCol) {\n      iVar2 = 0;\n      do {\n        ppcVar1 = pConfig->azCol + iVar2;\n        iVar2 = iVar2 + 1;\n        sqlite3_free(*ppcVar1);\n      } while (iVar2 < pConfig->nCol);\n    }\n    sqlite3_free(pConfig->azCol);\n    sqlite3_free(pConfig->aPrefix);\n    sqlite3_free(pConfig->zRank);\n    sqlite3_free(pConfig->zRankArgs);\n    sqlite3_free(pConfig->zContent);\n    sqlite3_free(pConfig->zContentRowid);\n    sqlite3_free(pConfig->zContentExprlist);\n    sqlite3_free(pConfig);\n  }" { (if_statement "if (pConfig->pTok != (Fts5Tokenizer *)0x0) {\n      (*pConfig->pTokApi->xDelete)(pConfig->pTok);\n    }" if (parenthesized_expression "(pConfig->pTok != (Fts5Tokenizer *)0x0)" ( (binary_expression "pConfig->pTok != (Fts5Tokenizer *)0x0" (field_expression "pConfig->pTok" identifier -> field_identifier) != (cast_expression "(Fts5Tokenizer *)0x0" ( (type_descriptor "Fts5Tokenizer *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*pConfig->pTokApi->xDelete)(pConfig->pTok);\n    }" { (expression_statement "(*pConfig->pTokApi->xDelete)(pConfig->pTok);" (call_expression "(*pConfig->pTokApi->xDelete)(pConfig->pTok)" (parenthesized_expression "(*pConfig->pTokApi->xDelete)" ( (pointer_expression "*pConfig->pTokApi->xDelete" * (field_expression "pConfig->pTokApi->xDelete" (field_expression "pConfig->pTokApi" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(pConfig->pTok)" ( (field_expression "pConfig->pTok" identifier -> field_identifier) ))) ;) })) (expression_statement "sqlite3_free(pConfig->zDb);" (call_expression "sqlite3_free(pConfig->zDb)" identifier (argument_list "(pConfig->zDb)" ( (field_expression "pConfig->zDb" identifier -> field_identifier) ))) ;) (expression_statement "sqlite3_free(pConfig->zName);" (call_expression "sqlite3_free(pConfig->zName)" identifier (argument_list "(pConfig->zName)" ( (field_expression "pConfig->zName" identifier -> field_identifier) ))) ;) (if_statement "if (0 < pConfig->nCol) {\n      iVar2 = 0;\n      do {\n        ppcVar1 = pConfig->azCol + iVar2;\n        iVar2 = iVar2 + 1;\n        sqlite3_free(*ppcVar1);\n      } while (iVar2 < pConfig->nCol);\n    }" if (parenthesized_expression "(0 < pConfig->nCol)" ( (binary_expression "0 < pConfig->nCol" number_literal < (field_expression "pConfig->nCol" identifier -> field_identifier)) )) (compound_statement "{\n      iVar2 = 0;\n      do {\n        ppcVar1 = pConfig->azCol + iVar2;\n        iVar2 = iVar2 + 1;\n        sqlite3_free(*ppcVar1);\n      } while (iVar2 < pConfig->nCol);\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n        ppcVar1 = pConfig->azCol + iVar2;\n        iVar2 = iVar2 + 1;\n        sqlite3_free(*ppcVar1);\n      } while (iVar2 < pConfig->nCol);" do (compound_statement "{\n        ppcVar1 = pConfig->azCol + iVar2;\n        iVar2 = iVar2 + 1;\n        sqlite3_free(*ppcVar1);\n      }" { (expression_statement "ppcVar1 = pConfig->azCol + iVar2;" (assignment_expression "ppcVar1 = pConfig->azCol + iVar2" identifier = (binary_expression "pConfig->azCol + iVar2" (field_expression "pConfig->azCol" identifier -> field_identifier) + identifier)) ;) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "sqlite3_free(*ppcVar1);" (call_expression "sqlite3_free(*ppcVar1)" identifier (argument_list "(*ppcVar1)" ( (pointer_expression "*ppcVar1" * identifier) ))) ;) }) while (parenthesized_expression "(iVar2 < pConfig->nCol)" ( (binary_expression "iVar2 < pConfig->nCol" identifier < (field_expression "pConfig->nCol" identifier -> field_identifier)) )) ;) })) (expression_statement "sqlite3_free(pConfig->azCol);" (call_expression "sqlite3_free(pConfig->azCol)" identifier (argument_list "(pConfig->azCol)" ( (field_expression "pConfig->azCol" identifier -> field_identifier) ))) ;) (expression_statement "sqlite3_free(pConfig->aPrefix);" (call_expression "sqlite3_free(pConfig->aPrefix)" identifier (argument_list "(pConfig->aPrefix)" ( (field_expression "pConfig->aPrefix" identifier -> field_identifier) ))) ;) (expression_statement "sqlite3_free(pConfig->zRank);" (call_expression "sqlite3_free(pConfig->zRank)" identifier (argument_list "(pConfig->zRank)" ( (field_expression "pConfig->zRank" identifier -> field_identifier) ))) ;) (expression_statement "sqlite3_free(pConfig->zRankArgs);" (call_expression "sqlite3_free(pConfig->zRankArgs)" identifier (argument_list "(pConfig->zRankArgs)" ( (field_expression "pConfig->zRankArgs" identifier -> field_identifier) ))) ;) (expression_statement "sqlite3_free(pConfig->zContent);" (call_expression "sqlite3_free(pConfig->zContent)" identifier (argument_list "(pConfig->zContent)" ( (field_expression "pConfig->zContent" identifier -> field_identifier) ))) ;) (expression_statement "sqlite3_free(pConfig->zContentRowid);" (call_expression "sqlite3_free(pConfig->zContentRowid)" identifier (argument_list "(pConfig->zContentRowid)" ( (field_expression "pConfig->zContentRowid" identifier -> field_identifier) ))) ;) (expression_statement "sqlite3_free(pConfig->zContentExprlist);" (call_expression "sqlite3_free(pConfig->zContentExprlist)" identifier (argument_list "(pConfig->zContentExprlist)" ( (field_expression "pConfig->zContentExprlist" identifier -> field_identifier) ))) ;) (expression_statement "sqlite3_free(pConfig);" (call_expression "sqlite3_free(pConfig)" identifier (argument_list "(pConfig)" ( identifier ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 FUN_000326a0(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 4));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 8));\n    if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));\n    FUN_00024cc0(param_1);\n  }\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_000326a0(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 4));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 8));\n    if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));\n    FUN_00024cc0(param_1);\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000326a0(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  \n  if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 4));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 8));\n    if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));\n    FUN_00024cc0(param_1);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (if_statement "if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 4));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 8));\n    if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));\n    FUN_00024cc0(param_1);\n  }" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (compound_statement "{\n    if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 4));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 8));\n    if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));\n    FUN_00024cc0(param_1);\n  }" { (if_statement "if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x38) != 0)" ( (binary_expression "*(int *)(param_1 + 0x38) != 0" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }" { (expression_statement "(**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));" (call_expression "(**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x3c) + 4))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x3c) + 4)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x3c) + 4)" * (cast_expression "(code **)(*(int *)(param_1 + 0x3c) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x3c) + 4)" ( (binary_expression "*(int *)(param_1 + 0x3c) + 4" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(int *)(param_1 + 0x38))" ( (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) ))) ;) })) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 4));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 4))" identifier (argument_list "(*(undefined4 *)(param_1 + 4))" ( (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 8));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 8))" identifier (argument_list "(*(undefined4 *)(param_1 + 8))" ( (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) ))) ;) (if_statement "if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }" if (parenthesized_expression "(0 < *(int *)(param_1 + 0xc))" ( (binary_expression "0 < *(int *)(param_1 + 0xc)" number_literal < (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));" do (compound_statement "{\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      }" { (expression_statement "iVar1 = iVar2 * 4;" (assignment_expression "iVar1 = iVar2 * 4" identifier = (binary_expression "iVar2 * 4" identifier * number_literal)) ;) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));" (call_expression "FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1))" identifier (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1))" ( (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x10) + iVar1)" ( (binary_expression "*(int *)(param_1 + 0x10) + iVar1" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + identifier) )))) ))) ;) }) while (parenthesized_expression "(iVar2 < *(int *)(param_1 + 0xc))" ( (binary_expression "iVar2 < *(int *)(param_1 + 0xc)" identifier < (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) )) ;) })) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x10))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x10))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x1c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x1c)" * (cast_expression "(undefined4 *)(param_1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x58))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x58))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x58)" * (cast_expression "(undefined4 *)(param_1 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x5c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x5c)" * (cast_expression "(undefined4 *)(param_1 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x24))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x24))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x24)" * (cast_expression "(undefined4 *)(param_1 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x28))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x28))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x28)" * (cast_expression "(undefined4 *)(param_1 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x34))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x34))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x34)" * (cast_expression "(undefined4 *)(param_1 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(param_1);" (call_expression "FUN_00024cc0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_000326a0(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  \n  if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 4));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 8));\n    if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));\n    FUN_00024cc0(param_1);\n  }\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000326a0(int param_1)" (identifier "FUN_000326a0") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  \n  if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 4));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 8));\n    if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));\n    FUN_00024cc0(param_1);\n  }\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (if_statement "if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 4));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 8));\n    if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));\n    FUN_00024cc0(param_1);\n  }" (if "if") (parenthesized_expression "(param_1 != 0)" (( "(") (binary_expression "param_1 != 0" (identifier "param_1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 4));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 8));\n    if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));\n    FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));\n    FUN_00024cc0(param_1);\n  }" ({ "{") (if_statement "if (*(int *)(param_1 + 0x38) != 0) {\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x38) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x38) != 0" (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));\n    }" ({ "{") (expression_statement "(**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));" (call_expression "(**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x3c) + 4))" (( "(") (pointer_expression "**(code **)(*(int *)(param_1 + 0x3c) + 4)" (* "*") (pointer_expression "*(code **)(*(int *)(param_1 + 0x3c) + 4)" (* "*") (cast_expression "(code **)(*(int *)(param_1 + 0x3c) + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x3c) + 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x3c) + 4" (pointer_expression "*(int *)(param_1 + 0x3c)" (* "*") (cast_expression "(int *)(param_1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(*(int *)(param_1 + 0x38))" (( "(") (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 4));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 4))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 4))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 8));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 8))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 8))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) () ")"))) (; ";")) (if_statement "if (0 < *(int *)(param_1 + 0xc)) {\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }" (if "if") (parenthesized_expression "(0 < *(int *)(param_1 + 0xc))" (( "(") (binary_expression "0 < *(int *)(param_1 + 0xc)" (number_literal "0") (< "<") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (compound_statement "{\n      iVar2 = 0;\n      do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));\n    }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      } while (iVar2 < *(int *)(param_1 + 0xc));" (do "do") (compound_statement "{\n        iVar1 = iVar2 * 4;\n        iVar2 = iVar2 + 1;\n        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));\n      }" ({ "{") (expression_statement "iVar1 = iVar2 * 4;" (assignment_expression "iVar1 = iVar2 * 4" (identifier "iVar1") (= "=") (binary_expression "iVar2 * 4" (identifier "iVar2") (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));" (call_expression "FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1))" (( "(") (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x10) + iVar1)" (( "(") (binary_expression "*(int *)(param_1 + 0x10) + iVar1" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (identifier "iVar1")) () ")")))) () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar2 < *(int *)(param_1 + 0xc))" (( "(") (binary_expression "iVar2 < *(int *)(param_1 + 0xc)" (identifier "iVar2") (< "<") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (; ";")) (} "}"))) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x10))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 0x10))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 0x1c))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x58))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 0x58))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x58)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 0x5c))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x5c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x24))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 0x24))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x24)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x28))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 0x28))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x34))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 0x34))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x34)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00024cc0(param_1);" (call_expression "FUN_00024cc0(param_1)" (identifier "FUN_00024cc0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 function_1(type_1 *var_1)

{
  char **ppcVar1;
  int var_3;
  
  if (var_1 != (type_1 *)0x0) {
    if (var_1->pTok != (type_2 *)0x0) {
      (*var_1->pTokApi->xDelete)(var_1->pTok);
    }
    var_2(var_1->zDb);
    var_2(var_1->zName);
    if (0 < var_1->nCol) {
      var_3 = 0;
      do {
        ppcVar1 = var_1->azCol + var_3;
        var_3 = var_3 + 1;
        var_2(*ppcVar1);
      } while (var_3 < var_1->nCol);
    }
    var_2(var_1->azCol);
    var_2(var_1->aPrefix);
    var_2(var_1->zRank);
    var_2(var_1->zRankArgs);
    var_2(var_1->zContent);
    var_2(var_1->zContentRowid);
    var_2(var_1->zContentExprlist);
    var_2(var_1);
  }
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 MASKED(int param_1)

{
  int iVar1;
  int iVar2;
  
  if (param_1 != 0) {
    if (*(int *)(param_1 + 0x38) != 0) {
      (**(code **)(*(int *)(param_1 + 0x3c) + 4))(*(int *)(param_1 + 0x38));
    }
    FUN_00024cc0(*(undefined4 *)(param_1 + 4));
    FUN_00024cc0(*(undefined4 *)(param_1 + 8));
    if (0 < *(int *)(param_1 + 0xc)) {
      iVar2 = 0;
      do {
        iVar1 = iVar2 * 4;
        iVar2 = iVar2 + 1;
        FUN_00024cc0(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar1));
      } while (iVar2 < *(int *)(param_1 + 0xc));
    }
    FUN_00024cc0(*(undefined4 *)(param_1 + 0x10));
    FUN_00024cc0(*(undefined4 *)(param_1 + 0x1c));
    FUN_00024cc0(*(undefined4 *)(param_1 + 0x58));
    FUN_00024cc0(*(undefined4 *)(param_1 + 0x5c));
    FUN_00024cc0(*(undefined4 *)(param_1 + 0x24));
    FUN_00024cc0(*(undefined4 *)(param_1 + 0x28));
    FUN_00024cc0(*(undefined4 *)(param_1 + 0x34));
    FUN_00024cc0(param_1);
  }
  return;
}

