
/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */

int __regparm3 vdbeIncrMergerNew(SortSubtask *pTask,MergeEngine *pMerger,IncrMerger **ppOut)

{
  i64 *piVar1;
  int *piVar2;
  i64 iVar3;
  int iVar4;
  IncrMerger *pIVar5;
  uint uVar6;
  u64 in_stack_ffffffe4;
  
  if (sqlite3Config.xTestCallback != (_func_int_int *)0x0) {
    iVar4 = (*sqlite3Config.xTestCallback)(100);
    if (iVar4 != 0) {
      *ppOut = (IncrMerger *)0x0;
      goto LAB_00055596;
    }
  }
  pIVar5 = (IncrMerger *)sqlite3MallocZero(in_stack_ffffffe4);
  *ppOut = pIVar5;
  if (pIVar5 != (IncrMerger *)0x0) {
    pIVar5->pMerger = pMerger;
    pIVar5->pTask = pTask;
    iVar4 = pTask->pSorter->mxKeysize;
    uVar6 = pTask->pSorter->mxPmaSize / 2;
    if ((int)uVar6 <= iVar4 + 8) {
      uVar6 = iVar4 + 9;
    }
    pIVar5->mxSz = uVar6;
    piVar1 = &(pTask->file2).iEof;
    iVar3 = *piVar1;
    *(uint *)piVar1 = (int)*piVar1 + uVar6;
    piVar2 = (int *)((int)&(pTask->file2).iEof + 4);
    *piVar2 = *piVar2 + ((int)uVar6 >> 0x1f) + (uint)CARRY4((uint)iVar3,uVar6);
    return 0;
  }
LAB_00055596:
  vdbeMergeEngineFree(pMerger);
  return 7;
}



undefined4 FUN_00055510(void)

{
  uint *puVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  undefined8 *puVar5;
  int *extraout_ECX;
  uint uVar6;
  int unaff_EBP;
  undefined8 uVar7;
  
  uVar7 = FUN_00036ac9();
  iVar3 = (int)uVar7;
  if (*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0) {
    iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);
    if (iVar4 != 0) {
      *extraout_ECX = 0;
      goto LAB_00055596;
    }
  }
  puVar5 = (undefined8 *)FUN_00042370();
  *extraout_ECX = (int)puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    *puVar5 = uVar7;
    iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);
    uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;
    if ((int)uVar6 <= iVar4 + 8) {
      uVar6 = iVar4 + 9;
    }
    *(uint *)(puVar5 + 2) = uVar6;
    puVar1 = (uint *)(iVar3 + 0x34);
    uVar2 = *puVar1;
    *puVar1 = *puVar1 + uVar6;
    *(int *)(iVar3 + 0x38) =
         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);
    return 0;
  }
LAB_00055596:
  FUN_000554d0();
  return 7;
}


