
void __regparm3 copyNodeContent(MemPage *pFrom,MemPage *pTo,int *pRC)

{
  void *pvVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int *extraout_ECX;
  uint uVar6;
  undefined8 uVar7;
  void *local_2c;
  
  uVar7 = __x86_get_pc_thunk_di();
  iVar3 = (int)uVar7;
  pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);
  iVar2 = *(int *)(iVar3 + 0x34);
  iVar5 = *(int *)(iVar3 + 0x38);
  uVar6 = (uint)*(byte *)(iVar3 + 9);
  local_2c = pvVar1;
  if (pTo->pgno == 1) {
    local_2c = (void *)((int)pvVar1 + 100);
  }
  uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));
  memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);
  memcpy(local_2c,(void *)(iVar5 + uVar6),
         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);
  pTo->isInit = '\0';
  iVar5 = btreeInitPage(pTo);
  if (iVar5 == 0) {
    if (*(char *)(iVar2 + 0x11) == '\0') {
      return;
    }
    iVar5 = setChildPtrmaps(pTo);
  }
  *extraout_ECX = iVar5;
  return;
}



void __regparm3 FUN_0009d440(undefined4 param_1,undefined1 *param_2)

{
  void *pvVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int *extraout_ECX;
  uint uVar6;
  undefined8 uVar7;
  void *local_2c;
  
  uVar7 = FUN_00036ac5();
  iVar3 = (int)uVar7;
  pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);
  iVar2 = *(int *)(iVar3 + 0x34);
  iVar5 = *(int *)(iVar3 + 0x38);
  uVar6 = (uint)*(byte *)(iVar3 + 9);
  local_2c = pvVar1;
  if (*(int *)(param_2 + 4) == 1) {
    local_2c = (void *)((int)pvVar1 + 100);
  }
  uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));
  memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);
  memcpy(local_2c,(void *)(iVar5 + uVar6),
         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);
  *param_2 = 0;
  iVar5 = FUN_0006ec40();
  if (iVar5 == 0) {
    if (*(char *)(iVar2 + 0x11) == '\0') {
      return;
    }
    iVar5 = FUN_0009d310();
  }
  *extraout_ECX = iVar5;
  return;
}


