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

shash_t * allocate_shash(void)

{
  proc_t *ppVar1;
  shash_t *psVar2;
  int iVar3;
  shash_t *psVar4;
  
  if (alloc_counts[3].unallocated == 0) {
    alloc_counts[3].cur_page = allocate_page();
    iVar3 = 0x1fd4;
    alloc_counts[3].unallocated = 0x123;
    alloc_counts[3].total_pages = alloc_counts[3].total_pages + 1;
  }
  else {
    alloc_counts[3].unallocated = alloc_counts[3].unallocated + -1;
    iVar3 = alloc_counts[3].unallocated * 0x1c;
  }
  alloc_counts[3].total_alloc = alloc_counts[3].total_alloc + 1;
  psVar4 = (alloc_counts[3].cur_page)->shash + alloc_counts[3].unallocated;
  psVar2 = (shash_t *)((int)alloc_counts[3].cur_page + iVar3);
  psVar4->string = allocate_shash::initial_shash.string;
  psVar4->indx = allocate_shash::initial_shash.indx;
  psVar4->esym_ptr = allocate_shash::initial_shash.esym_ptr;
  psVar4->sym_ptr = allocate_shash::initial_shash.sym_ptr;
  psVar4->end_ptr = allocate_shash::initial_shash.end_ptr;
  ppVar1 = allocate_shash::initial_shash.proc_ptr;
  psVar4->tag_ptr = allocate_shash::initial_shash.tag_ptr;
  psVar4->proc_ptr = ppVar1;
  return psVar2;
}



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

int FUN_00020350(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  
  if (DAT_00080a60 == 0) {
    DAT_00080a58 = FUN_00020030();
    iVar2 = 0x1fd4;
    DAT_00080a60 = 0x123;
    DAT_00080a6c = DAT_00080a6c + 1;
  }
  else {
    DAT_00080a60 = DAT_00080a60 + -1;
    iVar2 = DAT_00080a60 * 0x1c;
  }
  DAT_00080a64 = DAT_00080a64 + 1;
  puVar3 = (undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58);
  iVar2 = DAT_00080a58 + iVar2;
  *puVar3 = DAT_00058350;
  puVar3[1] = DAT_00058354;
  puVar3[2] = DAT_00058358;
  puVar3[3] = DAT_0005835c;
  puVar3[4] = DAT_00058360;
  uVar1 = DAT_00058368;
  puVar3[5] = DAT_00058364;
  puVar3[6] = uVar1;
  return iVar2;
}


