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

int completionOpen(sqlite3_vtab *p,sqlite3_vtab_cursor **ppCursor)

{
  sqlite3_vtab_cursor *psVar1;
  uint uVar2;
  undefined4 *puVar3;
  byte bVar4;
  
  bVar4 = 0;
  psVar1 = (sqlite3_vtab_cursor *)sqlite3_malloc(0x34);
  if (psVar1 != (sqlite3_vtab_cursor *)0x0) {
    psVar1->pVtab = (sqlite3_vtab *)0x0;
    psVar1[0xc].pVtab = (sqlite3_vtab *)0x0;
    puVar3 = (undefined4 *)((uint)(psVar1 + 1) & 0xfffffffc);
    for (uVar2 = (uint)((int)psVar1 + (0x34 - (int)((uint)(psVar1 + 1) & 0xfffffffc))) >> 2;
        uVar2 != 0; uVar2 = uVar2 - 1) {
      *puVar3 = 0;
      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;
    }
    psVar1[1].pVtab = (sqlite3_vtab *)p[1].pModule;
    *ppCursor = psVar1;
    return 0;
  }
  return 7;
}



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

undefined4 FUN_0001cc30(int param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  uint uVar2;
  undefined4 *puVar3;
  byte bVar4;
  
  bVar4 = 0;
  puVar1 = (undefined4 *)FUN_0005bfa0(0x34);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
    puVar1[0xc] = 0;
    puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);
    for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;
        uVar2 != 0; uVar2 = uVar2 - 1) {
      *puVar3 = 0;
      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;
    }
    puVar1[1] = *(undefined4 *)(param_1 + 0xc);
    *param_2 = puVar1;
    return 0;
  }
  return 7;
}