PUSH EBP
CALL 0x00036ac9
ADD EBP,0x126912
PUSH EDI
MOV EDI,EDX
PUSH ESI
MOV ESI,ECX
PUSH EBX
MOV EBX,EAX
SUB ESP,0xc
MOV EAX,dword ptr [EBP + 0x6c0]
TEST EAX,EAX
JZ 0x00055540
SUB ESP,0xc
PUSH 0x64
CALL EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00055590
MOV EAX,0x34
XOR EDX,EDX
CALL 0x00042370
MOV dword ptr [ESI],EAX
TEST EAX,EAX
JZ 0x00055596
MOV dword ptr [EAX + 0x4],EDI
MOV dword ptr [EAX],EBX
MOV EDX,dword ptr [EBX + 0x8]
MOV ESI,dword ptr [EDX + 0x4]
MOV ECX,dword ptr [EDX + 0x8]
MOV EDX,ESI
SHR EDX,0x1f
ADD EDX,ESI
LEA ESI,[ECX + 0x8]
ADD ECX,0x9
SAR EDX,0x1
CMP ESI,EDX
CMOVGE EDX,ECX
MOV dword ptr [EAX + 0x10],EDX
MOV EAX,EDX
CDQ
ADD dword ptr [EBX + 0x34],EAX
ADC dword ptr [EBX + 0x38],EDX
ADD ESP,0xc
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESI],0x0
MOV EAX,EDI
CALL 0x000554d0
ADD ESP,0xc
MOV EAX,0x7
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "undefined4 FUN_00055510(void)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  int unaff_EBP;\n  undefined8 uVar7;\n  \n  uVar7 = FUN_00036ac9();\n  iVar3 = (int)uVar7;\n  if (*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0) {\n    iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);\n    if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }\n  }\n  puVar5 = (undefined8 *)FUN_00042370();\n  *extraout_ECX = (int)puVar5;\n  if (puVar5 != (undefined8 *)0x0) {\n    *puVar5 = uVar7;\n    iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);\n    uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    *(uint *)(puVar5 + 2) = uVar6;\n    puVar1 = (uint *)(iVar3 + 0x34);\n    uVar2 = *puVar1;\n    *puVar1 = *puVar1 + uVar6;\n    *(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);\n    return 0;\n  }\nLAB_00055596:\n  FUN_000554d0();\n  return 7;\n}\n\n" (function_definition "undefined4 FUN_00055510(void)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  int unaff_EBP;\n  undefined8 uVar7;\n  \n  uVar7 = FUN_00036ac9();\n  iVar3 = (int)uVar7;\n  if (*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0) {\n    iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);\n    if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }\n  }\n  puVar5 = (undefined8 *)FUN_00042370();\n  *extraout_ECX = (int)puVar5;\n  if (puVar5 != (undefined8 *)0x0) {\n    *puVar5 = uVar7;\n    iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);\n    uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    *(uint *)(puVar5 + 2) = uVar6;\n    puVar1 = (uint *)(iVar3 + 0x34);\n    uVar2 = *puVar1;\n    *puVar1 = *puVar1 + uVar6;\n    *(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);\n    return 0;\n  }\nLAB_00055596:\n  FUN_000554d0();\n  return 7;\n}" type_identifier (function_declarator "FUN_00055510(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  int unaff_EBP;\n  undefined8 uVar7;\n  \n  uVar7 = FUN_00036ac9();\n  iVar3 = (int)uVar7;\n  if (*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0) {\n    iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);\n    if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }\n  }\n  puVar5 = (undefined8 *)FUN_00042370();\n  *extraout_ECX = (int)puVar5;\n  if (puVar5 != (undefined8 *)0x0) {\n    *puVar5 = uVar7;\n    iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);\n    uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    *(uint *)(puVar5 + 2) = uVar6;\n    puVar1 = (uint *)(iVar3 + 0x34);\n    uVar2 = *puVar1;\n    *puVar1 = *puVar1 + uVar6;\n    *(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);\n    return 0;\n  }\nLAB_00055596:\n  FUN_000554d0();\n  return 7;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (expression_statement "uVar7 = FUN_00036ac9();" (assignment_expression "uVar7 = FUN_00036ac9()" identifier = (call_expression "FUN_00036ac9()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar3 = (int)uVar7;" (assignment_expression "iVar3 = (int)uVar7" identifier = (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0) {\n    iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);\n    if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }\n  }" if (parenthesized_expression "(*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0)" ( (binary_expression "*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0" (pointer_expression "*(code **)(&DAT_00126fd2 + unaff_EBP)" * (cast_expression "(code **)(&DAT_00126fd2 + unaff_EBP)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_00126fd2 + unaff_EBP)" ( (binary_expression "&DAT_00126fd2 + unaff_EBP" (pointer_expression "&DAT_00126fd2" & identifier) + identifier) )))) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);\n    if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }\n  }" { (expression_statement "iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);" (assignment_expression "iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100)" identifier = (call_expression "(**(code **)(&DAT_00126fd2 + unaff_EBP))(100)" (parenthesized_expression "(**(code **)(&DAT_00126fd2 + unaff_EBP))" ( (pointer_expression "**(code **)(&DAT_00126fd2 + unaff_EBP)" * (pointer_expression "*(code **)(&DAT_00126fd2 + unaff_EBP)" * (cast_expression "(code **)(&DAT_00126fd2 + unaff_EBP)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_00126fd2 + unaff_EBP)" ( (binary_expression "&DAT_00126fd2 + unaff_EBP" (pointer_expression "&DAT_00126fd2" & identifier) + identifier) ))))) )) (argument_list "(100)" ( number_literal )))) ;) (if_statement "if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }" { (expression_statement "*extraout_ECX = 0;" (assignment_expression "*extraout_ECX = 0" (pointer_expression "*extraout_ECX" * identifier) = number_literal) ;) (goto_statement "goto LAB_00055596;" goto statement_identifier ;) })) })) (expression_statement "puVar5 = (undefined8 *)FUN_00042370();" (assignment_expression "puVar5 = (undefined8 *)FUN_00042370()" identifier = (cast_expression "(undefined8 *)FUN_00042370()" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00042370()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*extraout_ECX = (int)puVar5;" (assignment_expression "*extraout_ECX = (int)puVar5" (pointer_expression "*extraout_ECX" * identifier) = (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (puVar5 != (undefined8 *)0x0) {\n    *puVar5 = uVar7;\n    iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);\n    uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    *(uint *)(puVar5 + 2) = uVar6;\n    puVar1 = (uint *)(iVar3 + 0x34);\n    uVar2 = *puVar1;\n    *puVar1 = *puVar1 + uVar6;\n    *(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);\n    return 0;\n  }" if (parenthesized_expression "(puVar5 != (undefined8 *)0x0)" ( (binary_expression "puVar5 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *puVar5 = uVar7;\n    iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);\n    uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    *(uint *)(puVar5 + 2) = uVar6;\n    puVar1 = (uint *)(iVar3 + 0x34);\n    uVar2 = *puVar1;\n    *puVar1 = *puVar1 + uVar6;\n    *(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);\n    return 0;\n  }" { (expression_statement "*puVar5 = uVar7;" (assignment_expression "*puVar5 = uVar7" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);" (assignment_expression "iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8)" identifier = (pointer_expression "*(int *)(*(int *)(iVar3 + 8) + 8)" * (cast_expression "(int *)(*(int *)(iVar3 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 8) + 8)" ( (binary_expression "*(int *)(iVar3 + 8) + 8" (pointer_expression "*(int *)(iVar3 + 8)" * (cast_expression "(int *)(iVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;" (assignment_expression "uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2" identifier = (binary_expression "*(int *)(*(int *)(iVar3 + 8) + 4) / 2" (pointer_expression "*(int *)(*(int *)(iVar3 + 8) + 4)" * (cast_expression "(int *)(*(int *)(iVar3 + 8) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 8) + 4)" ( (binary_expression "*(int *)(iVar3 + 8) + 4" (pointer_expression "*(int *)(iVar3 + 8)" * (cast_expression "(int *)(iVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) + number_literal) )))) / number_literal)) ;) (if_statement "if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }" if (parenthesized_expression "((int)uVar6 <= iVar4 + 8)" ( (binary_expression "(int)uVar6 <= iVar4 + 8" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) <= (binary_expression "iVar4 + 8" identifier + number_literal)) )) (compound_statement "{\n      uVar6 = iVar4 + 9;\n    }" { (expression_statement "uVar6 = iVar4 + 9;" (assignment_expression "uVar6 = iVar4 + 9" identifier = (binary_expression "iVar4 + 9" identifier + number_literal)) ;) })) (expression_statement "*(uint *)(puVar5 + 2) = uVar6;" (assignment_expression "*(uint *)(puVar5 + 2) = uVar6" (pointer_expression "*(uint *)(puVar5 + 2)" * (cast_expression "(uint *)(puVar5 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 2)" ( (binary_expression "puVar5 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar1 = (uint *)(iVar3 + 0x34);" (assignment_expression "puVar1 = (uint *)(iVar3 + 0x34)" identifier = (cast_expression "(uint *)(iVar3 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x34)" ( (binary_expression "iVar3 + 0x34" identifier + number_literal) )))) ;) (expression_statement "uVar2 = *puVar1;" (assignment_expression "uVar2 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = *puVar1 + uVar6;" (assignment_expression "*puVar1 = *puVar1 + uVar6" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + uVar6" (pointer_expression "*puVar1" * identifier) + identifier)) ;) (expression_statement "*(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);" (assignment_expression "*(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6)" (pointer_expression "*(int *)(iVar3 + 0x38)" * (cast_expression "(int *)(iVar3 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x38)" ( (binary_expression "iVar3 + 0x38" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6)" (binary_expression "*(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f)" (pointer_expression "*(int *)(iVar3 + 0x38)" * (cast_expression "(int *)(iVar3 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x38)" ( (binary_expression "iVar3 + 0x38" identifier + number_literal) )))) + (parenthesized_expression "((int)uVar6 >> 0x1f)" ( (binary_expression "(int)uVar6 >> 0x1f" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)CARRY4(uVar2,uVar6)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar2,uVar6)" identifier (argument_list "(uVar2,uVar6)" ( identifier , identifier )))))) ;) (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00055596:\n  FUN_000554d0();" statement_identifier : (expression_statement "FUN_000554d0();" (call_expression "FUN_000554d0()" identifier (argument_list "()" ( ))) ;)) (return_statement "return 7;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */\n\nint __regparm3 vdbeIncrMergerNew(SortSubtask *pTask,MergeEngine *pMerger,IncrMerger **ppOut)\n\n{\n  i64 *piVar1;\n  int *piVar2;\n  i64 iVar3;\n  int iVar4;\n  IncrMerger *pIVar5;\n  uint uVar6;\n  u64 in_stack_ffffffe4;\n  \n  if (sqlite3Config.xTestCallback != (_func_int_int *)0x0) {\n    iVar4 = (*sqlite3Config.xTestCallback)(100);\n    if (iVar4 != 0) {\n      *ppOut = (IncrMerger *)0x0;\n      goto LAB_00055596;\n    }\n  }\n  pIVar5 = (IncrMerger *)sqlite3MallocZero(in_stack_ffffffe4);\n  *ppOut = pIVar5;\n  if (pIVar5 != (IncrMerger *)0x0) {\n    pIVar5->pMerger = pMerger;\n    pIVar5->pTask = pTask;\n    iVar4 = pTask->pSorter->mxKeysize;\n    uVar6 = pTask->pSorter->mxPmaSize / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    pIVar5->mxSz = uVar6;\n    piVar1 = &(pTask->file2).iEof;\n    iVar3 = *piVar1;\n    *(uint *)piVar1 = (int)*piVar1 + uVar6;\n    piVar2 = (int *)((int)&(pTask->file2).iEof + 4);\n    *piVar2 = *piVar2 + ((int)uVar6 >> 0x1f) + (uint)CARRY4((uint)iVar3,uVar6);\n    return 0;\n  }\nLAB_00055596:\n  vdbeMergeEngineFree(pMerger);\n  return 7;\n}\n\n" comment (function_definition "int __regparm3 vdbeIncrMergerNew(SortSubtask *pTask,MergeEngine *pMerger,IncrMerger **ppOut)\n\n{\n  i64 *piVar1;\n  int *piVar2;\n  i64 iVar3;\n  int iVar4;\n  IncrMerger *pIVar5;\n  uint uVar6;\n  u64 in_stack_ffffffe4;\n  \n  if (sqlite3Config.xTestCallback != (_func_int_int *)0x0) {\n    iVar4 = (*sqlite3Config.xTestCallback)(100);\n    if (iVar4 != 0) {\n      *ppOut = (IncrMerger *)0x0;\n      goto LAB_00055596;\n    }\n  }\n  pIVar5 = (IncrMerger *)sqlite3MallocZero(in_stack_ffffffe4);\n  *ppOut = pIVar5;\n  if (pIVar5 != (IncrMerger *)0x0) {\n    pIVar5->pMerger = pMerger;\n    pIVar5->pTask = pTask;\n    iVar4 = pTask->pSorter->mxKeysize;\n    uVar6 = pTask->pSorter->mxPmaSize / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    pIVar5->mxSz = uVar6;\n    piVar1 = &(pTask->file2).iEof;\n    iVar3 = *piVar1;\n    *(uint *)piVar1 = (int)*piVar1 + uVar6;\n    piVar2 = (int *)((int)&(pTask->file2).iEof + 4);\n    *piVar2 = *piVar2 + ((int)uVar6 >> 0x1f) + (uint)CARRY4((uint)iVar3,uVar6);\n    return 0;\n  }\nLAB_00055596:\n  vdbeMergeEngineFree(pMerger);\n  return 7;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "vdbeIncrMergerNew(SortSubtask *pTask,MergeEngine *pMerger,IncrMerger **ppOut)" identifier (parameter_list "(SortSubtask *pTask,MergeEngine *pMerger,IncrMerger **ppOut)" ( (parameter_declaration "SortSubtask *pTask" type_identifier (pointer_declarator "*pTask" * identifier)) , (parameter_declaration "MergeEngine *pMerger" type_identifier (pointer_declarator "*pMerger" * identifier)) , (parameter_declaration "IncrMerger **ppOut" type_identifier (pointer_declarator "**ppOut" * (pointer_declarator "*ppOut" * identifier))) ))) (compound_statement "{\n  i64 *piVar1;\n  int *piVar2;\n  i64 iVar3;\n  int iVar4;\n  IncrMerger *pIVar5;\n  uint uVar6;\n  u64 in_stack_ffffffe4;\n  \n  if (sqlite3Config.xTestCallback != (_func_int_int *)0x0) {\n    iVar4 = (*sqlite3Config.xTestCallback)(100);\n    if (iVar4 != 0) {\n      *ppOut = (IncrMerger *)0x0;\n      goto LAB_00055596;\n    }\n  }\n  pIVar5 = (IncrMerger *)sqlite3MallocZero(in_stack_ffffffe4);\n  *ppOut = pIVar5;\n  if (pIVar5 != (IncrMerger *)0x0) {\n    pIVar5->pMerger = pMerger;\n    pIVar5->pTask = pTask;\n    iVar4 = pTask->pSorter->mxKeysize;\n    uVar6 = pTask->pSorter->mxPmaSize / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    pIVar5->mxSz = uVar6;\n    piVar1 = &(pTask->file2).iEof;\n    iVar3 = *piVar1;\n    *(uint *)piVar1 = (int)*piVar1 + uVar6;\n    piVar2 = (int *)((int)&(pTask->file2).iEof + 4);\n    *piVar2 = *piVar2 + ((int)uVar6 >> 0x1f) + (uint)CARRY4((uint)iVar3,uVar6);\n    return 0;\n  }\nLAB_00055596:\n  vdbeMergeEngineFree(pMerger);\n  return 7;\n}" { (declaration "i64 *piVar1;" type_identifier (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "i64 iVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "IncrMerger *pIVar5;" type_identifier (pointer_declarator "*pIVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "u64 in_stack_ffffffe4;" type_identifier identifier ;) (if_statement "if (sqlite3Config.xTestCallback != (_func_int_int *)0x0) {\n    iVar4 = (*sqlite3Config.xTestCallback)(100);\n    if (iVar4 != 0) {\n      *ppOut = (IncrMerger *)0x0;\n      goto LAB_00055596;\n    }\n  }" if (parenthesized_expression "(sqlite3Config.xTestCallback != (_func_int_int *)0x0)" ( (binary_expression "sqlite3Config.xTestCallback != (_func_int_int *)0x0" (field_expression "sqlite3Config.xTestCallback" identifier . field_identifier) != (cast_expression "(_func_int_int *)0x0" ( (type_descriptor "_func_int_int *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar4 = (*sqlite3Config.xTestCallback)(100);\n    if (iVar4 != 0) {\n      *ppOut = (IncrMerger *)0x0;\n      goto LAB_00055596;\n    }\n  }" { (expression_statement "iVar4 = (*sqlite3Config.xTestCallback)(100);" (assignment_expression "iVar4 = (*sqlite3Config.xTestCallback)(100)" identifier = (call_expression "(*sqlite3Config.xTestCallback)(100)" (parenthesized_expression "(*sqlite3Config.xTestCallback)" ( (pointer_expression "*sqlite3Config.xTestCallback" * (field_expression "sqlite3Config.xTestCallback" identifier . field_identifier)) )) (argument_list "(100)" ( number_literal )))) ;) (if_statement "if (iVar4 != 0) {\n      *ppOut = (IncrMerger *)0x0;\n      goto LAB_00055596;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      *ppOut = (IncrMerger *)0x0;\n      goto LAB_00055596;\n    }" { (expression_statement "*ppOut = (IncrMerger *)0x0;" (assignment_expression "*ppOut = (IncrMerger *)0x0" (pointer_expression "*ppOut" * identifier) = (cast_expression "(IncrMerger *)0x0" ( (type_descriptor "IncrMerger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00055596;" goto statement_identifier ;) })) })) (expression_statement "pIVar5 = (IncrMerger *)sqlite3MallocZero(in_stack_ffffffe4);" (assignment_expression "pIVar5 = (IncrMerger *)sqlite3MallocZero(in_stack_ffffffe4)" identifier = (cast_expression "(IncrMerger *)sqlite3MallocZero(in_stack_ffffffe4)" ( (type_descriptor "IncrMerger *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3MallocZero(in_stack_ffffffe4)" identifier (argument_list "(in_stack_ffffffe4)" ( identifier ))))) ;) (expression_statement "*ppOut = pIVar5;" (assignment_expression "*ppOut = pIVar5" (pointer_expression "*ppOut" * identifier) = identifier) ;) (if_statement "if (pIVar5 != (IncrMerger *)0x0) {\n    pIVar5->pMerger = pMerger;\n    pIVar5->pTask = pTask;\n    iVar4 = pTask->pSorter->mxKeysize;\n    uVar6 = pTask->pSorter->mxPmaSize / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    pIVar5->mxSz = uVar6;\n    piVar1 = &(pTask->file2).iEof;\n    iVar3 = *piVar1;\n    *(uint *)piVar1 = (int)*piVar1 + uVar6;\n    piVar2 = (int *)((int)&(pTask->file2).iEof + 4);\n    *piVar2 = *piVar2 + ((int)uVar6 >> 0x1f) + (uint)CARRY4((uint)iVar3,uVar6);\n    return 0;\n  }" if (parenthesized_expression "(pIVar5 != (IncrMerger *)0x0)" ( (binary_expression "pIVar5 != (IncrMerger *)0x0" identifier != (cast_expression "(IncrMerger *)0x0" ( (type_descriptor "IncrMerger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pIVar5->pMerger = pMerger;\n    pIVar5->pTask = pTask;\n    iVar4 = pTask->pSorter->mxKeysize;\n    uVar6 = pTask->pSorter->mxPmaSize / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    pIVar5->mxSz = uVar6;\n    piVar1 = &(pTask->file2).iEof;\n    iVar3 = *piVar1;\n    *(uint *)piVar1 = (int)*piVar1 + uVar6;\n    piVar2 = (int *)((int)&(pTask->file2).iEof + 4);\n    *piVar2 = *piVar2 + ((int)uVar6 >> 0x1f) + (uint)CARRY4((uint)iVar3,uVar6);\n    return 0;\n  }" { (expression_statement "pIVar5->pMerger = pMerger;" (assignment_expression "pIVar5->pMerger = pMerger" (field_expression "pIVar5->pMerger" identifier -> field_identifier) = identifier) ;) (expression_statement "pIVar5->pTask = pTask;" (assignment_expression "pIVar5->pTask = pTask" (field_expression "pIVar5->pTask" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar4 = pTask->pSorter->mxKeysize;" (assignment_expression "iVar4 = pTask->pSorter->mxKeysize" identifier = (field_expression "pTask->pSorter->mxKeysize" (field_expression "pTask->pSorter" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "uVar6 = pTask->pSorter->mxPmaSize / 2;" (assignment_expression "uVar6 = pTask->pSorter->mxPmaSize / 2" identifier = (binary_expression "pTask->pSorter->mxPmaSize / 2" (field_expression "pTask->pSorter->mxPmaSize" (field_expression "pTask->pSorter" identifier -> field_identifier) -> field_identifier) / number_literal)) ;) (if_statement "if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }" if (parenthesized_expression "((int)uVar6 <= iVar4 + 8)" ( (binary_expression "(int)uVar6 <= iVar4 + 8" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) <= (binary_expression "iVar4 + 8" identifier + number_literal)) )) (compound_statement "{\n      uVar6 = iVar4 + 9;\n    }" { (expression_statement "uVar6 = iVar4 + 9;" (assignment_expression "uVar6 = iVar4 + 9" identifier = (binary_expression "iVar4 + 9" identifier + number_literal)) ;) })) (expression_statement "pIVar5->mxSz = uVar6;" (assignment_expression "pIVar5->mxSz = uVar6" (field_expression "pIVar5->mxSz" identifier -> field_identifier) = identifier) ;) (expression_statement "piVar1 = &(pTask->file2).iEof;" (assignment_expression "piVar1 = &(pTask->file2).iEof" identifier = (pointer_expression "&(pTask->file2).iEof" & (field_expression "(pTask->file2).iEof" (parenthesized_expression "(pTask->file2)" ( (field_expression "pTask->file2" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "iVar3 = *piVar1;" (assignment_expression "iVar3 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "*(uint *)piVar1 = (int)*piVar1 + uVar6;" (assignment_expression "*(uint *)piVar1 = (int)*piVar1 + uVar6" (pointer_expression "*(uint *)piVar1" * (cast_expression "(uint *)piVar1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(int)*piVar1 + uVar6" (cast_expression "(int)*piVar1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*piVar1" * identifier)) + identifier)) ;) (expression_statement "piVar2 = (int *)((int)&(pTask->file2).iEof + 4);" (assignment_expression "piVar2 = (int *)((int)&(pTask->file2).iEof + 4)" identifier = (cast_expression "(int *)((int)&(pTask->file2).iEof + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pTask->file2).iEof + 4)" ( (binary_expression "(int)&(pTask->file2).iEof + 4" (cast_expression "(int)&(pTask->file2).iEof" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pTask->file2).iEof" & (field_expression "(pTask->file2).iEof" (parenthesized_expression "(pTask->file2)" ( (field_expression "pTask->file2" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) ;) (expression_statement "*piVar2 = *piVar2 + ((int)uVar6 >> 0x1f) + (uint)CARRY4((uint)iVar3,uVar6);" (assignment_expression "*piVar2 = *piVar2 + ((int)uVar6 >> 0x1f) + (uint)CARRY4((uint)iVar3,uVar6)" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 + ((int)uVar6 >> 0x1f) + (uint)CARRY4((uint)iVar3,uVar6)" (binary_expression "*piVar2 + ((int)uVar6 >> 0x1f)" (pointer_expression "*piVar2" * identifier) + (parenthesized_expression "((int)uVar6 >> 0x1f)" ( (binary_expression "(int)uVar6 >> 0x1f" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)CARRY4((uint)iVar3,uVar6)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4((uint)iVar3,uVar6)" identifier (argument_list "((uint)iVar3,uVar6)" ( (cast_expression "(uint)iVar3" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier )))))) ;) (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00055596:\n  vdbeMergeEngineFree(pMerger);" statement_identifier : (expression_statement "vdbeMergeEngineFree(pMerger);" (call_expression "vdbeMergeEngineFree(pMerger)" identifier (argument_list "(pMerger)" ( identifier ))) ;)) (return_statement "return 7;" return number_literal ;) })))
(translation_unit "undefined4 FUN_00055510(void)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  int unaff_EBP;\n  undefined8 uVar7;\n  \n  uVar7 = FUN_00036ac9();\n  iVar3 = (int)uVar7;\n  if (*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0) {\n    iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);\n    if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }\n  }\n  puVar5 = (undefined8 *)FUN_00042370();\n  *extraout_ECX = (int)puVar5;\n  if (puVar5 != (undefined8 *)0x0) {\n    *puVar5 = uVar7;\n    iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);\n    uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    *(uint *)(puVar5 + 2) = uVar6;\n    puVar1 = (uint *)(iVar3 + 0x34);\n    uVar2 = *puVar1;\n    *puVar1 = *puVar1 + uVar6;\n    *(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);\n    return 0;\n  }\nLAB_00055596:\n  FUN_000554d0();\n  return 7;\n}\n\n" (function_definition "undefined4 FUN_00055510(void)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  int unaff_EBP;\n  undefined8 uVar7;\n  \n  uVar7 = FUN_00036ac9();\n  iVar3 = (int)uVar7;\n  if (*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0) {\n    iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);\n    if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }\n  }\n  puVar5 = (undefined8 *)FUN_00042370();\n  *extraout_ECX = (int)puVar5;\n  if (puVar5 != (undefined8 *)0x0) {\n    *puVar5 = uVar7;\n    iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);\n    uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    *(uint *)(puVar5 + 2) = uVar6;\n    puVar1 = (uint *)(iVar3 + 0x34);\n    uVar2 = *puVar1;\n    *puVar1 = *puVar1 + uVar6;\n    *(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);\n    return 0;\n  }\nLAB_00055596:\n  FUN_000554d0();\n  return 7;\n}" type_identifier (function_declarator "FUN_00055510(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  int unaff_EBP;\n  undefined8 uVar7;\n  \n  uVar7 = FUN_00036ac9();\n  iVar3 = (int)uVar7;\n  if (*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0) {\n    iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);\n    if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }\n  }\n  puVar5 = (undefined8 *)FUN_00042370();\n  *extraout_ECX = (int)puVar5;\n  if (puVar5 != (undefined8 *)0x0) {\n    *puVar5 = uVar7;\n    iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);\n    uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    *(uint *)(puVar5 + 2) = uVar6;\n    puVar1 = (uint *)(iVar3 + 0x34);\n    uVar2 = *puVar1;\n    *puVar1 = *puVar1 + uVar6;\n    *(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);\n    return 0;\n  }\nLAB_00055596:\n  FUN_000554d0();\n  return 7;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (expression_statement "uVar7 = FUN_00036ac9();" (assignment_expression "uVar7 = FUN_00036ac9()" identifier = (call_expression "FUN_00036ac9()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar3 = (int)uVar7;" (assignment_expression "iVar3 = (int)uVar7" identifier = (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0) {\n    iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);\n    if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }\n  }" if (parenthesized_expression "(*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0)" ( (binary_expression "*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0" (pointer_expression "*(code **)(&DAT_00126fd2 + unaff_EBP)" * (cast_expression "(code **)(&DAT_00126fd2 + unaff_EBP)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_00126fd2 + unaff_EBP)" ( (binary_expression "&DAT_00126fd2 + unaff_EBP" (pointer_expression "&DAT_00126fd2" & identifier) + identifier) )))) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);\n    if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }\n  }" { (expression_statement "iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);" (assignment_expression "iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100)" identifier = (call_expression "(**(code **)(&DAT_00126fd2 + unaff_EBP))(100)" (parenthesized_expression "(**(code **)(&DAT_00126fd2 + unaff_EBP))" ( (pointer_expression "**(code **)(&DAT_00126fd2 + unaff_EBP)" * (pointer_expression "*(code **)(&DAT_00126fd2 + unaff_EBP)" * (cast_expression "(code **)(&DAT_00126fd2 + unaff_EBP)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_00126fd2 + unaff_EBP)" ( (binary_expression "&DAT_00126fd2 + unaff_EBP" (pointer_expression "&DAT_00126fd2" & identifier) + identifier) ))))) )) (argument_list "(100)" ( number_literal )))) ;) (if_statement "if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }" { (expression_statement "*extraout_ECX = 0;" (assignment_expression "*extraout_ECX = 0" (pointer_expression "*extraout_ECX" * identifier) = number_literal) ;) (goto_statement "goto LAB_00055596;" goto statement_identifier ;) })) })) (expression_statement "puVar5 = (undefined8 *)FUN_00042370();" (assignment_expression "puVar5 = (undefined8 *)FUN_00042370()" identifier = (cast_expression "(undefined8 *)FUN_00042370()" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00042370()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*extraout_ECX = (int)puVar5;" (assignment_expression "*extraout_ECX = (int)puVar5" (pointer_expression "*extraout_ECX" * identifier) = (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (puVar5 != (undefined8 *)0x0) {\n    *puVar5 = uVar7;\n    iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);\n    uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    *(uint *)(puVar5 + 2) = uVar6;\n    puVar1 = (uint *)(iVar3 + 0x34);\n    uVar2 = *puVar1;\n    *puVar1 = *puVar1 + uVar6;\n    *(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);\n    return 0;\n  }" if (parenthesized_expression "(puVar5 != (undefined8 *)0x0)" ( (binary_expression "puVar5 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *puVar5 = uVar7;\n    iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);\n    uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    *(uint *)(puVar5 + 2) = uVar6;\n    puVar1 = (uint *)(iVar3 + 0x34);\n    uVar2 = *puVar1;\n    *puVar1 = *puVar1 + uVar6;\n    *(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);\n    return 0;\n  }" { (expression_statement "*puVar5 = uVar7;" (assignment_expression "*puVar5 = uVar7" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);" (assignment_expression "iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8)" identifier = (pointer_expression "*(int *)(*(int *)(iVar3 + 8) + 8)" * (cast_expression "(int *)(*(int *)(iVar3 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 8) + 8)" ( (binary_expression "*(int *)(iVar3 + 8) + 8" (pointer_expression "*(int *)(iVar3 + 8)" * (cast_expression "(int *)(iVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;" (assignment_expression "uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2" identifier = (binary_expression "*(int *)(*(int *)(iVar3 + 8) + 4) / 2" (pointer_expression "*(int *)(*(int *)(iVar3 + 8) + 4)" * (cast_expression "(int *)(*(int *)(iVar3 + 8) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 8) + 4)" ( (binary_expression "*(int *)(iVar3 + 8) + 4" (pointer_expression "*(int *)(iVar3 + 8)" * (cast_expression "(int *)(iVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) + number_literal) )))) / number_literal)) ;) (if_statement "if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }" if (parenthesized_expression "((int)uVar6 <= iVar4 + 8)" ( (binary_expression "(int)uVar6 <= iVar4 + 8" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) <= (binary_expression "iVar4 + 8" identifier + number_literal)) )) (compound_statement "{\n      uVar6 = iVar4 + 9;\n    }" { (expression_statement "uVar6 = iVar4 + 9;" (assignment_expression "uVar6 = iVar4 + 9" identifier = (binary_expression "iVar4 + 9" identifier + number_literal)) ;) })) (expression_statement "*(uint *)(puVar5 + 2) = uVar6;" (assignment_expression "*(uint *)(puVar5 + 2) = uVar6" (pointer_expression "*(uint *)(puVar5 + 2)" * (cast_expression "(uint *)(puVar5 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 2)" ( (binary_expression "puVar5 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar1 = (uint *)(iVar3 + 0x34);" (assignment_expression "puVar1 = (uint *)(iVar3 + 0x34)" identifier = (cast_expression "(uint *)(iVar3 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x34)" ( (binary_expression "iVar3 + 0x34" identifier + number_literal) )))) ;) (expression_statement "uVar2 = *puVar1;" (assignment_expression "uVar2 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = *puVar1 + uVar6;" (assignment_expression "*puVar1 = *puVar1 + uVar6" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + uVar6" (pointer_expression "*puVar1" * identifier) + identifier)) ;) (expression_statement "*(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);" (assignment_expression "*(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6)" (pointer_expression "*(int *)(iVar3 + 0x38)" * (cast_expression "(int *)(iVar3 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x38)" ( (binary_expression "iVar3 + 0x38" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6)" (binary_expression "*(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f)" (pointer_expression "*(int *)(iVar3 + 0x38)" * (cast_expression "(int *)(iVar3 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x38)" ( (binary_expression "iVar3 + 0x38" identifier + number_literal) )))) + (parenthesized_expression "((int)uVar6 >> 0x1f)" ( (binary_expression "(int)uVar6 >> 0x1f" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)CARRY4(uVar2,uVar6)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar2,uVar6)" identifier (argument_list "(uVar2,uVar6)" ( identifier , identifier )))))) ;) (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00055596:\n  FUN_000554d0();" statement_identifier : (expression_statement "FUN_000554d0();" (call_expression "FUN_000554d0()" identifier (argument_list "()" ( ))) ;)) (return_statement "return 7;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) ))))) )) (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (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) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (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) )))) + LIT) )))) / LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) ;) (return_statement return LIT ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_00055510(void)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  int unaff_EBP;\n  undefined8 uVar7;\n  \n  uVar7 = FUN_00036ac9();\n  iVar3 = (int)uVar7;\n  if (*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0) {\n    iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);\n    if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }\n  }\n  puVar5 = (undefined8 *)FUN_00042370();\n  *extraout_ECX = (int)puVar5;\n  if (puVar5 != (undefined8 *)0x0) {\n    *puVar5 = uVar7;\n    iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);\n    uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    *(uint *)(puVar5 + 2) = uVar6;\n    puVar1 = (uint *)(iVar3 + 0x34);\n    uVar2 = *puVar1;\n    *puVar1 = *puVar1 + uVar6;\n    *(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);\n    return 0;\n  }\nLAB_00055596:\n  FUN_000554d0();\n  return 7;\n}" (type_identifier "undefined4") (function_declarator "FUN_00055510(void)" (identifier "FUN_00055510") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  int unaff_EBP;\n  undefined8 uVar7;\n  \n  uVar7 = FUN_00036ac9();\n  iVar3 = (int)uVar7;\n  if (*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0) {\n    iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);\n    if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }\n  }\n  puVar5 = (undefined8 *)FUN_00042370();\n  *extraout_ECX = (int)puVar5;\n  if (puVar5 != (undefined8 *)0x0) {\n    *puVar5 = uVar7;\n    iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);\n    uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    *(uint *)(puVar5 + 2) = uVar6;\n    puVar1 = (uint *)(iVar3 + 0x34);\n    uVar2 = *puVar1;\n    *puVar1 = *puVar1 + uVar6;\n    *(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);\n    return 0;\n  }\nLAB_00055596:\n  FUN_000554d0();\n  return 7;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined8 *puVar5;" (type_identifier "undefined8") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int *extraout_ECX;" (primitive_type "int") (pointer_declarator "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int unaff_EBP;" (primitive_type "int") (identifier "unaff_EBP") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (expression_statement "uVar7 = FUN_00036ac9();" (assignment_expression "uVar7 = FUN_00036ac9()" (identifier "uVar7") (= "=") (call_expression "FUN_00036ac9()" (identifier "FUN_00036ac9") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar3 = (int)uVar7;" (assignment_expression "iVar3 = (int)uVar7" (identifier "iVar3") (= "=") (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7"))) (; ";")) (if_statement "if (*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0) {\n    iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);\n    if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }\n  }" (if "if") (parenthesized_expression "(*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0)" (( "(") (binary_expression "*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0" (pointer_expression "*(code **)(&DAT_00126fd2 + unaff_EBP)" (* "*") (cast_expression "(code **)(&DAT_00126fd2 + unaff_EBP)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(&DAT_00126fd2 + unaff_EBP)" (( "(") (binary_expression "&DAT_00126fd2 + unaff_EBP" (pointer_expression "&DAT_00126fd2" (& "&") (identifier "DAT_00126fd2")) (+ "+") (identifier "unaff_EBP")) () ")")))) (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);\n    if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }\n  }" ({ "{") (expression_statement "iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);" (assignment_expression "iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100)" (identifier "iVar4") (= "=") (call_expression "(**(code **)(&DAT_00126fd2 + unaff_EBP))(100)" (parenthesized_expression "(**(code **)(&DAT_00126fd2 + unaff_EBP))" (( "(") (pointer_expression "**(code **)(&DAT_00126fd2 + unaff_EBP)" (* "*") (pointer_expression "*(code **)(&DAT_00126fd2 + unaff_EBP)" (* "*") (cast_expression "(code **)(&DAT_00126fd2 + unaff_EBP)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(&DAT_00126fd2 + unaff_EBP)" (( "(") (binary_expression "&DAT_00126fd2 + unaff_EBP" (pointer_expression "&DAT_00126fd2" (& "&") (identifier "DAT_00126fd2")) (+ "+") (identifier "unaff_EBP")) () ")"))))) () ")")) (argument_list "(100)" (( "(") (number_literal "100") () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *extraout_ECX = 0;\n      goto LAB_00055596;\n    }" ({ "{") (expression_statement "*extraout_ECX = 0;" (assignment_expression "*extraout_ECX = 0" (pointer_expression "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00055596;" (goto "goto") (statement_identifier "LAB_00055596") (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar5 = (undefined8 *)FUN_00042370();" (assignment_expression "puVar5 = (undefined8 *)FUN_00042370()" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)FUN_00042370()" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00042370()" (identifier "FUN_00042370") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*extraout_ECX = (int)puVar5;" (assignment_expression "*extraout_ECX = (int)puVar5" (pointer_expression "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (= "=") (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5"))) (; ";")) (if_statement "if (puVar5 != (undefined8 *)0x0) {\n    *puVar5 = uVar7;\n    iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);\n    uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    *(uint *)(puVar5 + 2) = uVar6;\n    puVar1 = (uint *)(iVar3 + 0x34);\n    uVar2 = *puVar1;\n    *puVar1 = *puVar1 + uVar6;\n    *(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);\n    return 0;\n  }" (if "if") (parenthesized_expression "(puVar5 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar5 != (undefined8 *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    *puVar5 = uVar7;\n    iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);\n    uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;\n    if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }\n    *(uint *)(puVar5 + 2) = uVar6;\n    puVar1 = (uint *)(iVar3 + 0x34);\n    uVar2 = *puVar1;\n    *puVar1 = *puVar1 + uVar6;\n    *(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);\n    return 0;\n  }" ({ "{") (expression_statement "*puVar5 = uVar7;" (assignment_expression "*puVar5 = uVar7" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);" (assignment_expression "iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(*(int *)(iVar3 + 8) + 8)" (* "*") (cast_expression "(int *)(*(int *)(iVar3 + 8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 8) + 8)" (( "(") (binary_expression "*(int *)(iVar3 + 8) + 8" (pointer_expression "*(int *)(iVar3 + 8)" (* "*") (cast_expression "(int *)(iVar3 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;" (assignment_expression "uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2" (identifier "uVar6") (= "=") (binary_expression "*(int *)(*(int *)(iVar3 + 8) + 4) / 2" (pointer_expression "*(int *)(*(int *)(iVar3 + 8) + 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar3 + 8) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 8) + 4)" (( "(") (binary_expression "*(int *)(iVar3 + 8) + 4" (pointer_expression "*(int *)(iVar3 + 8)" (* "*") (cast_expression "(int *)(iVar3 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (/ "/") (number_literal "2"))) (; ";")) (if_statement "if ((int)uVar6 <= iVar4 + 8) {\n      uVar6 = iVar4 + 9;\n    }" (if "if") (parenthesized_expression "((int)uVar6 <= iVar4 + 8)" (( "(") (binary_expression "(int)uVar6 <= iVar4 + 8" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (<= "<=") (binary_expression "iVar4 + 8" (identifier "iVar4") (+ "+") (number_literal "8"))) () ")")) (compound_statement "{\n      uVar6 = iVar4 + 9;\n    }" ({ "{") (expression_statement "uVar6 = iVar4 + 9;" (assignment_expression "uVar6 = iVar4 + 9" (identifier "uVar6") (= "=") (binary_expression "iVar4 + 9" (identifier "iVar4") (+ "+") (number_literal "9"))) (; ";")) (} "}"))) (expression_statement "*(uint *)(puVar5 + 2) = uVar6;" (assignment_expression "*(uint *)(puVar5 + 2) = uVar6" (pointer_expression "*(uint *)(puVar5 + 2)" (* "*") (cast_expression "(uint *)(puVar5 + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 2)" (( "(") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "puVar1 = (uint *)(iVar3 + 0x34);" (assignment_expression "puVar1 = (uint *)(iVar3 + 0x34)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(iVar3 + 0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x34)" (( "(") (binary_expression "iVar3 + 0x34" (identifier "iVar3") (+ "+") (number_literal "0x34")) () ")")))) (; ";")) (expression_statement "uVar2 = *puVar1;" (assignment_expression "uVar2 = *puVar1" (identifier "uVar2") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "*puVar1 = *puVar1 + uVar6;" (assignment_expression "*puVar1 = *puVar1 + uVar6" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (binary_expression "*puVar1 + uVar6" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (+ "+") (identifier "uVar6"))) (; ";")) (expression_statement "*(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);" (assignment_expression "*(int *)(iVar3 + 0x38) =\n         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6)" (pointer_expression "*(int *)(iVar3 + 0x38)" (* "*") (cast_expression "(int *)(iVar3 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x38)" (( "(") (binary_expression "iVar3 + 0x38" (identifier "iVar3") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (binary_expression "*(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6)" (binary_expression "*(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f)" (pointer_expression "*(int *)(iVar3 + 0x38)" (* "*") (cast_expression "(int *)(iVar3 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x38)" (( "(") (binary_expression "iVar3 + 0x38" (identifier "iVar3") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (parenthesized_expression "((int)uVar6 >> 0x1f)" (( "(") (binary_expression "(int)uVar6 >> 0x1f" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "0x1f")) () ")"))) (+ "+") (cast_expression "(uint)CARRY4(uVar2,uVar6)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar2,uVar6)" (identifier "CARRY4") (argument_list "(uVar2,uVar6)" (( "(") (identifier "uVar2") (, ",") (identifier "uVar6") () ")")))))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (labeled_statement "LAB_00055596:\n  FUN_000554d0();" (statement_identifier "LAB_00055596") (: ":") (expression_statement "FUN_000554d0();" (call_expression "FUN_000554d0()" (identifier "FUN_000554d0") (argument_list "()" (( "(") () ")"))) (; ";"))) (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */

int __regparm3 function_1(type_1 *pTask,type_2 *pMerger,type_3 **ppOut)

{
  type_4 *piVar1;
  int *piVar2;
  type_4 iVar3;
  int var_1;
  type_3 *var_3;
  type_5 var_4;
  type_6 in_stack_ffffffe4;
  
  if (sqlite3Config.xTestCallback != (type_7 *)0x0) {
    var_1 = (*sqlite3Config.xTestCallback)(100);
    if (var_1 != 0) {
      *ppOut = (type_3 *)0x0;
      goto LAB_00055596;
    }
  }
  var_3 = (type_3 *)var_2(in_stack_ffffffe4);
  *ppOut = var_3;
  if (var_3 != (type_3 *)0x0) {
    var_3->pMerger = pMerger;
    var_3->pTask = pTask;
    var_1 = pTask->pSorter->mxKeysize;
    var_4 = pTask->pSorter->mxPmaSize / 2;
    if ((int)var_4 <= var_1 + 8) {
      var_4 = var_1 + 9;
    }
    var_3->mxSz = var_4;
    piVar1 = &(pTask->file2).iEof;
    iVar3 = *piVar1;
    *(type_5 *)piVar1 = (int)*piVar1 + var_4;
    piVar2 = (int *)((int)&(pTask->file2).iEof + 4);
    *piVar2 = *piVar2 + ((int)var_4 >> 0x1f) + (type_5)var_5((type_5)iVar3,var_4);
    return 0;
  }
LAB_00055596:
  var_6(pMerger);
  return 7;
}


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

undefined4 MASKED(void)

{
  uint *puVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  undefined8 *puVar5;
  int *extraout_ECX;
  uint uVar6;
  int unaff_EBP;
  undefined8 uVar7;
  
  uVar7 = FUN_00036ac9();
  iVar3 = (int)uVar7;
  if (*(code **)(&DAT_00126fd2 + unaff_EBP) != (code *)0x0) {
    iVar4 = (**(code **)(&DAT_00126fd2 + unaff_EBP))(100);
    if (iVar4 != 0) {
      *extraout_ECX = 0;
      goto LAB_00055596;
    }
  }
  puVar5 = (undefined8 *)FUN_00042370();
  *extraout_ECX = (int)puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    *puVar5 = uVar7;
    iVar4 = *(int *)(*(int *)(iVar3 + 8) + 8);
    uVar6 = *(int *)(*(int *)(iVar3 + 8) + 4) / 2;
    if ((int)uVar6 <= iVar4 + 8) {
      uVar6 = iVar4 + 9;
    }
    *(uint *)(puVar5 + 2) = uVar6;
    puVar1 = (uint *)(iVar3 + 0x34);
    uVar2 = *puVar1;
    *puVar1 = *puVar1 + uVar6;
    *(int *)(iVar3 + 0x38) =
         *(int *)(iVar3 + 0x38) + ((int)uVar6 >> 0x1f) + (uint)CARRY4(uVar2,uVar6);
    return 0;
  }
LAB_00055596:
  FUN_000554d0();
  return 7;
}