PUSH ESI
PUSH EBX
CALL 0x00016070
ADD EBX,0x57ca9
SUB ESP,0x4
MOV EDX,dword ptr [EBX + 0x8a60]
TEST EDX,EDX
JZ 0x000203d0
SUB EDX,0x1
MOV EAX,dword ptr [EBX + 0x8a58]
IMUL ECX,EDX,0x1c
MOV dword ptr [EBX + 0x8a60],EDX
IMUL EDX,EDX,0x1c
MOV ESI,dword ptr [EBX + 0xfffe0350]
ADD dword ptr [EBX + 0x8a64],0x1
ADD EDX,EAX
ADD EAX,ECX
MOV dword ptr [EDX],ESI
MOV ESI,dword ptr [EBX + 0xfffe0354]
MOV dword ptr [EDX + 0x4],ESI
MOV ESI,dword ptr [EBX + 0xfffe0358]
MOV dword ptr [EDX + 0x8],ESI
MOV ESI,dword ptr [EBX + 0xfffe035c]
MOV dword ptr [EDX + 0xc],ESI
MOV ESI,dword ptr [EBX + 0xfffe0360]
MOV dword ptr [EDX + 0x10],ESI
MOV ESI,dword ptr [EBX + 0xfffe0364]
MOV EBX,dword ptr [EBX + 0xfffe0368]
MOV dword ptr [EDX + 0x14],ESI
MOV dword ptr [EDX + 0x18],EBX
ADD ESP,0x4
POP EBX
POP ESI
RET
CALL 0x00020030
MOV ECX,0x1fd4
MOV EDX,0x123
ADD dword ptr [EBX + 0x8a6c],0x1
MOV dword ptr [EBX + 0x8a58],EAX
JMP 0x00020376
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint FUN_00020350(void)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  \n  if (DAT_00080a60 == 0) {\n    DAT_00080a58 = FUN_00020030();\n    iVar2 = 0x1fd4;\n    DAT_00080a60 = 0x123;\n    DAT_00080a6c = DAT_00080a6c + 1;\n  }\n  else {\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }\n  DAT_00080a64 = DAT_00080a64 + 1;\n  puVar3 = (undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58);\n  iVar2 = DAT_00080a58 + iVar2;\n  *puVar3 = DAT_00058350;\n  puVar3[1] = DAT_00058354;\n  puVar3[2] = DAT_00058358;\n  puVar3[3] = DAT_0005835c;\n  puVar3[4] = DAT_00058360;\n  uVar1 = DAT_00058368;\n  puVar3[5] = DAT_00058364;\n  puVar3[6] = uVar1;\n  return iVar2;\n}\n\n" comment (function_definition "int FUN_00020350(void)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  \n  if (DAT_00080a60 == 0) {\n    DAT_00080a58 = FUN_00020030();\n    iVar2 = 0x1fd4;\n    DAT_00080a60 = 0x123;\n    DAT_00080a6c = DAT_00080a6c + 1;\n  }\n  else {\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }\n  DAT_00080a64 = DAT_00080a64 + 1;\n  puVar3 = (undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58);\n  iVar2 = DAT_00080a58 + iVar2;\n  *puVar3 = DAT_00058350;\n  puVar3[1] = DAT_00058354;\n  puVar3[2] = DAT_00058358;\n  puVar3[3] = DAT_0005835c;\n  puVar3[4] = DAT_00058360;\n  uVar1 = DAT_00058368;\n  puVar3[5] = DAT_00058364;\n  puVar3[6] = uVar1;\n  return iVar2;\n}" primitive_type (function_declarator "FUN_00020350(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  \n  if (DAT_00080a60 == 0) {\n    DAT_00080a58 = FUN_00020030();\n    iVar2 = 0x1fd4;\n    DAT_00080a60 = 0x123;\n    DAT_00080a6c = DAT_00080a6c + 1;\n  }\n  else {\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }\n  DAT_00080a64 = DAT_00080a64 + 1;\n  puVar3 = (undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58);\n  iVar2 = DAT_00080a58 + iVar2;\n  *puVar3 = DAT_00058350;\n  puVar3[1] = DAT_00058354;\n  puVar3[2] = DAT_00058358;\n  puVar3[3] = DAT_0005835c;\n  puVar3[4] = DAT_00058360;\n  uVar1 = DAT_00058368;\n  puVar3[5] = DAT_00058364;\n  puVar3[6] = uVar1;\n  return iVar2;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (if_statement "if (DAT_00080a60 == 0) {\n    DAT_00080a58 = FUN_00020030();\n    iVar2 = 0x1fd4;\n    DAT_00080a60 = 0x123;\n    DAT_00080a6c = DAT_00080a6c + 1;\n  }\n  else {\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }" if (parenthesized_expression "(DAT_00080a60 == 0)" ( (binary_expression "DAT_00080a60 == 0" identifier == number_literal) )) (compound_statement "{\n    DAT_00080a58 = FUN_00020030();\n    iVar2 = 0x1fd4;\n    DAT_00080a60 = 0x123;\n    DAT_00080a6c = DAT_00080a6c + 1;\n  }" { (expression_statement "DAT_00080a58 = FUN_00020030();" (assignment_expression "DAT_00080a58 = FUN_00020030()" identifier = (call_expression "FUN_00020030()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar2 = 0x1fd4;" (assignment_expression "iVar2 = 0x1fd4" identifier = number_literal) ;) (expression_statement "DAT_00080a60 = 0x123;" (assignment_expression "DAT_00080a60 = 0x123" identifier = number_literal) ;) (expression_statement "DAT_00080a6c = DAT_00080a6c + 1;" (assignment_expression "DAT_00080a6c = DAT_00080a6c + 1" identifier = (binary_expression "DAT_00080a6c + 1" identifier + number_literal)) ;) }) (else_clause "else {\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }" else (compound_statement "{\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }" { (expression_statement "DAT_00080a60 = DAT_00080a60 + -1;" (assignment_expression "DAT_00080a60 = DAT_00080a60 + -1" identifier = (binary_expression "DAT_00080a60 + -1" identifier + number_literal)) ;) (expression_statement "iVar2 = DAT_00080a60 * 0x1c;" (assignment_expression "iVar2 = DAT_00080a60 * 0x1c" identifier = (binary_expression "DAT_00080a60 * 0x1c" identifier * number_literal)) ;) }))) (expression_statement "DAT_00080a64 = DAT_00080a64 + 1;" (assignment_expression "DAT_00080a64 = DAT_00080a64 + 1" identifier = (binary_expression "DAT_00080a64 + 1" identifier + number_literal)) ;) (expression_statement "puVar3 = (undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58);" (assignment_expression "puVar3 = (undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58)" identifier = (cast_expression "(undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00080a60 * 0x1c + DAT_00080a58)" ( (binary_expression "DAT_00080a60 * 0x1c + DAT_00080a58" (binary_expression "DAT_00080a60 * 0x1c" identifier * number_literal) + identifier) )))) ;) (expression_statement "iVar2 = DAT_00080a58 + iVar2;" (assignment_expression "iVar2 = DAT_00080a58 + iVar2" identifier = (binary_expression "DAT_00080a58 + iVar2" identifier + identifier)) ;) (expression_statement "*puVar3 = DAT_00058350;" (assignment_expression "*puVar3 = DAT_00058350" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "puVar3[1] = DAT_00058354;" (assignment_expression "puVar3[1] = DAT_00058354" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[2] = DAT_00058358;" (assignment_expression "puVar3[2] = DAT_00058358" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[3] = DAT_0005835c;" (assignment_expression "puVar3[3] = DAT_0005835c" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[4] = DAT_00058360;" (assignment_expression "puVar3[4] = DAT_00058360" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = DAT_00058368;" (assignment_expression "uVar1 = DAT_00058368" identifier = identifier) ;) (expression_statement "puVar3[5] = DAT_00058364;" (assignment_expression "puVar3[5] = DAT_00058364" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[6] = uVar1;" (assignment_expression "puVar3[6] = uVar1" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = identifier) ;) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nshash_t * allocate_shash(void)\n\n{\n  proc_t *ppVar1;\n  shash_t *psVar2;\n  int iVar3;\n  shash_t *psVar4;\n  \n  if (alloc_counts[3].unallocated == 0) {\n    alloc_counts[3].cur_page = allocate_page();\n    iVar3 = 0x1fd4;\n    alloc_counts[3].unallocated = 0x123;\n    alloc_counts[3].total_pages = alloc_counts[3].total_pages + 1;\n  }\n  else {\n    alloc_counts[3].unallocated = alloc_counts[3].unallocated + -1;\n    iVar3 = alloc_counts[3].unallocated * 0x1c;\n  }\n  alloc_counts[3].total_alloc = alloc_counts[3].total_alloc + 1;\n  psVar4 = (alloc_counts[3].cur_page)->shash + alloc_counts[3].unallocated;\n  psVar2 = (shash_t *)((int)alloc_counts[3].cur_page + iVar3);\n  psVar4->string = allocate_shash::initial_shash.string;\n  psVar4->indx = allocate_shash::initial_shash.indx;\n  psVar4->esym_ptr = allocate_shash::initial_shash.esym_ptr;\n  psVar4->sym_ptr = allocate_shash::initial_shash.sym_ptr;\n  psVar4->end_ptr = allocate_shash::initial_shash.end_ptr;\n  ppVar1 = allocate_shash::initial_shash.proc_ptr;\n  psVar4->tag_ptr = allocate_shash::initial_shash.tag_ptr;\n  psVar4->proc_ptr = ppVar1;\n  return psVar2;\n}\n\n" comment comment (function_definition "shash_t * allocate_shash(void)\n\n{\n  proc_t *ppVar1;\n  shash_t *psVar2;\n  int iVar3;\n  shash_t *psVar4;\n  \n  if (alloc_counts[3].unallocated == 0) {\n    alloc_counts[3].cur_page = allocate_page();\n    iVar3 = 0x1fd4;\n    alloc_counts[3].unallocated = 0x123;\n    alloc_counts[3].total_pages = alloc_counts[3].total_pages + 1;\n  }\n  else {\n    alloc_counts[3].unallocated = alloc_counts[3].unallocated + -1;\n    iVar3 = alloc_counts[3].unallocated * 0x1c;\n  }\n  alloc_counts[3].total_alloc = alloc_counts[3].total_alloc + 1;\n  psVar4 = (alloc_counts[3].cur_page)->shash + alloc_counts[3].unallocated;\n  psVar2 = (shash_t *)((int)alloc_counts[3].cur_page + iVar3);\n  psVar4->string = allocate_shash::initial_shash.string;\n  psVar4->indx = allocate_shash::initial_shash.indx;\n  psVar4->esym_ptr = allocate_shash::initial_shash.esym_ptr;\n  psVar4->sym_ptr = allocate_shash::initial_shash.sym_ptr;\n  psVar4->end_ptr = allocate_shash::initial_shash.end_ptr;\n  ppVar1 = allocate_shash::initial_shash.proc_ptr;\n  psVar4->tag_ptr = allocate_shash::initial_shash.tag_ptr;\n  psVar4->proc_ptr = ppVar1;\n  return psVar2;\n}" type_identifier (pointer_declarator "* allocate_shash(void)" * (function_declarator "allocate_shash(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  proc_t *ppVar1;\n  shash_t *psVar2;\n  int iVar3;\n  shash_t *psVar4;\n  \n  if (alloc_counts[3].unallocated == 0) {\n    alloc_counts[3].cur_page = allocate_page();\n    iVar3 = 0x1fd4;\n    alloc_counts[3].unallocated = 0x123;\n    alloc_counts[3].total_pages = alloc_counts[3].total_pages + 1;\n  }\n  else {\n    alloc_counts[3].unallocated = alloc_counts[3].unallocated + -1;\n    iVar3 = alloc_counts[3].unallocated * 0x1c;\n  }\n  alloc_counts[3].total_alloc = alloc_counts[3].total_alloc + 1;\n  psVar4 = (alloc_counts[3].cur_page)->shash + alloc_counts[3].unallocated;\n  psVar2 = (shash_t *)((int)alloc_counts[3].cur_page + iVar3);\n  psVar4->string = allocate_shash::initial_shash.string;\n  psVar4->indx = allocate_shash::initial_shash.indx;\n  psVar4->esym_ptr = allocate_shash::initial_shash.esym_ptr;\n  psVar4->sym_ptr = allocate_shash::initial_shash.sym_ptr;\n  psVar4->end_ptr = allocate_shash::initial_shash.end_ptr;\n  ppVar1 = allocate_shash::initial_shash.proc_ptr;\n  psVar4->tag_ptr = allocate_shash::initial_shash.tag_ptr;\n  psVar4->proc_ptr = ppVar1;\n  return psVar2;\n}" { (declaration "proc_t *ppVar1;" type_identifier (pointer_declarator "*ppVar1" * identifier) ;) (declaration "shash_t *psVar2;" type_identifier (pointer_declarator "*psVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "shash_t *psVar4;" type_identifier (pointer_declarator "*psVar4" * identifier) ;) (if_statement "if (alloc_counts[3].unallocated == 0) {\n    alloc_counts[3].cur_page = allocate_page();\n    iVar3 = 0x1fd4;\n    alloc_counts[3].unallocated = 0x123;\n    alloc_counts[3].total_pages = alloc_counts[3].total_pages + 1;\n  }\n  else {\n    alloc_counts[3].unallocated = alloc_counts[3].unallocated + -1;\n    iVar3 = alloc_counts[3].unallocated * 0x1c;\n  }" if (parenthesized_expression "(alloc_counts[3].unallocated == 0)" ( (binary_expression "alloc_counts[3].unallocated == 0" (field_expression "alloc_counts[3].unallocated" (subscript_expression "alloc_counts[3]" identifier [ number_literal ]) . field_identifier) == number_literal) )) (compound_statement "{\n    alloc_counts[3].cur_page = allocate_page();\n    iVar3 = 0x1fd4;\n    alloc_counts[3].unallocated = 0x123;\n    alloc_counts[3].total_pages = alloc_counts[3].total_pages + 1;\n  }" { (expression_statement "alloc_counts[3].cur_page = allocate_page();" (assignment_expression "alloc_counts[3].cur_page = allocate_page()" (field_expression "alloc_counts[3].cur_page" (subscript_expression "alloc_counts[3]" identifier [ number_literal ]) . field_identifier) = (call_expression "allocate_page()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar3 = 0x1fd4;" (assignment_expression "iVar3 = 0x1fd4" identifier = number_literal) ;) (expression_statement "alloc_counts[3].unallocated = 0x123;" (assignment_expression "alloc_counts[3].unallocated = 0x123" (field_expression "alloc_counts[3].unallocated" (subscript_expression "alloc_counts[3]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "alloc_counts[3].total_pages = alloc_counts[3].total_pages + 1;" (assignment_expression "alloc_counts[3].total_pages = alloc_counts[3].total_pages + 1" (field_expression "alloc_counts[3].total_pages" (subscript_expression "alloc_counts[3]" identifier [ number_literal ]) . field_identifier) = (binary_expression "alloc_counts[3].total_pages + 1" (field_expression "alloc_counts[3].total_pages" (subscript_expression "alloc_counts[3]" identifier [ number_literal ]) . field_identifier) + number_literal)) ;) }) (else_clause "else {\n    alloc_counts[3].unallocated = alloc_counts[3].unallocated + -1;\n    iVar3 = alloc_counts[3].unallocated * 0x1c;\n  }" else (compound_statement "{\n    alloc_counts[3].unallocated = alloc_counts[3].unallocated + -1;\n    iVar3 = alloc_counts[3].unallocated * 0x1c;\n  }" { (expression_statement "alloc_counts[3].unallocated = alloc_counts[3].unallocated + -1;" (assignment_expression "alloc_counts[3].unallocated = alloc_counts[3].unallocated + -1" (field_expression "alloc_counts[3].unallocated" (subscript_expression "alloc_counts[3]" identifier [ number_literal ]) . field_identifier) = (binary_expression "alloc_counts[3].unallocated + -1" (field_expression "alloc_counts[3].unallocated" (subscript_expression "alloc_counts[3]" identifier [ number_literal ]) . field_identifier) + number_literal)) ;) (expression_statement "iVar3 = alloc_counts[3].unallocated * 0x1c;" (assignment_expression "iVar3 = alloc_counts[3].unallocated * 0x1c" identifier = (binary_expression "alloc_counts[3].unallocated * 0x1c" (field_expression "alloc_counts[3].unallocated" (subscript_expression "alloc_counts[3]" identifier [ number_literal ]) . field_identifier) * number_literal)) ;) }))) (expression_statement "alloc_counts[3].total_alloc = alloc_counts[3].total_alloc + 1;" (assignment_expression "alloc_counts[3].total_alloc = alloc_counts[3].total_alloc + 1" (field_expression "alloc_counts[3].total_alloc" (subscript_expression "alloc_counts[3]" identifier [ number_literal ]) . field_identifier) = (binary_expression "alloc_counts[3].total_alloc + 1" (field_expression "alloc_counts[3].total_alloc" (subscript_expression "alloc_counts[3]" identifier [ number_literal ]) . field_identifier) + number_literal)) ;) (expression_statement "psVar4 = (alloc_counts[3].cur_page)->shash + alloc_counts[3].unallocated;" (assignment_expression "psVar4 = (alloc_counts[3].cur_page)->shash + alloc_counts[3].unallocated" identifier = (binary_expression "(alloc_counts[3].cur_page)->shash + alloc_counts[3].unallocated" (field_expression "(alloc_counts[3].cur_page)->shash" (parenthesized_expression "(alloc_counts[3].cur_page)" ( (field_expression "alloc_counts[3].cur_page" (subscript_expression "alloc_counts[3]" identifier [ number_literal ]) . field_identifier) )) -> field_identifier) + (field_expression "alloc_counts[3].unallocated" (subscript_expression "alloc_counts[3]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "psVar2 = (shash_t *)((int)alloc_counts[3].cur_page + iVar3);" (assignment_expression "psVar2 = (shash_t *)((int)alloc_counts[3].cur_page + iVar3)" identifier = (cast_expression "(shash_t *)((int)alloc_counts[3].cur_page + iVar3)" ( (type_descriptor "shash_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)alloc_counts[3].cur_page + iVar3)" ( (binary_expression "(int)alloc_counts[3].cur_page + iVar3" (cast_expression "(int)alloc_counts[3].cur_page" ( (type_descriptor "int" primitive_type) ) (field_expression "alloc_counts[3].cur_page" (subscript_expression "alloc_counts[3]" identifier [ number_literal ]) . field_identifier)) + identifier) )))) ;) (expression_statement "psVar4->string = allocate_shash::initial_shash.string;" (field_expression "psVar4->string = allocate_shash::initial_shash.string" (assignment_expression "psVar4->string = allocate_shash" (field_expression "psVar4->string" identifier -> field_identifier) = identifier) (ERROR "::initial_shash" : : identifier) . field_identifier) ;) (expression_statement "psVar4->indx = allocate_shash::initial_shash.indx;" (field_expression "psVar4->indx = allocate_shash::initial_shash.indx" (assignment_expression "psVar4->indx = allocate_shash" (field_expression "psVar4->indx" identifier -> field_identifier) = identifier) (ERROR "::initial_shash" : : identifier) . field_identifier) ;) (expression_statement "psVar4->esym_ptr = allocate_shash::initial_shash.esym_ptr;" (field_expression "psVar4->esym_ptr = allocate_shash::initial_shash.esym_ptr" (assignment_expression "psVar4->esym_ptr = allocate_shash" (field_expression "psVar4->esym_ptr" identifier -> field_identifier) = identifier) (ERROR "::initial_shash" : : identifier) . field_identifier) ;) (expression_statement "psVar4->sym_ptr = allocate_shash::initial_shash.sym_ptr;" (field_expression "psVar4->sym_ptr = allocate_shash::initial_shash.sym_ptr" (assignment_expression "psVar4->sym_ptr = allocate_shash" (field_expression "psVar4->sym_ptr" identifier -> field_identifier) = identifier) (ERROR "::initial_shash" : : identifier) . field_identifier) ;) (expression_statement "psVar4->end_ptr = allocate_shash::initial_shash.end_ptr;" (field_expression "psVar4->end_ptr = allocate_shash::initial_shash.end_ptr" (assignment_expression "psVar4->end_ptr = allocate_shash" (field_expression "psVar4->end_ptr" identifier -> field_identifier) = identifier) (ERROR "::initial_shash" : : identifier) . field_identifier) ;) (expression_statement "ppVar1 = allocate_shash::initial_shash.proc_ptr;" (field_expression "ppVar1 = allocate_shash::initial_shash.proc_ptr" (assignment_expression "ppVar1 = allocate_shash" identifier = identifier) (ERROR "::initial_shash" : : identifier) . field_identifier) ;) (expression_statement "psVar4->tag_ptr = allocate_shash::initial_shash.tag_ptr;" (field_expression "psVar4->tag_ptr = allocate_shash::initial_shash.tag_ptr" (assignment_expression "psVar4->tag_ptr = allocate_shash" (field_expression "psVar4->tag_ptr" identifier -> field_identifier) = identifier) (ERROR "::initial_shash" : : identifier) . field_identifier) ;) (expression_statement "psVar4->proc_ptr = ppVar1;" (assignment_expression "psVar4->proc_ptr = ppVar1" (field_expression "psVar4->proc_ptr" identifier -> field_identifier) = identifier) ;) (return_statement "return psVar2;" return identifier ;) })))
(translation_unit "int FUN_00020350(void)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  \n  if (DAT_00080a60 == 0) {\n    DAT_00080a58 = FUN_00020030();\n    iVar2 = 0x1fd4;\n    DAT_00080a60 = 0x123;\n    DAT_00080a6c = DAT_00080a6c + 1;\n  }\n  else {\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }\n  DAT_00080a64 = DAT_00080a64 + 1;\n  puVar3 = (undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58);\n  iVar2 = DAT_00080a58 + iVar2;\n  *puVar3 = DAT_00058350;\n  puVar3[1] = DAT_00058354;\n  puVar3[2] = DAT_00058358;\n  puVar3[3] = DAT_0005835c;\n  puVar3[4] = DAT_00058360;\n  uVar1 = DAT_00058368;\n  puVar3[5] = DAT_00058364;\n  puVar3[6] = uVar1;\n  return iVar2;\n}\n\n" (function_definition "int FUN_00020350(void)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  \n  if (DAT_00080a60 == 0) {\n    DAT_00080a58 = FUN_00020030();\n    iVar2 = 0x1fd4;\n    DAT_00080a60 = 0x123;\n    DAT_00080a6c = DAT_00080a6c + 1;\n  }\n  else {\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }\n  DAT_00080a64 = DAT_00080a64 + 1;\n  puVar3 = (undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58);\n  iVar2 = DAT_00080a58 + iVar2;\n  *puVar3 = DAT_00058350;\n  puVar3[1] = DAT_00058354;\n  puVar3[2] = DAT_00058358;\n  puVar3[3] = DAT_0005835c;\n  puVar3[4] = DAT_00058360;\n  uVar1 = DAT_00058368;\n  puVar3[5] = DAT_00058364;\n  puVar3[6] = uVar1;\n  return iVar2;\n}" primitive_type (function_declarator "FUN_00020350(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  \n  if (DAT_00080a60 == 0) {\n    DAT_00080a58 = FUN_00020030();\n    iVar2 = 0x1fd4;\n    DAT_00080a60 = 0x123;\n    DAT_00080a6c = DAT_00080a6c + 1;\n  }\n  else {\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }\n  DAT_00080a64 = DAT_00080a64 + 1;\n  puVar3 = (undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58);\n  iVar2 = DAT_00080a58 + iVar2;\n  *puVar3 = DAT_00058350;\n  puVar3[1] = DAT_00058354;\n  puVar3[2] = DAT_00058358;\n  puVar3[3] = DAT_0005835c;\n  puVar3[4] = DAT_00058360;\n  uVar1 = DAT_00058368;\n  puVar3[5] = DAT_00058364;\n  puVar3[6] = uVar1;\n  return iVar2;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (if_statement "if (DAT_00080a60 == 0) {\n    DAT_00080a58 = FUN_00020030();\n    iVar2 = 0x1fd4;\n    DAT_00080a60 = 0x123;\n    DAT_00080a6c = DAT_00080a6c + 1;\n  }\n  else {\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }" if (parenthesized_expression "(DAT_00080a60 == 0)" ( (binary_expression "DAT_00080a60 == 0" identifier == number_literal) )) (compound_statement "{\n    DAT_00080a58 = FUN_00020030();\n    iVar2 = 0x1fd4;\n    DAT_00080a60 = 0x123;\n    DAT_00080a6c = DAT_00080a6c + 1;\n  }" { (expression_statement "DAT_00080a58 = FUN_00020030();" (assignment_expression "DAT_00080a58 = FUN_00020030()" identifier = (call_expression "FUN_00020030()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar2 = 0x1fd4;" (assignment_expression "iVar2 = 0x1fd4" identifier = number_literal) ;) (expression_statement "DAT_00080a60 = 0x123;" (assignment_expression "DAT_00080a60 = 0x123" identifier = number_literal) ;) (expression_statement "DAT_00080a6c = DAT_00080a6c + 1;" (assignment_expression "DAT_00080a6c = DAT_00080a6c + 1" identifier = (binary_expression "DAT_00080a6c + 1" identifier + number_literal)) ;) }) (else_clause "else {\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }" else (compound_statement "{\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }" { (expression_statement "DAT_00080a60 = DAT_00080a60 + -1;" (assignment_expression "DAT_00080a60 = DAT_00080a60 + -1" identifier = (binary_expression "DAT_00080a60 + -1" identifier + number_literal)) ;) (expression_statement "iVar2 = DAT_00080a60 * 0x1c;" (assignment_expression "iVar2 = DAT_00080a60 * 0x1c" identifier = (binary_expression "DAT_00080a60 * 0x1c" identifier * number_literal)) ;) }))) (expression_statement "DAT_00080a64 = DAT_00080a64 + 1;" (assignment_expression "DAT_00080a64 = DAT_00080a64 + 1" identifier = (binary_expression "DAT_00080a64 + 1" identifier + number_literal)) ;) (expression_statement "puVar3 = (undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58);" (assignment_expression "puVar3 = (undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58)" identifier = (cast_expression "(undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00080a60 * 0x1c + DAT_00080a58)" ( (binary_expression "DAT_00080a60 * 0x1c + DAT_00080a58" (binary_expression "DAT_00080a60 * 0x1c" identifier * number_literal) + identifier) )))) ;) (expression_statement "iVar2 = DAT_00080a58 + iVar2;" (assignment_expression "iVar2 = DAT_00080a58 + iVar2" identifier = (binary_expression "DAT_00080a58 + iVar2" identifier + identifier)) ;) (expression_statement "*puVar3 = DAT_00058350;" (assignment_expression "*puVar3 = DAT_00058350" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "puVar3[1] = DAT_00058354;" (assignment_expression "puVar3[1] = DAT_00058354" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[2] = DAT_00058358;" (assignment_expression "puVar3[2] = DAT_00058358" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[3] = DAT_0005835c;" (assignment_expression "puVar3[3] = DAT_0005835c" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[4] = DAT_00058360;" (assignment_expression "puVar3[4] = DAT_00058360" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = DAT_00058368;" (assignment_expression "uVar1 = DAT_00058368" identifier = identifier) ;) (expression_statement "puVar3[5] = DAT_00058364;" (assignment_expression "puVar3[5] = DAT_00058364" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[6] = uVar1;" (assignment_expression "puVar3[6] = uVar1" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = identifier) ;) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return IDENT ;) })))
(function_definition "int FUN_00020350(void)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  \n  if (DAT_00080a60 == 0) {\n    DAT_00080a58 = FUN_00020030();\n    iVar2 = 0x1fd4;\n    DAT_00080a60 = 0x123;\n    DAT_00080a6c = DAT_00080a6c + 1;\n  }\n  else {\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }\n  DAT_00080a64 = DAT_00080a64 + 1;\n  puVar3 = (undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58);\n  iVar2 = DAT_00080a58 + iVar2;\n  *puVar3 = DAT_00058350;\n  puVar3[1] = DAT_00058354;\n  puVar3[2] = DAT_00058358;\n  puVar3[3] = DAT_0005835c;\n  puVar3[4] = DAT_00058360;\n  uVar1 = DAT_00058368;\n  puVar3[5] = DAT_00058364;\n  puVar3[6] = uVar1;\n  return iVar2;\n}" (primitive_type "int") (function_declarator "FUN_00020350(void)" (identifier "FUN_00020350") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  \n  if (DAT_00080a60 == 0) {\n    DAT_00080a58 = FUN_00020030();\n    iVar2 = 0x1fd4;\n    DAT_00080a60 = 0x123;\n    DAT_00080a6c = DAT_00080a6c + 1;\n  }\n  else {\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }\n  DAT_00080a64 = DAT_00080a64 + 1;\n  puVar3 = (undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58);\n  iVar2 = DAT_00080a58 + iVar2;\n  *puVar3 = DAT_00058350;\n  puVar3[1] = DAT_00058354;\n  puVar3[2] = DAT_00058358;\n  puVar3[3] = DAT_0005835c;\n  puVar3[4] = DAT_00058360;\n  uVar1 = DAT_00058368;\n  puVar3[5] = DAT_00058364;\n  puVar3[6] = uVar1;\n  return iVar2;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (if_statement "if (DAT_00080a60 == 0) {\n    DAT_00080a58 = FUN_00020030();\n    iVar2 = 0x1fd4;\n    DAT_00080a60 = 0x123;\n    DAT_00080a6c = DAT_00080a6c + 1;\n  }\n  else {\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }" (if "if") (parenthesized_expression "(DAT_00080a60 == 0)" (( "(") (binary_expression "DAT_00080a60 == 0" (identifier "DAT_00080a60") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    DAT_00080a58 = FUN_00020030();\n    iVar2 = 0x1fd4;\n    DAT_00080a60 = 0x123;\n    DAT_00080a6c = DAT_00080a6c + 1;\n  }" ({ "{") (expression_statement "DAT_00080a58 = FUN_00020030();" (assignment_expression "DAT_00080a58 = FUN_00020030()" (identifier "DAT_00080a58") (= "=") (call_expression "FUN_00020030()" (identifier "FUN_00020030") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar2 = 0x1fd4;" (assignment_expression "iVar2 = 0x1fd4" (identifier "iVar2") (= "=") (number_literal "0x1fd4")) (; ";")) (expression_statement "DAT_00080a60 = 0x123;" (assignment_expression "DAT_00080a60 = 0x123" (identifier "DAT_00080a60") (= "=") (number_literal "0x123")) (; ";")) (expression_statement "DAT_00080a6c = DAT_00080a6c + 1;" (assignment_expression "DAT_00080a6c = DAT_00080a6c + 1" (identifier "DAT_00080a6c") (= "=") (binary_expression "DAT_00080a6c + 1" (identifier "DAT_00080a6c") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }" (else "else") (compound_statement "{\n    DAT_00080a60 = DAT_00080a60 + -1;\n    iVar2 = DAT_00080a60 * 0x1c;\n  }" ({ "{") (expression_statement "DAT_00080a60 = DAT_00080a60 + -1;" (assignment_expression "DAT_00080a60 = DAT_00080a60 + -1" (identifier "DAT_00080a60") (= "=") (binary_expression "DAT_00080a60 + -1" (identifier "DAT_00080a60") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar2 = DAT_00080a60 * 0x1c;" (assignment_expression "iVar2 = DAT_00080a60 * 0x1c" (identifier "iVar2") (= "=") (binary_expression "DAT_00080a60 * 0x1c" (identifier "DAT_00080a60") (* "*") (number_literal "0x1c"))) (; ";")) (} "}")))) (expression_statement "DAT_00080a64 = DAT_00080a64 + 1;" (assignment_expression "DAT_00080a64 = DAT_00080a64 + 1" (identifier "DAT_00080a64") (= "=") (binary_expression "DAT_00080a64 + 1" (identifier "DAT_00080a64") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar3 = (undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58);" (assignment_expression "puVar3 = (undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58)" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00080a60 * 0x1c + DAT_00080a58)" (( "(") (binary_expression "DAT_00080a60 * 0x1c + DAT_00080a58" (binary_expression "DAT_00080a60 * 0x1c" (identifier "DAT_00080a60") (* "*") (number_literal "0x1c")) (+ "+") (identifier "DAT_00080a58")) () ")")))) (; ";")) (expression_statement "iVar2 = DAT_00080a58 + iVar2;" (assignment_expression "iVar2 = DAT_00080a58 + iVar2" (identifier "iVar2") (= "=") (binary_expression "DAT_00080a58 + iVar2" (identifier "DAT_00080a58") (+ "+") (identifier "iVar2"))) (; ";")) (expression_statement "*puVar3 = DAT_00058350;" (assignment_expression "*puVar3 = DAT_00058350" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (identifier "DAT_00058350")) (; ";")) (expression_statement "puVar3[1] = DAT_00058354;" (assignment_expression "puVar3[1] = DAT_00058354" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "DAT_00058354")) (; ";")) (expression_statement "puVar3[2] = DAT_00058358;" (assignment_expression "puVar3[2] = DAT_00058358" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "DAT_00058358")) (; ";")) (expression_statement "puVar3[3] = DAT_0005835c;" (assignment_expression "puVar3[3] = DAT_0005835c" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "DAT_0005835c")) (; ";")) (expression_statement "puVar3[4] = DAT_00058360;" (assignment_expression "puVar3[4] = DAT_00058360" (subscript_expression "puVar3[4]" (identifier "puVar3") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "DAT_00058360")) (; ";")) (expression_statement "uVar1 = DAT_00058368;" (assignment_expression "uVar1 = DAT_00058368" (identifier "uVar1") (= "=") (identifier "DAT_00058368")) (; ";")) (expression_statement "puVar3[5] = DAT_00058364;" (assignment_expression "puVar3[5] = DAT_00058364" (subscript_expression "puVar3[5]" (identifier "puVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "DAT_00058364")) (; ";")) (expression_statement "puVar3[6] = uVar1;" (assignment_expression "puVar3[6] = uVar1" (subscript_expression "puVar3[6]" (identifier "puVar3") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}")))

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

type_1 * function_1(void)

{
  type_2 *ppVar1;
  type_1 *psVar2;
  int var_2;
  type_1 *psVar4;
  
  if (alloc_counts[3].unallocated == 0) {
    alloc_counts[3].cur_page = var_1();
    var_2 = 0x1fd4;
    alloc_counts[3].unallocated = 0x123;
    alloc_counts[3].total_pages = alloc_counts[3].total_pages + 1;
  }
  else {
    alloc_counts[3].unallocated = alloc_counts[3].unallocated + -1;
    var_2 = alloc_counts[3].unallocated * 0x1c;
  }
  alloc_counts[3].total_alloc = alloc_counts[3].total_alloc + 1;
  psVar4 = (alloc_counts[3].cur_page)->shash + alloc_counts[3].unallocated;
  psVar2 = (type_1 *)((int)alloc_counts[3].cur_page + var_2);
  psVar4->string = function_1::initial_shash.string;
  psVar4->indx = function_1::initial_shash.indx;
  psVar4->esym_ptr = function_1::initial_shash.esym_ptr;
  psVar4->sym_ptr = function_1::initial_shash.sym_ptr;
  psVar4->end_ptr = function_1::initial_shash.end_ptr;
  ppVar1 = function_1::initial_shash.proc_ptr;
  psVar4->tag_ptr = function_1::initial_shash.tag_ptr;
  psVar4->proc_ptr = ppVar1;
  return psVar2;
}


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

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

int MASKED(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  
  if (DAT_00080a60 == 0) {
    DAT_00080a58 = FUN_00020030();
    iVar2 = 0x1fd4;
    DAT_00080a60 = 0x123;
    DAT_00080a6c = DAT_00080a6c + 1;
  }
  else {
    DAT_00080a60 = DAT_00080a60 + -1;
    iVar2 = DAT_00080a60 * 0x1c;
  }
  DAT_00080a64 = DAT_00080a64 + 1;
  puVar3 = (undefined4 *)(DAT_00080a60 * 0x1c + DAT_00080a58);
  iVar2 = DAT_00080a58 + iVar2;
  *puVar3 = DAT_00058350;
  puVar3[1] = DAT_00058354;
  puVar3[2] = DAT_00058358;
  puVar3[3] = DAT_0005835c;
  puVar3[4] = DAT_00058360;
  uVar1 = DAT_00058368;
  puVar3[5] = DAT_00058364;
  puVar3[6] = uVar1;
  return iVar2;
}