PUSH EDI
PUSH EBX
CALL 0x00017230
ADD EBX,0x15f1f1
SUB ESP,0x10
PUSH 0x34
CALL 0x0005bfa0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0001cc90
LEA EDI,[EAX + 0x4]
MOV ECX,EAX
MOV dword ptr [EAX],0x0
MOV EDX,EAX
AND EDI,0xfffffffc
MOV dword ptr [EAX + 0x30],0x0
XOR EAX,EAX
SUB ECX,EDI
ADD ECX,0x34
SHR ECX,0x2
STOSD.REP ES:EDI
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX + 0xc]
MOV dword ptr [EDX + 0x4],EAX
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [EAX],EDX
ADD ESP,0x4
XOR EAX,EAX
POP EBX
POP EDI
RET
ADD ESP,0x4
MOV EAX,0x7
POP EBX
POP EDI
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_0001cc30(int param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  byte bVar4;\n  \n  bVar4 = 0;\n  puVar1 = (undefined4 *)FUN_0005bfa0(0x34);\n  if (puVar1 != (undefined4 *)0x0) {\n    *puVar1 = 0;\n    puVar1[0xc] = 0;\n    puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    puVar1[1] = *(undefined4 *)(param_1 + 0xc);\n    *param_2 = puVar1;\n    return 0;\n  }\n  return 7;\n}\n\n" comment (function_definition "undefined4 FUN_0001cc30(int param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  byte bVar4;\n  \n  bVar4 = 0;\n  puVar1 = (undefined4 *)FUN_0005bfa0(0x34);\n  if (puVar1 != (undefined4 *)0x0) {\n    *puVar1 = 0;\n    puVar1[0xc] = 0;\n    puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    puVar1[1] = *(undefined4 *)(param_1 + 0xc);\n    *param_2 = puVar1;\n    return 0;\n  }\n  return 7;\n}" type_identifier (function_declarator "FUN_0001cc30(int param_1,undefined4 *param_2)" identifier (parameter_list "(int param_1,undefined4 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  byte bVar4;\n  \n  bVar4 = 0;\n  puVar1 = (undefined4 *)FUN_0005bfa0(0x34);\n  if (puVar1 != (undefined4 *)0x0) {\n    *puVar1 = 0;\n    puVar1[0xc] = 0;\n    puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    puVar1[1] = *(undefined4 *)(param_1 + 0xc);\n    *param_2 = puVar1;\n    return 0;\n  }\n  return 7;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "byte bVar4;" type_identifier identifier ;) (expression_statement "bVar4 = 0;" (assignment_expression "bVar4 = 0" identifier = number_literal) ;) (expression_statement "puVar1 = (undefined4 *)FUN_0005bfa0(0x34);" (assignment_expression "puVar1 = (undefined4 *)FUN_0005bfa0(0x34)" identifier = (cast_expression "(undefined4 *)FUN_0005bfa0(0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0005bfa0(0x34)" identifier (argument_list "(0x34)" ( number_literal ))))) ;) (if_statement "if (puVar1 != (undefined4 *)0x0) {\n    *puVar1 = 0;\n    puVar1[0xc] = 0;\n    puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    puVar1[1] = *(undefined4 *)(param_1 + 0xc);\n    *param_2 = puVar1;\n    return 0;\n  }" if (parenthesized_expression "(puVar1 != (undefined4 *)0x0)" ( (binary_expression "puVar1 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *puVar1 = 0;\n    puVar1[0xc] = 0;\n    puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    puVar1[1] = *(undefined4 *)(param_1 + 0xc);\n    *param_2 = puVar1;\n    return 0;\n  }" { (expression_statement "*puVar1 = 0;" (assignment_expression "*puVar1 = 0" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (expression_statement "puVar1[0xc] = 0;" (assignment_expression "puVar1[0xc] = 0" (subscript_expression "puVar1[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);" (assignment_expression "puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar1 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar1 + 1) & 0xfffffffc" (call_expression "(uint)(puVar1 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }" for ( (assignment_expression "uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc)))" ( (binary_expression "(int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))" ( (binary_expression "0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(puVar1 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(puVar1 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar1 + 1) & 0xfffffffc" (call_expression "(uint)(puVar1 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar2 != 0" identifier != number_literal) ; (assignment_expression "uVar2 = uVar2 - 1" identifier = (binary_expression "uVar2 - 1" identifier - number_literal)) ) (compound_statement "{\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }" { (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "puVar3 = puVar3 + (uint)bVar4 * -2 + 1;" (assignment_expression "puVar3 = puVar3 + (uint)bVar4 * -2 + 1" identifier = (binary_expression "puVar3 + (uint)bVar4 * -2 + 1" (binary_expression "puVar3 + (uint)bVar4 * -2" identifier + (binary_expression "(uint)bVar4 * -2" (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "puVar1[1] = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "puVar1[1] = *(undefined4 *)(param_1 + 0xc)" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*param_2 = puVar1;" (assignment_expression "*param_2 = puVar1" (pointer_expression "*param_2" * identifier) = identifier) ;) (return_statement "return 0;" return number_literal ;) })) (return_statement "return 7;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint completionOpen(sqlite3_vtab *p,sqlite3_vtab_cursor **ppCursor)\n\n{\n  sqlite3_vtab_cursor *psVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  byte bVar4;\n  \n  bVar4 = 0;\n  psVar1 = (sqlite3_vtab_cursor *)sqlite3_malloc(0x34);\n  if (psVar1 != (sqlite3_vtab_cursor *)0x0) {\n    psVar1->pVtab = (sqlite3_vtab *)0x0;\n    psVar1[0xc].pVtab = (sqlite3_vtab *)0x0;\n    puVar3 = (undefined4 *)((uint)(psVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)psVar1 + (0x34 - (int)((uint)(psVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    psVar1[1].pVtab = (sqlite3_vtab *)p[1].pModule;\n    *ppCursor = psVar1;\n    return 0;\n  }\n  return 7;\n}\n\n" comment (function_definition "int completionOpen(sqlite3_vtab *p,sqlite3_vtab_cursor **ppCursor)\n\n{\n  sqlite3_vtab_cursor *psVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  byte bVar4;\n  \n  bVar4 = 0;\n  psVar1 = (sqlite3_vtab_cursor *)sqlite3_malloc(0x34);\n  if (psVar1 != (sqlite3_vtab_cursor *)0x0) {\n    psVar1->pVtab = (sqlite3_vtab *)0x0;\n    psVar1[0xc].pVtab = (sqlite3_vtab *)0x0;\n    puVar3 = (undefined4 *)((uint)(psVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)psVar1 + (0x34 - (int)((uint)(psVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    psVar1[1].pVtab = (sqlite3_vtab *)p[1].pModule;\n    *ppCursor = psVar1;\n    return 0;\n  }\n  return 7;\n}" primitive_type (function_declarator "completionOpen(sqlite3_vtab *p,sqlite3_vtab_cursor **ppCursor)" identifier (parameter_list "(sqlite3_vtab *p,sqlite3_vtab_cursor **ppCursor)" ( (parameter_declaration "sqlite3_vtab *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "sqlite3_vtab_cursor **ppCursor" type_identifier (pointer_declarator "**ppCursor" * (pointer_declarator "*ppCursor" * identifier))) ))) (compound_statement "{\n  sqlite3_vtab_cursor *psVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  byte bVar4;\n  \n  bVar4 = 0;\n  psVar1 = (sqlite3_vtab_cursor *)sqlite3_malloc(0x34);\n  if (psVar1 != (sqlite3_vtab_cursor *)0x0) {\n    psVar1->pVtab = (sqlite3_vtab *)0x0;\n    psVar1[0xc].pVtab = (sqlite3_vtab *)0x0;\n    puVar3 = (undefined4 *)((uint)(psVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)psVar1 + (0x34 - (int)((uint)(psVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    psVar1[1].pVtab = (sqlite3_vtab *)p[1].pModule;\n    *ppCursor = psVar1;\n    return 0;\n  }\n  return 7;\n}" { (declaration "sqlite3_vtab_cursor *psVar1;" type_identifier (pointer_declarator "*psVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "byte bVar4;" type_identifier identifier ;) (expression_statement "bVar4 = 0;" (assignment_expression "bVar4 = 0" identifier = number_literal) ;) (expression_statement "psVar1 = (sqlite3_vtab_cursor *)sqlite3_malloc(0x34);" (assignment_expression "psVar1 = (sqlite3_vtab_cursor *)sqlite3_malloc(0x34)" identifier = (cast_expression "(sqlite3_vtab_cursor *)sqlite3_malloc(0x34)" ( (type_descriptor "sqlite3_vtab_cursor *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3_malloc(0x34)" identifier (argument_list "(0x34)" ( number_literal ))))) ;) (if_statement "if (psVar1 != (sqlite3_vtab_cursor *)0x0) {\n    psVar1->pVtab = (sqlite3_vtab *)0x0;\n    psVar1[0xc].pVtab = (sqlite3_vtab *)0x0;\n    puVar3 = (undefined4 *)((uint)(psVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)psVar1 + (0x34 - (int)((uint)(psVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    psVar1[1].pVtab = (sqlite3_vtab *)p[1].pModule;\n    *ppCursor = psVar1;\n    return 0;\n  }" if (parenthesized_expression "(psVar1 != (sqlite3_vtab_cursor *)0x0)" ( (binary_expression "psVar1 != (sqlite3_vtab_cursor *)0x0" identifier != (cast_expression "(sqlite3_vtab_cursor *)0x0" ( (type_descriptor "sqlite3_vtab_cursor *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    psVar1->pVtab = (sqlite3_vtab *)0x0;\n    psVar1[0xc].pVtab = (sqlite3_vtab *)0x0;\n    puVar3 = (undefined4 *)((uint)(psVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)psVar1 + (0x34 - (int)((uint)(psVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    psVar1[1].pVtab = (sqlite3_vtab *)p[1].pModule;\n    *ppCursor = psVar1;\n    return 0;\n  }" { (expression_statement "psVar1->pVtab = (sqlite3_vtab *)0x0;" (assignment_expression "psVar1->pVtab = (sqlite3_vtab *)0x0" (field_expression "psVar1->pVtab" identifier -> field_identifier) = (cast_expression "(sqlite3_vtab *)0x0" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "psVar1[0xc].pVtab = (sqlite3_vtab *)0x0;" (assignment_expression "psVar1[0xc].pVtab = (sqlite3_vtab *)0x0" (field_expression "psVar1[0xc].pVtab" (subscript_expression "psVar1[0xc]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(sqlite3_vtab *)0x0" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar3 = (undefined4 *)((uint)(psVar1 + 1) & 0xfffffffc);" (assignment_expression "puVar3 = (undefined4 *)((uint)(psVar1 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(psVar1 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(psVar1 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(psVar1 + 1) & 0xfffffffc" (call_expression "(uint)(psVar1 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(psVar1 + 1)" ( (binary_expression "psVar1 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar2 = (uint)((int)psVar1 + (0x34 - (int)((uint)(psVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }" for ( (assignment_expression "uVar2 = (uint)((int)psVar1 + (0x34 - (int)((uint)(psVar1 + 1) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)psVar1 + (0x34 - (int)((uint)(psVar1 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)psVar1 + (0x34 - (int)((uint)(psVar1 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)psVar1 + (0x34 - (int)((uint)(psVar1 + 1) & 0xfffffffc)))" ( (binary_expression "(int)psVar1 + (0x34 - (int)((uint)(psVar1 + 1) & 0xfffffffc))" (cast_expression "(int)psVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x34 - (int)((uint)(psVar1 + 1) & 0xfffffffc))" ( (binary_expression "0x34 - (int)((uint)(psVar1 + 1) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(psVar1 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(psVar1 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(psVar1 + 1) & 0xfffffffc" (call_expression "(uint)(psVar1 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(psVar1 + 1)" ( (binary_expression "psVar1 + 1" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar2 != 0" identifier != number_literal) ; (assignment_expression "uVar2 = uVar2 - 1" identifier = (binary_expression "uVar2 - 1" identifier - number_literal)) ) (compound_statement "{\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }" { (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "puVar3 = puVar3 + (uint)bVar4 * -2 + 1;" (assignment_expression "puVar3 = puVar3 + (uint)bVar4 * -2 + 1" identifier = (binary_expression "puVar3 + (uint)bVar4 * -2 + 1" (binary_expression "puVar3 + (uint)bVar4 * -2" identifier + (binary_expression "(uint)bVar4 * -2" (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "psVar1[1].pVtab = (sqlite3_vtab *)p[1].pModule;" (assignment_expression "psVar1[1].pVtab = (sqlite3_vtab *)p[1].pModule" (field_expression "psVar1[1].pVtab" (subscript_expression "psVar1[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(sqlite3_vtab *)p[1].pModule" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p[1].pModule" (subscript_expression "p[1]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "*ppCursor = psVar1;" (assignment_expression "*ppCursor = psVar1" (pointer_expression "*ppCursor" * identifier) = identifier) ;) (return_statement "return 0;" return number_literal ;) })) (return_statement "return 7;" return number_literal ;) })))
(translation_unit "undefined4 FUN_0001cc30(int param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  byte bVar4;\n  \n  bVar4 = 0;\n  puVar1 = (undefined4 *)FUN_0005bfa0(0x34);\n  if (puVar1 != (undefined4 *)0x0) {\n    *puVar1 = 0;\n    puVar1[0xc] = 0;\n    puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    puVar1[1] = *(undefined4 *)(param_1 + 0xc);\n    *param_2 = puVar1;\n    return 0;\n  }\n  return 7;\n}\n\n" (function_definition "undefined4 FUN_0001cc30(int param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  byte bVar4;\n  \n  bVar4 = 0;\n  puVar1 = (undefined4 *)FUN_0005bfa0(0x34);\n  if (puVar1 != (undefined4 *)0x0) {\n    *puVar1 = 0;\n    puVar1[0xc] = 0;\n    puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    puVar1[1] = *(undefined4 *)(param_1 + 0xc);\n    *param_2 = puVar1;\n    return 0;\n  }\n  return 7;\n}" type_identifier (function_declarator "FUN_0001cc30(int param_1,undefined4 *param_2)" identifier (parameter_list "(int param_1,undefined4 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  byte bVar4;\n  \n  bVar4 = 0;\n  puVar1 = (undefined4 *)FUN_0005bfa0(0x34);\n  if (puVar1 != (undefined4 *)0x0) {\n    *puVar1 = 0;\n    puVar1[0xc] = 0;\n    puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    puVar1[1] = *(undefined4 *)(param_1 + 0xc);\n    *param_2 = puVar1;\n    return 0;\n  }\n  return 7;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "byte bVar4;" type_identifier identifier ;) (expression_statement "bVar4 = 0;" (assignment_expression "bVar4 = 0" identifier = number_literal) ;) (expression_statement "puVar1 = (undefined4 *)FUN_0005bfa0(0x34);" (assignment_expression "puVar1 = (undefined4 *)FUN_0005bfa0(0x34)" identifier = (cast_expression "(undefined4 *)FUN_0005bfa0(0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0005bfa0(0x34)" identifier (argument_list "(0x34)" ( number_literal ))))) ;) (if_statement "if (puVar1 != (undefined4 *)0x0) {\n    *puVar1 = 0;\n    puVar1[0xc] = 0;\n    puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    puVar1[1] = *(undefined4 *)(param_1 + 0xc);\n    *param_2 = puVar1;\n    return 0;\n  }" if (parenthesized_expression "(puVar1 != (undefined4 *)0x0)" ( (binary_expression "puVar1 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *puVar1 = 0;\n    puVar1[0xc] = 0;\n    puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    puVar1[1] = *(undefined4 *)(param_1 + 0xc);\n    *param_2 = puVar1;\n    return 0;\n  }" { (expression_statement "*puVar1 = 0;" (assignment_expression "*puVar1 = 0" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (expression_statement "puVar1[0xc] = 0;" (assignment_expression "puVar1[0xc] = 0" (subscript_expression "puVar1[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);" (assignment_expression "puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar1 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar1 + 1) & 0xfffffffc" (call_expression "(uint)(puVar1 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }" for ( (assignment_expression "uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc)))" ( (binary_expression "(int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))" ( (binary_expression "0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(puVar1 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(puVar1 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar1 + 1) & 0xfffffffc" (call_expression "(uint)(puVar1 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar2 != 0" identifier != number_literal) ; (assignment_expression "uVar2 = uVar2 - 1" identifier = (binary_expression "uVar2 - 1" identifier - number_literal)) ) (compound_statement "{\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }" { (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "puVar3 = puVar3 + (uint)bVar4 * -2 + 1;" (assignment_expression "puVar3 = puVar3 + (uint)bVar4 * -2 + 1" identifier = (binary_expression "puVar3 + (uint)bVar4 * -2 + 1" (binary_expression "puVar3 + (uint)bVar4 * -2" identifier + (binary_expression "(uint)bVar4 * -2" (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "puVar1[1] = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "puVar1[1] = *(undefined4 *)(param_1 + 0xc)" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*param_2 = puVar1;" (assignment_expression "*param_2 = puVar1" (pointer_expression "*param_2" * identifier) = identifier) ;) (return_statement "return 0;" return number_literal ;) })) (return_statement "return 7;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ))) ))) >> LIT)) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return LIT ;) })) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_0001cc30(int param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  byte bVar4;\n  \n  bVar4 = 0;\n  puVar1 = (undefined4 *)FUN_0005bfa0(0x34);\n  if (puVar1 != (undefined4 *)0x0) {\n    *puVar1 = 0;\n    puVar1[0xc] = 0;\n    puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    puVar1[1] = *(undefined4 *)(param_1 + 0xc);\n    *param_2 = puVar1;\n    return 0;\n  }\n  return 7;\n}" (type_identifier "undefined4") (function_declarator "FUN_0001cc30(int param_1,undefined4 *param_2)" (identifier "FUN_0001cc30") (parameter_list "(int param_1,undefined4 *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  byte bVar4;\n  \n  bVar4 = 0;\n  puVar1 = (undefined4 *)FUN_0005bfa0(0x34);\n  if (puVar1 != (undefined4 *)0x0) {\n    *puVar1 = 0;\n    puVar1[0xc] = 0;\n    puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    puVar1[1] = *(undefined4 *)(param_1 + 0xc);\n    *param_2 = puVar1;\n    return 0;\n  }\n  return 7;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "byte bVar4;" (type_identifier "byte") (identifier "bVar4") (; ";")) (expression_statement "bVar4 = 0;" (assignment_expression "bVar4 = 0" (identifier "bVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1 = (undefined4 *)FUN_0005bfa0(0x34);" (assignment_expression "puVar1 = (undefined4 *)FUN_0005bfa0(0x34)" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)FUN_0005bfa0(0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0005bfa0(0x34)" (identifier "FUN_0005bfa0") (argument_list "(0x34)" (( "(") (number_literal "0x34") () ")"))))) (; ";")) (if_statement "if (puVar1 != (undefined4 *)0x0) {\n    *puVar1 = 0;\n    puVar1[0xc] = 0;\n    puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    puVar1[1] = *(undefined4 *)(param_1 + 0xc);\n    *param_2 = puVar1;\n    return 0;\n  }" (if "if") (parenthesized_expression "(puVar1 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar1 != (undefined4 *)0x0" (identifier "puVar1") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    *puVar1 = 0;\n    puVar1[0xc] = 0;\n    puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);\n    for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }\n    puVar1[1] = *(undefined4 *)(param_1 + 0xc);\n    *param_2 = puVar1;\n    return 0;\n  }" ({ "{") (expression_statement "*puVar1 = 0;" (assignment_expression "*puVar1 = 0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[0xc] = 0;" (assignment_expression "puVar1[0xc] = 0" (subscript_expression "puVar1[0xc]" (identifier "puVar1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);" (assignment_expression "puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc)" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(puVar1 + 1) & 0xfffffffc)" (( "(") (binary_expression "(uint)(puVar1 + 1) & 0xfffffffc" (call_expression "(uint)(puVar1 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (for_statement "for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;\n        uVar2 != 0; uVar2 = uVar2 - 1) {\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }" (for "for") (( "(") (assignment_expression "uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2" (identifier "uVar2") (= "=") (binary_expression "(uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc)))" (( "(") (binary_expression "(int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (parenthesized_expression "(0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))" (( "(") (binary_expression "0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc)" (number_literal "0x34") (- "-") (cast_expression "(int)((uint)(puVar1 + 1) & 0xfffffffc)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uint)(puVar1 + 1) & 0xfffffffc)" (( "(") (binary_expression "(uint)(puVar1 + 1) & 0xfffffffc" (call_expression "(uint)(puVar1 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) () ")"))) () ")"))) (>> ">>") (number_literal "2"))) (; ";") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar2 = uVar2 - 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n      *puVar3 = 0;\n      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;\n    }" ({ "{") (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3 = puVar3 + (uint)bVar4 * -2 + 1;" (assignment_expression "puVar3 = puVar3 + (uint)bVar4 * -2 + 1" (identifier "puVar3") (= "=") (binary_expression "puVar3 + (uint)bVar4 * -2 + 1" (binary_expression "puVar3 + (uint)bVar4 * -2" (identifier "puVar3") (+ "+") (binary_expression "(uint)bVar4 * -2" (cast_expression "(uint)bVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar4")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "puVar1[1] = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "puVar1[1] = *(undefined4 *)(param_1 + 0xc)" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*param_2 = puVar1;" (assignment_expression "*param_2 = puVar1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "puVar1")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}")))

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

int function_1(type_1 *p,type_2 **ppCursor)

{
  type_2 *var_2;
  type_3 var_3;
  type_4 *var_4;
  type_5 bVar4;
  
  bVar4 = 0;
  var_2 = (type_2 *)var_1(0x34);
  if (var_2 != (type_2 *)0x0) {
    var_2->pVtab = (type_1 *)0x0;
    var_2[0xc].pVtab = (type_1 *)0x0;
    var_4 = (type_4 *)((type_3)(var_2 + 1) & 0xfffffffc);
    for (var_3 = (type_3)((int)var_2 + (0x34 - (int)((type_3)(var_2 + 1) & 0xfffffffc))) >> 2;
        var_3 != 0; var_3 = var_3 - 1) {
      *var_4 = 0;
      var_4 = var_4 + (type_3)bVar4 * -2 + 1;
    }
    var_2[1].pVtab = (type_1 *)p[1].pModule;
    *ppCursor = var_2;
    return 0;
  }
  return 7;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))))) (for_statement initializer: (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))))))))) right: (number_literal))) condition: (binary_expression left: (identifier) right: (number_literal)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (return_statement (number_literal)))) (return_statement (number_literal)))))

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

undefined4 MASKED(int param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  uint uVar2;
  undefined4 *puVar3;
  byte bVar4;
  
  bVar4 = 0;
  puVar1 = (undefined4 *)FUN_0005bfa0(0x34);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
    puVar1[0xc] = 0;
    puVar3 = (undefined4 *)((uint)(puVar1 + 1) & 0xfffffffc);
    for (uVar2 = (uint)((int)puVar1 + (0x34 - (int)((uint)(puVar1 + 1) & 0xfffffffc))) >> 2;
        uVar2 != 0; uVar2 = uVar2 - 1) {
      *puVar3 = 0;
      puVar3 = puVar3 + (uint)bVar4 * -2 + 1;
    }
    puVar1[1] = *(undefined4 *)(param_1 + 0xc);
    *param_2 = puVar1;
    return 0;
  }
  return 7;
}