PUSH EBP
MOV EBP,EDX
PUSH EDI
CALL 0x00036ac5
ADD EDI,0xde9df
PUSH ESI
PUSH EBX
SUB ESP,0x2c
CMP dword ptr [EBP + 0x4],0x1
MOV dword ptr [ESP + 0x1c],ECX
MOV ECX,dword ptr [EDX + 0x38]
MOV dword ptr [ESP + 0x8],EDI
MOV EDI,EAX
MOV EAX,dword ptr [EAX + 0x34]
MOV ESI,dword ptr [EDI + 0x38]
MOVZX EDX,byte ptr [EDI + 0x9]
MOV dword ptr [ESP + 0x10],ECX
MOV dword ptr [ESP + 0xc],EAX
JNZ 0x0009d480
LEA EAX,[ECX + 0x64]
MOV dword ptr [ESP + 0x10],EAX
MOVZX EAX,byte ptr [ESI + EDX*0x1 + 0x5]
MOVZX EBX,byte ptr [ESI + EDX*0x1 + 0x6]
MOV dword ptr [ESP + 0x18],EDX
SUB ESP,0x4
MOV EDX,dword ptr [ESP + 0x10]
SHL EAX,0x8
OR EAX,EBX
MOV EBX,dword ptr [EDX + 0x24]
ADD ECX,EAX
MOV dword ptr [ESP + 0x18],EBX
SUB EBX,EAX
ADD EAX,ESI
PUSH EBX
PUSH EAX
PUSH ECX
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x00015130
MOVZX ECX,word ptr [EDI + 0x12]
MOVZX EAX,word ptr [EDI + 0x16]
MOV EDX,dword ptr [ESP + 0x28]
ADD ESP,0xc
LEA EAX,[ECX + EAX*0x2]
ADD ESI,EDX
PUSH EAX
PUSH ESI
PUSH dword ptr [ESP + 0x1c]
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x00015130
MOV byte ptr [EBP],0x0
MOV EAX,EBP
CALL 0x0006ec40
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0009d507
MOV EAX,dword ptr [ESP + 0xc]
CMP byte ptr [EAX + 0x11],0x0
JNZ 0x0009d500
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,EBP
CALL 0x0009d310
MOV ESI,dword ptr [ESP + 0x1c]
MOV dword ptr [ESI],EAX
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "void __regparm3 FUN_0009d440(undefined4 param_1,undefined1 *param_2)\n\n{\n  void *pvVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  undefined8 uVar7;\n  void *local_2c;\n  \n  uVar7 = FUN_00036ac5();\n  iVar3 = (int)uVar7;\n  pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);\n  iVar2 = *(int *)(iVar3 + 0x34);\n  iVar5 = *(int *)(iVar3 + 0x38);\n  uVar6 = (uint)*(byte *)(iVar3 + 9);\n  local_2c = pvVar1;\n  if (*(int *)(param_2 + 4) == 1) {\n    local_2c = (void *)((int)pvVar1 + 100);\n  }\n  uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));\n  memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);\n  memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);\n  *param_2 = 0;\n  iVar5 = FUN_0006ec40();\n  if (iVar5 == 0) {\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = FUN_0009d310();\n  }\n  *extraout_ECX = iVar5;\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_0009d440(undefined4 param_1,undefined1 *param_2)\n\n{\n  void *pvVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  undefined8 uVar7;\n  void *local_2c;\n  \n  uVar7 = FUN_00036ac5();\n  iVar3 = (int)uVar7;\n  pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);\n  iVar2 = *(int *)(iVar3 + 0x34);\n  iVar5 = *(int *)(iVar3 + 0x38);\n  uVar6 = (uint)*(byte *)(iVar3 + 9);\n  local_2c = pvVar1;\n  if (*(int *)(param_2 + 4) == 1) {\n    local_2c = (void *)((int)pvVar1 + 100);\n  }\n  uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));\n  memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);\n  memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);\n  *param_2 = 0;\n  iVar5 = FUN_0006ec40();\n  if (iVar5 == 0) {\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = FUN_0009d310();\n  }\n  *extraout_ECX = iVar5;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0009d440(undefined4 param_1,undefined1 *param_2)" identifier (parameter_list "(undefined4 param_1,undefined1 *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined1 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  void *pvVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  undefined8 uVar7;\n  void *local_2c;\n  \n  uVar7 = FUN_00036ac5();\n  iVar3 = (int)uVar7;\n  pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);\n  iVar2 = *(int *)(iVar3 + 0x34);\n  iVar5 = *(int *)(iVar3 + 0x38);\n  uVar6 = (uint)*(byte *)(iVar3 + 9);\n  local_2c = pvVar1;\n  if (*(int *)(param_2 + 4) == 1) {\n    local_2c = (void *)((int)pvVar1 + 100);\n  }\n  uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));\n  memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);\n  memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);\n  *param_2 = 0;\n  iVar5 = FUN_0006ec40();\n  if (iVar5 == 0) {\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = FUN_0009d310();\n  }\n  *extraout_ECX = iVar5;\n  return;\n}" { (declaration "void *pvVar1;" primitive_type (pointer_declarator "*pvVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "void *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "uVar7 = FUN_00036ac5();" (assignment_expression "uVar7 = FUN_00036ac5()" identifier = (call_expression "FUN_00036ac5()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar3 = (int)uVar7;" (assignment_expression "iVar3 = (int)uVar7" identifier = (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);" (assignment_expression "pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38)" identifier = (pointer_expression "*(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38)" * (cast_expression "(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)((ulonglong)uVar7 >> 0x20) + 0x38)" ( (binary_expression "(int)((ulonglong)uVar7 >> 0x20) + 0x38" (cast_expression "(int)((ulonglong)uVar7 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" ( (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(iVar3 + 0x34);" (assignment_expression "iVar2 = *(int *)(iVar3 + 0x34)" identifier = (pointer_expression "*(int *)(iVar3 + 0x34)" * (cast_expression "(int *)(iVar3 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x34)" ( (binary_expression "iVar3 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(iVar3 + 0x38);" (assignment_expression "iVar5 = *(int *)(iVar3 + 0x38)" identifier = (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) ))))) ;) (expression_statement "uVar6 = (uint)*(byte *)(iVar3 + 9);" (assignment_expression "uVar6 = (uint)*(byte *)(iVar3 + 9)" identifier = (binary_expression "(uint)*(byte *)(iVar3 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar3 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 9)" ( (binary_expression "iVar3 + 9" identifier + number_literal) ))))) ;) (expression_statement "local_2c = pvVar1;" (assignment_expression "local_2c = pvVar1" identifier = identifier) ;) (if_statement "if (*(int *)(param_2 + 4) == 1) {\n    local_2c = (void *)((int)pvVar1 + 100);\n  }" if (parenthesized_expression "(*(int *)(param_2 + 4) == 1)" ( (binary_expression "*(int *)(param_2 + 4) == 1" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    local_2c = (void *)((int)pvVar1 + 100);\n  }" { (expression_statement "local_2c = (void *)((int)pvVar1 + 100);" (assignment_expression "local_2c = (void *)((int)pvVar1 + 100)" identifier = (cast_expression "(void *)((int)pvVar1 + 100)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar1 + 100)" ( (binary_expression "(int)pvVar1 + 100" (cast_expression "(int)pvVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (expression_statement "uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));" (assignment_expression "uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6))" identifier = (cast_expression "(uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6))" identifier (argument_list "(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6))" ( (pointer_expression "*(undefined1 *)(iVar5 + 5 + uVar6)" * (cast_expression "(undefined1 *)(iVar5 + 5 + uVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 5 + uVar6)" ( (binary_expression "iVar5 + 5 + uVar6" (binary_expression "iVar5 + 5" identifier + number_literal) + identifier) )))) , (pointer_expression "*(undefined1 *)(iVar5 + 6 + uVar6)" * (cast_expression "(undefined1 *)(iVar5 + 6 + uVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 6 + uVar6)" ( (binary_expression "iVar5 + 6 + uVar6" (binary_expression "iVar5 + 6" identifier + number_literal) + identifier) )))) ))))) ;) (expression_statement "memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);" (call_expression "memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4)" identifier (argument_list "((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4)" ( (cast_expression "(void *)((int)pvVar1 + uVar4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar1 + uVar4)" ( (binary_expression "(int)pvVar1 + uVar4" (cast_expression "(int)pvVar1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) , (cast_expression "(void *)(uVar4 + iVar5)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + iVar5)" ( (binary_expression "uVar4 + iVar5" identifier + identifier) ))) , (binary_expression "*(int *)(iVar2 + 0x24) - uVar4" (pointer_expression "*(int *)(iVar2 + 0x24)" * (cast_expression "(int *)(iVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) )))) - identifier) ))) ;) (expression_statement "memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);" (call_expression "memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2)" identifier (argument_list "(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2)" ( identifier , (cast_expression "(void *)(iVar5 + uVar6)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + uVar6)" ( (binary_expression "iVar5 + uVar6" identifier + identifier) ))) , (binary_expression "(uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2" (binary_expression "(uint)*(ushort *)(iVar3 + 0x12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar3 + 0x12)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x12)" ( (binary_expression "iVar3 + 0x12" identifier + number_literal) )))) + (binary_expression "(uint)*(ushort *)(iVar3 + 0x16) * 2" (binary_expression "(uint)*(ushort *)(iVar3 + 0x16)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar3 + 0x16)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x16)" ( (binary_expression "iVar3 + 0x16" identifier + number_literal) )))) * number_literal)) ))) ;) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) (expression_statement "iVar5 = FUN_0006ec40();" (assignment_expression "iVar5 = FUN_0006ec40()" identifier = (call_expression "FUN_0006ec40()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) {\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = FUN_0009d310();\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = FUN_0009d310();\n  }" { (if_statement "if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }" if (parenthesized_expression "(*(char *)(iVar2 + 0x11) == '\0')" ( (binary_expression "*(char *)(iVar2 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar2 + 0x11)" * (cast_expression "(char *)(iVar2 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x11)" ( (binary_expression "iVar2 + 0x11" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "iVar5 = FUN_0009d310();" (assignment_expression "iVar5 = FUN_0009d310()" identifier = (call_expression "FUN_0009d310()" identifier (argument_list "()" ( )))) ;) })) (expression_statement "*extraout_ECX = iVar5;" (assignment_expression "*extraout_ECX = iVar5" (pointer_expression "*extraout_ECX" * identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 copyNodeContent(MemPage *pFrom,MemPage *pTo,int *pRC)\n\n{\n  void *pvVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  undefined8 uVar7;\n  void *local_2c;\n  \n  uVar7 = __x86_get_pc_thunk_di();\n  iVar3 = (int)uVar7;\n  pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);\n  iVar2 = *(int *)(iVar3 + 0x34);\n  iVar5 = *(int *)(iVar3 + 0x38);\n  uVar6 = (uint)*(byte *)(iVar3 + 9);\n  local_2c = pvVar1;\n  if (pTo->pgno == 1) {\n    local_2c = (void *)((int)pvVar1 + 100);\n  }\n  uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));\n  memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);\n  memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);\n  pTo->isInit = '\0';\n  iVar5 = btreeInitPage(pTo);\n  if (iVar5 == 0) {\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = setChildPtrmaps(pTo);\n  }\n  *extraout_ECX = iVar5;\n  return;\n}\n\n" (function_definition "void __regparm3 copyNodeContent(MemPage *pFrom,MemPage *pTo,int *pRC)\n\n{\n  void *pvVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  undefined8 uVar7;\n  void *local_2c;\n  \n  uVar7 = __x86_get_pc_thunk_di();\n  iVar3 = (int)uVar7;\n  pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);\n  iVar2 = *(int *)(iVar3 + 0x34);\n  iVar5 = *(int *)(iVar3 + 0x38);\n  uVar6 = (uint)*(byte *)(iVar3 + 9);\n  local_2c = pvVar1;\n  if (pTo->pgno == 1) {\n    local_2c = (void *)((int)pvVar1 + 100);\n  }\n  uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));\n  memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);\n  memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);\n  pTo->isInit = '\0';\n  iVar5 = btreeInitPage(pTo);\n  if (iVar5 == 0) {\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = setChildPtrmaps(pTo);\n  }\n  *extraout_ECX = iVar5;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "copyNodeContent(MemPage *pFrom,MemPage *pTo,int *pRC)" identifier (parameter_list "(MemPage *pFrom,MemPage *pTo,int *pRC)" ( (parameter_declaration "MemPage *pFrom" type_identifier (pointer_declarator "*pFrom" * identifier)) , (parameter_declaration "MemPage *pTo" type_identifier (pointer_declarator "*pTo" * identifier)) , (parameter_declaration "int *pRC" primitive_type (pointer_declarator "*pRC" * identifier)) ))) (compound_statement "{\n  void *pvVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  undefined8 uVar7;\n  void *local_2c;\n  \n  uVar7 = __x86_get_pc_thunk_di();\n  iVar3 = (int)uVar7;\n  pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);\n  iVar2 = *(int *)(iVar3 + 0x34);\n  iVar5 = *(int *)(iVar3 + 0x38);\n  uVar6 = (uint)*(byte *)(iVar3 + 9);\n  local_2c = pvVar1;\n  if (pTo->pgno == 1) {\n    local_2c = (void *)((int)pvVar1 + 100);\n  }\n  uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));\n  memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);\n  memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);\n  pTo->isInit = '\0';\n  iVar5 = btreeInitPage(pTo);\n  if (iVar5 == 0) {\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = setChildPtrmaps(pTo);\n  }\n  *extraout_ECX = iVar5;\n  return;\n}" { (declaration "void *pvVar1;" primitive_type (pointer_declarator "*pvVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "void *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "uVar7 = __x86_get_pc_thunk_di();" (assignment_expression "uVar7 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar3 = (int)uVar7;" (assignment_expression "iVar3 = (int)uVar7" identifier = (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);" (assignment_expression "pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38)" identifier = (pointer_expression "*(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38)" * (cast_expression "(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)((ulonglong)uVar7 >> 0x20) + 0x38)" ( (binary_expression "(int)((ulonglong)uVar7 >> 0x20) + 0x38" (cast_expression "(int)((ulonglong)uVar7 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" ( (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(iVar3 + 0x34);" (assignment_expression "iVar2 = *(int *)(iVar3 + 0x34)" identifier = (pointer_expression "*(int *)(iVar3 + 0x34)" * (cast_expression "(int *)(iVar3 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x34)" ( (binary_expression "iVar3 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(iVar3 + 0x38);" (assignment_expression "iVar5 = *(int *)(iVar3 + 0x38)" identifier = (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) ))))) ;) (expression_statement "uVar6 = (uint)*(byte *)(iVar3 + 9);" (assignment_expression "uVar6 = (uint)*(byte *)(iVar3 + 9)" identifier = (binary_expression "(uint)*(byte *)(iVar3 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar3 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 9)" ( (binary_expression "iVar3 + 9" identifier + number_literal) ))))) ;) (expression_statement "local_2c = pvVar1;" (assignment_expression "local_2c = pvVar1" identifier = identifier) ;) (if_statement "if (pTo->pgno == 1) {\n    local_2c = (void *)((int)pvVar1 + 100);\n  }" if (parenthesized_expression "(pTo->pgno == 1)" ( (binary_expression "pTo->pgno == 1" (field_expression "pTo->pgno" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    local_2c = (void *)((int)pvVar1 + 100);\n  }" { (expression_statement "local_2c = (void *)((int)pvVar1 + 100);" (assignment_expression "local_2c = (void *)((int)pvVar1 + 100)" identifier = (cast_expression "(void *)((int)pvVar1 + 100)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar1 + 100)" ( (binary_expression "(int)pvVar1 + 100" (cast_expression "(int)pvVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (expression_statement "uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));" (assignment_expression "uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6))" identifier = (cast_expression "(uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6))" identifier (argument_list "(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6))" ( (pointer_expression "*(undefined1 *)(iVar5 + 5 + uVar6)" * (cast_expression "(undefined1 *)(iVar5 + 5 + uVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 5 + uVar6)" ( (binary_expression "iVar5 + 5 + uVar6" (binary_expression "iVar5 + 5" identifier + number_literal) + identifier) )))) , (pointer_expression "*(undefined1 *)(iVar5 + 6 + uVar6)" * (cast_expression "(undefined1 *)(iVar5 + 6 + uVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 6 + uVar6)" ( (binary_expression "iVar5 + 6 + uVar6" (binary_expression "iVar5 + 6" identifier + number_literal) + identifier) )))) ))))) ;) (expression_statement "memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);" (call_expression "memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4)" identifier (argument_list "((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4)" ( (cast_expression "(void *)((int)pvVar1 + uVar4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar1 + uVar4)" ( (binary_expression "(int)pvVar1 + uVar4" (cast_expression "(int)pvVar1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) , (cast_expression "(void *)(uVar4 + iVar5)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + iVar5)" ( (binary_expression "uVar4 + iVar5" identifier + identifier) ))) , (binary_expression "*(int *)(iVar2 + 0x24) - uVar4" (pointer_expression "*(int *)(iVar2 + 0x24)" * (cast_expression "(int *)(iVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) )))) - identifier) ))) ;) (expression_statement "memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);" (call_expression "memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2)" identifier (argument_list "(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2)" ( identifier , (cast_expression "(void *)(iVar5 + uVar6)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + uVar6)" ( (binary_expression "iVar5 + uVar6" identifier + identifier) ))) , (binary_expression "(uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2" (binary_expression "(uint)*(ushort *)(iVar3 + 0x12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar3 + 0x12)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x12)" ( (binary_expression "iVar3 + 0x12" identifier + number_literal) )))) + (binary_expression "(uint)*(ushort *)(iVar3 + 0x16) * 2" (binary_expression "(uint)*(ushort *)(iVar3 + 0x16)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar3 + 0x16)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x16)" ( (binary_expression "iVar3 + 0x16" identifier + number_literal) )))) * number_literal)) ))) ;) (expression_statement "pTo->isInit = '\0';" (assignment_expression "pTo->isInit = '\0'" (field_expression "pTo->isInit" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar5 = btreeInitPage(pTo);" (assignment_expression "iVar5 = btreeInitPage(pTo)" identifier = (call_expression "btreeInitPage(pTo)" identifier (argument_list "(pTo)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) {\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = setChildPtrmaps(pTo);\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = setChildPtrmaps(pTo);\n  }" { (if_statement "if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }" if (parenthesized_expression "(*(char *)(iVar2 + 0x11) == '\0')" ( (binary_expression "*(char *)(iVar2 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar2 + 0x11)" * (cast_expression "(char *)(iVar2 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x11)" ( (binary_expression "iVar2 + 0x11" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "iVar5 = setChildPtrmaps(pTo);" (assignment_expression "iVar5 = setChildPtrmaps(pTo)" identifier = (call_expression "setChildPtrmaps(pTo)" identifier (argument_list "(pTo)" ( identifier )))) ;) })) (expression_statement "*extraout_ECX = iVar5;" (assignment_expression "*extraout_ECX = iVar5" (pointer_expression "*extraout_ECX" * identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 FUN_0009d440(undefined4 param_1,undefined1 *param_2)\n\n{\n  void *pvVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  undefined8 uVar7;\n  void *local_2c;\n  \n  uVar7 = FUN_00036ac5();\n  iVar3 = (int)uVar7;\n  pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);\n  iVar2 = *(int *)(iVar3 + 0x34);\n  iVar5 = *(int *)(iVar3 + 0x38);\n  uVar6 = (uint)*(byte *)(iVar3 + 9);\n  local_2c = pvVar1;\n  if (*(int *)(param_2 + 4) == 1) {\n    local_2c = (void *)((int)pvVar1 + 100);\n  }\n  uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));\n  memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);\n  memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);\n  *param_2 = 0;\n  iVar5 = FUN_0006ec40();\n  if (iVar5 == 0) {\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = FUN_0009d310();\n  }\n  *extraout_ECX = iVar5;\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_0009d440(undefined4 param_1,undefined1 *param_2)\n\n{\n  void *pvVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  undefined8 uVar7;\n  void *local_2c;\n  \n  uVar7 = FUN_00036ac5();\n  iVar3 = (int)uVar7;\n  pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);\n  iVar2 = *(int *)(iVar3 + 0x34);\n  iVar5 = *(int *)(iVar3 + 0x38);\n  uVar6 = (uint)*(byte *)(iVar3 + 9);\n  local_2c = pvVar1;\n  if (*(int *)(param_2 + 4) == 1) {\n    local_2c = (void *)((int)pvVar1 + 100);\n  }\n  uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));\n  memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);\n  memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);\n  *param_2 = 0;\n  iVar5 = FUN_0006ec40();\n  if (iVar5 == 0) {\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = FUN_0009d310();\n  }\n  *extraout_ECX = iVar5;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0009d440(undefined4 param_1,undefined1 *param_2)" identifier (parameter_list "(undefined4 param_1,undefined1 *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined1 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  void *pvVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  undefined8 uVar7;\n  void *local_2c;\n  \n  uVar7 = FUN_00036ac5();\n  iVar3 = (int)uVar7;\n  pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);\n  iVar2 = *(int *)(iVar3 + 0x34);\n  iVar5 = *(int *)(iVar3 + 0x38);\n  uVar6 = (uint)*(byte *)(iVar3 + 9);\n  local_2c = pvVar1;\n  if (*(int *)(param_2 + 4) == 1) {\n    local_2c = (void *)((int)pvVar1 + 100);\n  }\n  uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));\n  memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);\n  memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);\n  *param_2 = 0;\n  iVar5 = FUN_0006ec40();\n  if (iVar5 == 0) {\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = FUN_0009d310();\n  }\n  *extraout_ECX = iVar5;\n  return;\n}" { (declaration "void *pvVar1;" primitive_type (pointer_declarator "*pvVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "void *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "uVar7 = FUN_00036ac5();" (assignment_expression "uVar7 = FUN_00036ac5()" identifier = (call_expression "FUN_00036ac5()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar3 = (int)uVar7;" (assignment_expression "iVar3 = (int)uVar7" identifier = (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);" (assignment_expression "pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38)" identifier = (pointer_expression "*(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38)" * (cast_expression "(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)((ulonglong)uVar7 >> 0x20) + 0x38)" ( (binary_expression "(int)((ulonglong)uVar7 >> 0x20) + 0x38" (cast_expression "(int)((ulonglong)uVar7 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" ( (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(iVar3 + 0x34);" (assignment_expression "iVar2 = *(int *)(iVar3 + 0x34)" identifier = (pointer_expression "*(int *)(iVar3 + 0x34)" * (cast_expression "(int *)(iVar3 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x34)" ( (binary_expression "iVar3 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(iVar3 + 0x38);" (assignment_expression "iVar5 = *(int *)(iVar3 + 0x38)" identifier = (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) ))))) ;) (expression_statement "uVar6 = (uint)*(byte *)(iVar3 + 9);" (assignment_expression "uVar6 = (uint)*(byte *)(iVar3 + 9)" identifier = (binary_expression "(uint)*(byte *)(iVar3 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar3 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 9)" ( (binary_expression "iVar3 + 9" identifier + number_literal) ))))) ;) (expression_statement "local_2c = pvVar1;" (assignment_expression "local_2c = pvVar1" identifier = identifier) ;) (if_statement "if (*(int *)(param_2 + 4) == 1) {\n    local_2c = (void *)((int)pvVar1 + 100);\n  }" if (parenthesized_expression "(*(int *)(param_2 + 4) == 1)" ( (binary_expression "*(int *)(param_2 + 4) == 1" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    local_2c = (void *)((int)pvVar1 + 100);\n  }" { (expression_statement "local_2c = (void *)((int)pvVar1 + 100);" (assignment_expression "local_2c = (void *)((int)pvVar1 + 100)" identifier = (cast_expression "(void *)((int)pvVar1 + 100)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar1 + 100)" ( (binary_expression "(int)pvVar1 + 100" (cast_expression "(int)pvVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (expression_statement "uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));" (assignment_expression "uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6))" identifier = (cast_expression "(uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6))" identifier (argument_list "(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6))" ( (pointer_expression "*(undefined1 *)(iVar5 + 5 + uVar6)" * (cast_expression "(undefined1 *)(iVar5 + 5 + uVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 5 + uVar6)" ( (binary_expression "iVar5 + 5 + uVar6" (binary_expression "iVar5 + 5" identifier + number_literal) + identifier) )))) , (pointer_expression "*(undefined1 *)(iVar5 + 6 + uVar6)" * (cast_expression "(undefined1 *)(iVar5 + 6 + uVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 6 + uVar6)" ( (binary_expression "iVar5 + 6 + uVar6" (binary_expression "iVar5 + 6" identifier + number_literal) + identifier) )))) ))))) ;) (expression_statement "memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);" (call_expression "memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4)" identifier (argument_list "((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4)" ( (cast_expression "(void *)((int)pvVar1 + uVar4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar1 + uVar4)" ( (binary_expression "(int)pvVar1 + uVar4" (cast_expression "(int)pvVar1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) , (cast_expression "(void *)(uVar4 + iVar5)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + iVar5)" ( (binary_expression "uVar4 + iVar5" identifier + identifier) ))) , (binary_expression "*(int *)(iVar2 + 0x24) - uVar4" (pointer_expression "*(int *)(iVar2 + 0x24)" * (cast_expression "(int *)(iVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x24)" ( (binary_expression "iVar2 + 0x24" identifier + number_literal) )))) - identifier) ))) ;) (expression_statement "memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);" (call_expression "memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2)" identifier (argument_list "(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2)" ( identifier , (cast_expression "(void *)(iVar5 + uVar6)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + uVar6)" ( (binary_expression "iVar5 + uVar6" identifier + identifier) ))) , (binary_expression "(uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2" (binary_expression "(uint)*(ushort *)(iVar3 + 0x12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar3 + 0x12)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x12)" ( (binary_expression "iVar3 + 0x12" identifier + number_literal) )))) + (binary_expression "(uint)*(ushort *)(iVar3 + 0x16) * 2" (binary_expression "(uint)*(ushort *)(iVar3 + 0x16)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar3 + 0x16)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x16)" ( (binary_expression "iVar3 + 0x16" identifier + number_literal) )))) * number_literal)) ))) ;) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) (expression_statement "iVar5 = FUN_0006ec40();" (assignment_expression "iVar5 = FUN_0006ec40()" identifier = (call_expression "FUN_0006ec40()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) {\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = FUN_0009d310();\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = FUN_0009d310();\n  }" { (if_statement "if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }" if (parenthesized_expression "(*(char *)(iVar2 + 0x11) == '\0')" ( (binary_expression "*(char *)(iVar2 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar2 + 0x11)" * (cast_expression "(char *)(iVar2 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x11)" ( (binary_expression "iVar2 + 0x11" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "iVar5 = FUN_0009d310();" (assignment_expression "iVar5 = FUN_0009d310()" identifier = (call_expression "FUN_0009d310()" identifier (argument_list "()" ( )))) ;) })) (expression_statement "*extraout_ECX = iVar5;" (assignment_expression "*extraout_ECX = iVar5" (pointer_expression "*extraout_ECX" * identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) , (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_0009d440(undefined4 param_1,undefined1 *param_2)\n\n{\n  void *pvVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  undefined8 uVar7;\n  void *local_2c;\n  \n  uVar7 = FUN_00036ac5();\n  iVar3 = (int)uVar7;\n  pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);\n  iVar2 = *(int *)(iVar3 + 0x34);\n  iVar5 = *(int *)(iVar3 + 0x38);\n  uVar6 = (uint)*(byte *)(iVar3 + 9);\n  local_2c = pvVar1;\n  if (*(int *)(param_2 + 4) == 1) {\n    local_2c = (void *)((int)pvVar1 + 100);\n  }\n  uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));\n  memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);\n  memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);\n  *param_2 = 0;\n  iVar5 = FUN_0006ec40();\n  if (iVar5 == 0) {\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = FUN_0009d310();\n  }\n  *extraout_ECX = iVar5;\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0009d440(undefined4 param_1,undefined1 *param_2)" (identifier "FUN_0009d440") (parameter_list "(undefined4 param_1,undefined1 *param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined1 *param_2" (type_identifier "undefined1") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  void *pvVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *extraout_ECX;\n  uint uVar6;\n  undefined8 uVar7;\n  void *local_2c;\n  \n  uVar7 = FUN_00036ac5();\n  iVar3 = (int)uVar7;\n  pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);\n  iVar2 = *(int *)(iVar3 + 0x34);\n  iVar5 = *(int *)(iVar3 + 0x38);\n  uVar6 = (uint)*(byte *)(iVar3 + 9);\n  local_2c = pvVar1;\n  if (*(int *)(param_2 + 4) == 1) {\n    local_2c = (void *)((int)pvVar1 + 100);\n  }\n  uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));\n  memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);\n  memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);\n  *param_2 = 0;\n  iVar5 = FUN_0006ec40();\n  if (iVar5 == 0) {\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = FUN_0009d310();\n  }\n  *extraout_ECX = iVar5;\n  return;\n}" ({ "{") (declaration "void *pvVar1;" (primitive_type "void") (pointer_declarator "*pvVar1" (* "*") (identifier "pvVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int *extraout_ECX;" (primitive_type "int") (pointer_declarator "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "void *local_2c;" (primitive_type "void") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (expression_statement "uVar7 = FUN_00036ac5();" (assignment_expression "uVar7 = FUN_00036ac5()" (identifier "uVar7") (= "=") (call_expression "FUN_00036ac5()" (identifier "FUN_00036ac5") (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"))) (; ";")) (expression_statement "pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);" (assignment_expression "pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38)" (identifier "pvVar1") (= "=") (pointer_expression "*(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38)" (* "*") (cast_expression "(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)((ulonglong)uVar7 >> 0x20) + 0x38)" (( "(") (binary_expression "(int)((ulonglong)uVar7 >> 0x20) + 0x38" (cast_expression "(int)((ulonglong)uVar7 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar7")) (>> ">>") (number_literal "0x20")) () ")"))) (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "iVar2 = *(int *)(iVar3 + 0x34);" (assignment_expression "iVar2 = *(int *)(iVar3 + 0x34)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar3 + 0x34)" (* "*") (cast_expression "(int *)(iVar3 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x34)" (( "(") (binary_expression "iVar3 + 0x34" (identifier "iVar3") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(iVar3 + 0x38);" (assignment_expression "iVar5 = *(int *)(iVar3 + 0x38)" (identifier "iVar5") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "uVar6 = (uint)*(byte *)(iVar3 + 9);" (assignment_expression "uVar6 = (uint)*(byte *)(iVar3 + 9)" (identifier "uVar6") (= "=") (binary_expression "(uint)*(byte *)(iVar3 + 9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar3 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 9)" (( "(") (binary_expression "iVar3 + 9" (identifier "iVar3") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (expression_statement "local_2c = pvVar1;" (assignment_expression "local_2c = pvVar1" (identifier "local_2c") (= "=") (identifier "pvVar1")) (; ";")) (if_statement "if (*(int *)(param_2 + 4) == 1) {\n    local_2c = (void *)((int)pvVar1 + 100);\n  }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 4) == 1)" (( "(") (binary_expression "*(int *)(param_2 + 4) == 1" (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    local_2c = (void *)((int)pvVar1 + 100);\n  }" ({ "{") (expression_statement "local_2c = (void *)((int)pvVar1 + 100);" (assignment_expression "local_2c = (void *)((int)pvVar1 + 100)" (identifier "local_2c") (= "=") (cast_expression "(void *)((int)pvVar1 + 100)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar1 + 100)" (( "(") (binary_expression "(int)pvVar1 + 100" (cast_expression "(int)pvVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar1")) (+ "+") (number_literal "100")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));" (assignment_expression "uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6))" (identifier "uVar4") (= "=") (cast_expression "(uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6))" (identifier "CONCAT11") (argument_list "(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6))" (( "(") (pointer_expression "*(undefined1 *)(iVar5 + 5 + uVar6)" (* "*") (cast_expression "(undefined1 *)(iVar5 + 5 + uVar6)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 5 + uVar6)" (( "(") (binary_expression "iVar5 + 5 + uVar6" (binary_expression "iVar5 + 5" (identifier "iVar5") (+ "+") (number_literal "5")) (+ "+") (identifier "uVar6")) () ")")))) (, ",") (pointer_expression "*(undefined1 *)(iVar5 + 6 + uVar6)" (* "*") (cast_expression "(undefined1 *)(iVar5 + 6 + uVar6)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 6 + uVar6)" (( "(") (binary_expression "iVar5 + 6 + uVar6" (binary_expression "iVar5 + 6" (identifier "iVar5") (+ "+") (number_literal "6")) (+ "+") (identifier "uVar6")) () ")")))) () ")"))))) (; ";")) (expression_statement "memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);" (call_expression "memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4)" (identifier "memcpy") (argument_list "((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4)" (( "(") (cast_expression "(void *)((int)pvVar1 + uVar4)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar1 + uVar4)" (( "(") (binary_expression "(int)pvVar1 + uVar4" (cast_expression "(int)pvVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar1")) (+ "+") (identifier "uVar4")) () ")"))) (, ",") (cast_expression "(void *)(uVar4 + iVar5)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar4 + iVar5)" (( "(") (binary_expression "uVar4 + iVar5" (identifier "uVar4") (+ "+") (identifier "iVar5")) () ")"))) (, ",") (binary_expression "*(int *)(iVar2 + 0x24) - uVar4" (pointer_expression "*(int *)(iVar2 + 0x24)" (* "*") (cast_expression "(int *)(iVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x24)" (( "(") (binary_expression "iVar2 + 0x24" (identifier "iVar2") (+ "+") (number_literal "0x24")) () ")")))) (- "-") (identifier "uVar4")) () ")"))) (; ";")) (expression_statement "memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);" (call_expression "memcpy(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2)" (identifier "memcpy") (argument_list "(local_2c,(void *)(iVar5 + uVar6),\n         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2)" (( "(") (identifier "local_2c") (, ",") (cast_expression "(void *)(iVar5 + uVar6)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + uVar6)" (( "(") (binary_expression "iVar5 + uVar6" (identifier "iVar5") (+ "+") (identifier "uVar6")) () ")"))) (, ",") (binary_expression "(uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2" (binary_expression "(uint)*(ushort *)(iVar3 + 0x12)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar3 + 0x12)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x12)" (( "(") (binary_expression "iVar3 + 0x12" (identifier "iVar3") (+ "+") (number_literal "0x12")) () ")")))) (+ "+") (binary_expression "(uint)*(ushort *)(iVar3 + 0x16) * 2" (binary_expression "(uint)*(ushort *)(iVar3 + 0x16)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar3 + 0x16)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x16)" (( "(") (binary_expression "iVar3 + 0x16" (identifier "iVar3") (+ "+") (number_literal "0x16")) () ")")))) (* "*") (number_literal "2"))) () ")"))) (; ";")) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar5 = FUN_0006ec40();" (assignment_expression "iVar5 = FUN_0006ec40()" (identifier "iVar5") (= "=") (call_expression "FUN_0006ec40()" (identifier "FUN_0006ec40") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = FUN_0009d310();\n  }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }\n    iVar5 = FUN_0009d310();\n  }" ({ "{") (if_statement "if (*(char *)(iVar2 + 0x11) == '\0') {\n      return;\n    }" (if "if") (parenthesized_expression "(*(char *)(iVar2 + 0x11) == '\0')" (( "(") (binary_expression "*(char *)(iVar2 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar2 + 0x11)" (* "*") (cast_expression "(char *)(iVar2 + 0x11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x11)" (( "(") (binary_expression "iVar2 + 0x11" (identifier "iVar2") (+ "+") (number_literal "0x11")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar5 = FUN_0009d310();" (assignment_expression "iVar5 = FUN_0009d310()" (identifier "iVar5") (= "=") (call_expression "FUN_0009d310()" (identifier "FUN_0009d310") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))) (expression_statement "*extraout_ECX = iVar5;" (assignment_expression "*extraout_ECX = iVar5" (pointer_expression "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (= "=") (identifier "iVar5")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void __regparm3 function_1(type_1 *pFrom,type_1 *pTo,int *pRC)

{
  void *pvVar1;
  int var_8;
  int var_2;
  type_2 var_7;
  int var_4;
  int *extraout_ECX;
  type_2 var_5;
  type_3 uVar7;
  void *local_2c;
  
  uVar7 = var_1();
  var_2 = (int)uVar7;
  pvVar1 = *(void **)((int)((type_4)uVar7 >> 0x20) + 0x38);
  var_8 = *(int *)(var_2 + 0x34);
  var_4 = *(int *)(var_2 + 0x38);
  var_5 = (type_2)*(type_5 *)(var_2 + 9);
  local_2c = pvVar1;
  if (pTo->pgno == 1) {
    local_2c = (void *)((int)pvVar1 + 100);
  }
  var_7 = (type_2)var_3(*(type_6 *)(var_4 + 5 + var_5),*(type_6 *)(var_4 + 6 + var_5));
  var_6((void *)((int)pvVar1 + var_7),(void *)(var_7 + var_4),*(int *)(var_8 + 0x24) - var_7);
  var_6(local_2c,(void *)(var_4 + var_5),
         (type_2)*(type_7 *)(var_2 + 0x12) + (type_2)*(type_7 *)(var_2 + 0x16) * 2);
  pTo->isInit = '\0';
  var_4 = var_9(pTo);
  if (var_4 == 0) {
    if (*(char *)(var_8 + 0x11) == '\0') {
      return;
    }
    var_4 = var_10(pTo);
  }
  *extraout_ECX = var_4;
  return;
}


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

void __regparm3 MASKED(undefined4 param_1,undefined1 *param_2)

{
  void *pvVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int *extraout_ECX;
  uint uVar6;
  undefined8 uVar7;
  void *local_2c;
  
  uVar7 = FUN_00036ac5();
  iVar3 = (int)uVar7;
  pvVar1 = *(void **)((int)((ulonglong)uVar7 >> 0x20) + 0x38);
  iVar2 = *(int *)(iVar3 + 0x34);
  iVar5 = *(int *)(iVar3 + 0x38);
  uVar6 = (uint)*(byte *)(iVar3 + 9);
  local_2c = pvVar1;
  if (*(int *)(param_2 + 4) == 1) {
    local_2c = (void *)((int)pvVar1 + 100);
  }
  uVar4 = (uint)CONCAT11(*(undefined1 *)(iVar5 + 5 + uVar6),*(undefined1 *)(iVar5 + 6 + uVar6));
  memcpy((void *)((int)pvVar1 + uVar4),(void *)(uVar4 + iVar5),*(int *)(iVar2 + 0x24) - uVar4);
  memcpy(local_2c,(void *)(iVar5 + uVar6),
         (uint)*(ushort *)(iVar3 + 0x12) + (uint)*(ushort *)(iVar3 + 0x16) * 2);
  *param_2 = 0;
  iVar5 = FUN_0006ec40();
  if (iVar5 == 0) {
    if (*(char *)(iVar2 + 0x11) == '\0') {
      return;
    }
    iVar5 = FUN_0009d310();
  }
  *extraout_ECX = iVar5;
  return;
}

