
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void lang_enter_group(void)

{
  lang_statement_list_type *plVar1;
  lang_statement_list_type **pplVar2;
  lang_statement_union *plVar3;
  lang_statement_list_type *new_ptr;
  
  plVar1 = stat_ptr;
  new_ptr = (lang_statement_list_type *)0x27057;
  plVar3 = (lang_statement_union *)stat_alloc(0x10);
  (plVar3->header).type = lang_group_statement_enum;
  (plVar3->header).next = (lang_statement_union *)0x0;
  *plVar1->tail = plVar3;
  plVar1->tail = (lang_statement_union **)plVar3;
  (plVar3->wild_statement).filename = (char *)0x0;
  (plVar3->reloc_statement).howto = (reloc_howto_type *)&(plVar3->output_section_statement).children
  ;
  if (stat_save_ptr < &statement_list) {
    pplVar2 = stat_save_ptr + 1;
    *stat_save_ptr = stat_ptr;
    stat_save_ptr = pplVar2;
    stat_ptr = &(plVar3->output_section_statement).children;
    return;
  }
                    /* WARNING: Subroutine does not return */
  push_stat_ptr(new_ptr);
}



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

void FUN_00027050(void)

{
  undefined *puVar1;
  undefined4 *puVar2;
  
  puVar1 = PTR_DAT_0008c338;
  puVar2 = (undefined4 *)FUN_000211b0(0x10);
  puVar2[1] = 0xd;
  *puVar2 = 0;
  **(undefined4 **)(puVar1 + 4) = puVar2;
  *(undefined4 **)(puVar1 + 4) = puVar2;
  puVar2[2] = 0;
  puVar2[3] = puVar2 + 2;
  if (PTR_DAT_0008c33c < &DAT_0008c828) {
    puVar1 = PTR_DAT_0008c33c + 4;
    *(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;
    PTR_DAT_0008c33c = puVar1;
    PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000210a0();
}


PUSH ESI
PUSH EBX
CALL 0x00015a20
ADD EBX,0x64fa9
SUB ESP,0x10
PUSH 0x10
MOV ESI,dword ptr [EBX + 0x338]
CALL 0x000211b0
LEA ECX,[EBX + 0x828]
ADD ESP,0x10
MOV dword ptr [EAX + 0x4],0xd
MOV dword ptr [EAX],0x0
MOV EDX,dword ptr [ESI + 0x4]
MOV dword ptr [EDX],EAX
LEA EDX,[EAX + 0x8]
MOV dword ptr [ESI + 0x4],EAX
MOV dword ptr [EAX + 0x8],0x0
MOV dword ptr [EAX + 0xc],EDX
MOV EAX,dword ptr [EBX + 0x33c]
CMP EAX,ECX
JNC 0x000270bf
LEA ECX,[EAX + 0x4]
MOV dword ptr [EBX + 0x33c],ECX
MOV ECX,dword ptr [EBX + 0x338]
MOV dword ptr [EAX],ECX
MOV dword ptr [EBX + 0x338],EDX
ADD ESP,0x4
POP EBX
POP ESI
RET
CALL 0x000210a0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00027050(void)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  \n  puVar1 = PTR_DAT_0008c338;\n  puVar2 = (undefined4 *)FUN_000211b0(0x10);\n  puVar2[1] = 0xd;\n  *puVar2 = 0;\n  **(undefined4 **)(puVar1 + 4) = puVar2;\n  *(undefined4 **)(puVar1 + 4) = puVar2;\n  puVar2[2] = 0;\n  puVar2[3] = puVar2 + 2;\n  if (PTR_DAT_0008c33c < &DAT_0008c828) {\n    puVar1 = PTR_DAT_0008c33c + 4;\n    *(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;\n    PTR_DAT_0008c33c = puVar1;\n    PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000210a0();\n}\n\n" comment (function_definition "void FUN_00027050(void)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  \n  puVar1 = PTR_DAT_0008c338;\n  puVar2 = (undefined4 *)FUN_000211b0(0x10);\n  puVar2[1] = 0xd;\n  *puVar2 = 0;\n  **(undefined4 **)(puVar1 + 4) = puVar2;\n  *(undefined4 **)(puVar1 + 4) = puVar2;\n  puVar2[2] = 0;\n  puVar2[3] = puVar2 + 2;\n  if (PTR_DAT_0008c33c < &DAT_0008c828) {\n    puVar1 = PTR_DAT_0008c33c + 4;\n    *(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;\n    PTR_DAT_0008c33c = puVar1;\n    PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000210a0();\n}" primitive_type (function_declarator "FUN_00027050(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  \n  puVar1 = PTR_DAT_0008c338;\n  puVar2 = (undefined4 *)FUN_000211b0(0x10);\n  puVar2[1] = 0xd;\n  *puVar2 = 0;\n  **(undefined4 **)(puVar1 + 4) = puVar2;\n  *(undefined4 **)(puVar1 + 4) = puVar2;\n  puVar2[2] = 0;\n  puVar2[3] = puVar2 + 2;\n  if (PTR_DAT_0008c33c < &DAT_0008c828) {\n    puVar1 = PTR_DAT_0008c33c + 4;\n    *(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;\n    PTR_DAT_0008c33c = puVar1;\n    PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000210a0();\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (expression_statement "puVar1 = PTR_DAT_0008c338;" (assignment_expression "puVar1 = PTR_DAT_0008c338" identifier = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_000211b0(0x10);" (assignment_expression "puVar2 = (undefined4 *)FUN_000211b0(0x10)" identifier = (cast_expression "(undefined4 *)FUN_000211b0(0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000211b0(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0xd;" (assignment_expression "puVar2[1] = 0xd" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = 0;" (assignment_expression "*puVar2 = 0" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "**(undefined4 **)(puVar1 + 4) = puVar2;" (assignment_expression "**(undefined4 **)(puVar1 + 4) = puVar2" (pointer_expression "**(undefined4 **)(puVar1 + 4)" * (pointer_expression "*(undefined4 **)(puVar1 + 4)" * (cast_expression "(undefined4 **)(puVar1 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 4)" ( (binary_expression "puVar1 + 4" identifier + number_literal) ))))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar1 + 4) = puVar2;" (assignment_expression "*(undefined4 **)(puVar1 + 4) = puVar2" (pointer_expression "*(undefined4 **)(puVar1 + 4)" * (cast_expression "(undefined4 **)(puVar1 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 4)" ( (binary_expression "puVar1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[3] = puVar2 + 2;" (assignment_expression "puVar2[3] = puVar2 + 2" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = (binary_expression "puVar2 + 2" identifier + number_literal)) ;) (if_statement "if (PTR_DAT_0008c33c < &DAT_0008c828) {\n    puVar1 = PTR_DAT_0008c33c + 4;\n    *(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;\n    PTR_DAT_0008c33c = puVar1;\n    PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);\n    return;\n  }" if (parenthesized_expression "(PTR_DAT_0008c33c < &DAT_0008c828)" ( (binary_expression "PTR_DAT_0008c33c < &DAT_0008c828" identifier < (pointer_expression "&DAT_0008c828" & identifier)) )) (compound_statement "{\n    puVar1 = PTR_DAT_0008c33c + 4;\n    *(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;\n    PTR_DAT_0008c33c = puVar1;\n    PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);\n    return;\n  }" { (expression_statement "puVar1 = PTR_DAT_0008c33c + 4;" (assignment_expression "puVar1 = PTR_DAT_0008c33c + 4" identifier = (binary_expression "PTR_DAT_0008c33c + 4" identifier + number_literal)) ;) (expression_statement "*(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;" (assignment_expression "*(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338" (pointer_expression "*(undefined **)PTR_DAT_0008c33c" * (cast_expression "(undefined **)PTR_DAT_0008c33c" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) (expression_statement "PTR_DAT_0008c33c = puVar1;" (assignment_expression "PTR_DAT_0008c33c = puVar1" identifier = identifier) ;) (expression_statement "PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);" (assignment_expression "PTR_DAT_0008c338 = (undefined *)(puVar2 + 2)" identifier = (cast_expression "(undefined *)(puVar2 + 2)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 2)" ( (binary_expression "puVar2 + 2" identifier + number_literal) )))) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_000210a0();" (call_expression "FUN_000210a0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n\nvoid lang_enter_group(void)\n\n{\n  lang_statement_list_type *plVar1;\n  lang_statement_list_type **pplVar2;\n  lang_statement_union *plVar3;\n  lang_statement_list_type *new_ptr;\n  \n  plVar1 = stat_ptr;\n  new_ptr = (lang_statement_list_type *)0x27057;\n  plVar3 = (lang_statement_union *)stat_alloc(0x10);\n  (plVar3->header).type = lang_group_statement_enum;\n  (plVar3->header).next = (lang_statement_union *)0x0;\n  *plVar1->tail = plVar3;\n  plVar1->tail = (lang_statement_union **)plVar3;\n  (plVar3->wild_statement).filename = (char *)0x0;\n  (plVar3->reloc_statement).howto = (reloc_howto_type *)&(plVar3->output_section_statement).children\n  ;\n  if (stat_save_ptr < &statement_list) {\n    pplVar2 = stat_save_ptr + 1;\n    *stat_save_ptr = stat_ptr;\n    stat_save_ptr = pplVar2;\n    stat_ptr = &(plVar3->output_section_statement).children;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  push_stat_ptr(new_ptr);\n}\n\n" comment comment (function_definition "void lang_enter_group(void)\n\n{\n  lang_statement_list_type *plVar1;\n  lang_statement_list_type **pplVar2;\n  lang_statement_union *plVar3;\n  lang_statement_list_type *new_ptr;\n  \n  plVar1 = stat_ptr;\n  new_ptr = (lang_statement_list_type *)0x27057;\n  plVar3 = (lang_statement_union *)stat_alloc(0x10);\n  (plVar3->header).type = lang_group_statement_enum;\n  (plVar3->header).next = (lang_statement_union *)0x0;\n  *plVar1->tail = plVar3;\n  plVar1->tail = (lang_statement_union **)plVar3;\n  (plVar3->wild_statement).filename = (char *)0x0;\n  (plVar3->reloc_statement).howto = (reloc_howto_type *)&(plVar3->output_section_statement).children\n  ;\n  if (stat_save_ptr < &statement_list) {\n    pplVar2 = stat_save_ptr + 1;\n    *stat_save_ptr = stat_ptr;\n    stat_save_ptr = pplVar2;\n    stat_ptr = &(plVar3->output_section_statement).children;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  push_stat_ptr(new_ptr);\n}" primitive_type (function_declarator "lang_enter_group(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  lang_statement_list_type *plVar1;\n  lang_statement_list_type **pplVar2;\n  lang_statement_union *plVar3;\n  lang_statement_list_type *new_ptr;\n  \n  plVar1 = stat_ptr;\n  new_ptr = (lang_statement_list_type *)0x27057;\n  plVar3 = (lang_statement_union *)stat_alloc(0x10);\n  (plVar3->header).type = lang_group_statement_enum;\n  (plVar3->header).next = (lang_statement_union *)0x0;\n  *plVar1->tail = plVar3;\n  plVar1->tail = (lang_statement_union **)plVar3;\n  (plVar3->wild_statement).filename = (char *)0x0;\n  (plVar3->reloc_statement).howto = (reloc_howto_type *)&(plVar3->output_section_statement).children\n  ;\n  if (stat_save_ptr < &statement_list) {\n    pplVar2 = stat_save_ptr + 1;\n    *stat_save_ptr = stat_ptr;\n    stat_save_ptr = pplVar2;\n    stat_ptr = &(plVar3->output_section_statement).children;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  push_stat_ptr(new_ptr);\n}" { (declaration "lang_statement_list_type *plVar1;" type_identifier (pointer_declarator "*plVar1" * identifier) ;) (declaration "lang_statement_list_type **pplVar2;" type_identifier (pointer_declarator "**pplVar2" * (pointer_declarator "*pplVar2" * identifier)) ;) (declaration "lang_statement_union *plVar3;" type_identifier (pointer_declarator "*plVar3" * identifier) ;) (declaration "lang_statement_list_type *new_ptr;" type_identifier (pointer_declarator "*new_ptr" * identifier) ;) (expression_statement "plVar1 = stat_ptr;" (assignment_expression "plVar1 = stat_ptr" identifier = identifier) ;) (expression_statement "new_ptr = (lang_statement_list_type *)0x27057;" (assignment_expression "new_ptr = (lang_statement_list_type *)0x27057" identifier = (cast_expression "(lang_statement_list_type *)0x27057" ( (type_descriptor "lang_statement_list_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "plVar3 = (lang_statement_union *)stat_alloc(0x10);" (assignment_expression "plVar3 = (lang_statement_union *)stat_alloc(0x10)" identifier = (cast_expression "(lang_statement_union *)stat_alloc(0x10)" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "stat_alloc(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "(plVar3->header).type = lang_group_statement_enum;" (assignment_expression "(plVar3->header).type = lang_group_statement_enum" (field_expression "(plVar3->header).type" (parenthesized_expression "(plVar3->header)" ( (field_expression "plVar3->header" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(plVar3->header).next = (lang_statement_union *)0x0;" (assignment_expression "(plVar3->header).next = (lang_statement_union *)0x0" (field_expression "(plVar3->header).next" (parenthesized_expression "(plVar3->header)" ( (field_expression "plVar3->header" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*plVar1->tail = plVar3;" (assignment_expression "*plVar1->tail = plVar3" (pointer_expression "*plVar1->tail" * (field_expression "plVar1->tail" identifier -> field_identifier)) = identifier) ;) (expression_statement "plVar1->tail = (lang_statement_union **)plVar3;" (assignment_expression "plVar1->tail = (lang_statement_union **)plVar3" (field_expression "plVar1->tail" identifier -> field_identifier) = (cast_expression "(lang_statement_union **)plVar3" ( (type_descriptor "lang_statement_union **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "(plVar3->wild_statement).filename = (char *)0x0;" (assignment_expression "(plVar3->wild_statement).filename = (char *)0x0" (field_expression "(plVar3->wild_statement).filename" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(plVar3->reloc_statement).howto = (reloc_howto_type *)&(plVar3->output_section_statement).children\n  ;" (assignment_expression "(plVar3->reloc_statement).howto = (reloc_howto_type *)&(plVar3->output_section_statement).children" (field_expression "(plVar3->reloc_statement).howto" (parenthesized_expression "(plVar3->reloc_statement)" ( (field_expression "plVar3->reloc_statement" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(reloc_howto_type *)&(plVar3->output_section_statement).children" ( (type_descriptor "reloc_howto_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(plVar3->output_section_statement).children" & (field_expression "(plVar3->output_section_statement).children" (parenthesized_expression "(plVar3->output_section_statement)" ( (field_expression "plVar3->output_section_statement" identifier -> field_identifier) )) . field_identifier)))) ;) (if_statement "if (stat_save_ptr < &statement_list) {\n    pplVar2 = stat_save_ptr + 1;\n    *stat_save_ptr = stat_ptr;\n    stat_save_ptr = pplVar2;\n    stat_ptr = &(plVar3->output_section_statement).children;\n    return;\n  }" if (parenthesized_expression "(stat_save_ptr < &statement_list)" ( (binary_expression "stat_save_ptr < &statement_list" identifier < (pointer_expression "&statement_list" & identifier)) )) (compound_statement "{\n    pplVar2 = stat_save_ptr + 1;\n    *stat_save_ptr = stat_ptr;\n    stat_save_ptr = pplVar2;\n    stat_ptr = &(plVar3->output_section_statement).children;\n    return;\n  }" { (expression_statement "pplVar2 = stat_save_ptr + 1;" (assignment_expression "pplVar2 = stat_save_ptr + 1" identifier = (binary_expression "stat_save_ptr + 1" identifier + number_literal)) ;) (expression_statement "*stat_save_ptr = stat_ptr;" (assignment_expression "*stat_save_ptr = stat_ptr" (pointer_expression "*stat_save_ptr" * identifier) = identifier) ;) (expression_statement "stat_save_ptr = pplVar2;" (assignment_expression "stat_save_ptr = pplVar2" identifier = identifier) ;) (expression_statement "stat_ptr = &(plVar3->output_section_statement).children;" (assignment_expression "stat_ptr = &(plVar3->output_section_statement).children" identifier = (pointer_expression "&(plVar3->output_section_statement).children" & (field_expression "(plVar3->output_section_statement).children" (parenthesized_expression "(plVar3->output_section_statement)" ( (field_expression "plVar3->output_section_statement" identifier -> field_identifier) )) . field_identifier))) ;) (return_statement "return;" return ;) })) comment (expression_statement "push_stat_ptr(new_ptr);" (call_expression "push_stat_ptr(new_ptr)" identifier (argument_list "(new_ptr)" ( identifier ))) ;) })))
(translation_unit "void FUN_00027050(void)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  \n  puVar1 = PTR_DAT_0008c338;\n  puVar2 = (undefined4 *)FUN_000211b0(0x10);\n  puVar2[1] = 0xd;\n  *puVar2 = 0;\n  **(undefined4 **)(puVar1 + 4) = puVar2;\n  *(undefined4 **)(puVar1 + 4) = puVar2;\n  puVar2[2] = 0;\n  puVar2[3] = puVar2 + 2;\n  if (PTR_DAT_0008c33c < &DAT_0008c828) {\n    puVar1 = PTR_DAT_0008c33c + 4;\n    *(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;\n    PTR_DAT_0008c33c = puVar1;\n    PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);\n    return;\n  }\n                    \n  FUN_000210a0();\n}\n\n" (function_definition "void FUN_00027050(void)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  \n  puVar1 = PTR_DAT_0008c338;\n  puVar2 = (undefined4 *)FUN_000211b0(0x10);\n  puVar2[1] = 0xd;\n  *puVar2 = 0;\n  **(undefined4 **)(puVar1 + 4) = puVar2;\n  *(undefined4 **)(puVar1 + 4) = puVar2;\n  puVar2[2] = 0;\n  puVar2[3] = puVar2 + 2;\n  if (PTR_DAT_0008c33c < &DAT_0008c828) {\n    puVar1 = PTR_DAT_0008c33c + 4;\n    *(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;\n    PTR_DAT_0008c33c = puVar1;\n    PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);\n    return;\n  }\n                    \n  FUN_000210a0();\n}" primitive_type (function_declarator "FUN_00027050(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  \n  puVar1 = PTR_DAT_0008c338;\n  puVar2 = (undefined4 *)FUN_000211b0(0x10);\n  puVar2[1] = 0xd;\n  *puVar2 = 0;\n  **(undefined4 **)(puVar1 + 4) = puVar2;\n  *(undefined4 **)(puVar1 + 4) = puVar2;\n  puVar2[2] = 0;\n  puVar2[3] = puVar2 + 2;\n  if (PTR_DAT_0008c33c < &DAT_0008c828) {\n    puVar1 = PTR_DAT_0008c33c + 4;\n    *(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;\n    PTR_DAT_0008c33c = puVar1;\n    PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);\n    return;\n  }\n                    \n  FUN_000210a0();\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (expression_statement "puVar1 = PTR_DAT_0008c338;" (assignment_expression "puVar1 = PTR_DAT_0008c338" identifier = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_000211b0(0x10);" (assignment_expression "puVar2 = (undefined4 *)FUN_000211b0(0x10)" identifier = (cast_expression "(undefined4 *)FUN_000211b0(0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000211b0(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0xd;" (assignment_expression "puVar2[1] = 0xd" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = 0;" (assignment_expression "*puVar2 = 0" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "**(undefined4 **)(puVar1 + 4) = puVar2;" (assignment_expression "**(undefined4 **)(puVar1 + 4) = puVar2" (pointer_expression "**(undefined4 **)(puVar1 + 4)" * (pointer_expression "*(undefined4 **)(puVar1 + 4)" * (cast_expression "(undefined4 **)(puVar1 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 4)" ( (binary_expression "puVar1 + 4" identifier + number_literal) ))))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar1 + 4) = puVar2;" (assignment_expression "*(undefined4 **)(puVar1 + 4) = puVar2" (pointer_expression "*(undefined4 **)(puVar1 + 4)" * (cast_expression "(undefined4 **)(puVar1 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 4)" ( (binary_expression "puVar1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[3] = puVar2 + 2;" (assignment_expression "puVar2[3] = puVar2 + 2" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = (binary_expression "puVar2 + 2" identifier + number_literal)) ;) (if_statement "if (PTR_DAT_0008c33c < &DAT_0008c828) {\n    puVar1 = PTR_DAT_0008c33c + 4;\n    *(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;\n    PTR_DAT_0008c33c = puVar1;\n    PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);\n    return;\n  }" if (parenthesized_expression "(PTR_DAT_0008c33c < &DAT_0008c828)" ( (binary_expression "PTR_DAT_0008c33c < &DAT_0008c828" identifier < (pointer_expression "&DAT_0008c828" & identifier)) )) (compound_statement "{\n    puVar1 = PTR_DAT_0008c33c + 4;\n    *(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;\n    PTR_DAT_0008c33c = puVar1;\n    PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);\n    return;\n  }" { (expression_statement "puVar1 = PTR_DAT_0008c33c + 4;" (assignment_expression "puVar1 = PTR_DAT_0008c33c + 4" identifier = (binary_expression "PTR_DAT_0008c33c + 4" identifier + number_literal)) ;) (expression_statement "*(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;" (assignment_expression "*(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338" (pointer_expression "*(undefined **)PTR_DAT_0008c33c" * (cast_expression "(undefined **)PTR_DAT_0008c33c" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) (expression_statement "PTR_DAT_0008c33c = puVar1;" (assignment_expression "PTR_DAT_0008c33c = puVar1" identifier = identifier) ;) (expression_statement "PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);" (assignment_expression "PTR_DAT_0008c338 = (undefined *)(puVar2 + 2)" identifier = (cast_expression "(undefined *)(puVar2 + 2)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 2)" ( (binary_expression "puVar2 + 2" identifier + number_literal) )))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_000210a0();" (call_expression "FUN_000210a0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_00027050(void)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  \n  puVar1 = PTR_DAT_0008c338;\n  puVar2 = (undefined4 *)FUN_000211b0(0x10);\n  puVar2[1] = 0xd;\n  *puVar2 = 0;\n  **(undefined4 **)(puVar1 + 4) = puVar2;\n  *(undefined4 **)(puVar1 + 4) = puVar2;\n  puVar2[2] = 0;\n  puVar2[3] = puVar2 + 2;\n  if (PTR_DAT_0008c33c < &DAT_0008c828) {\n    puVar1 = PTR_DAT_0008c33c + 4;\n    *(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;\n    PTR_DAT_0008c33c = puVar1;\n    PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);\n    return;\n  }\n                    \n  FUN_000210a0();\n}" (primitive_type "void") (function_declarator "FUN_00027050(void)" (identifier "FUN_00027050") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  \n  puVar1 = PTR_DAT_0008c338;\n  puVar2 = (undefined4 *)FUN_000211b0(0x10);\n  puVar2[1] = 0xd;\n  *puVar2 = 0;\n  **(undefined4 **)(puVar1 + 4) = puVar2;\n  *(undefined4 **)(puVar1 + 4) = puVar2;\n  puVar2[2] = 0;\n  puVar2[3] = puVar2 + 2;\n  if (PTR_DAT_0008c33c < &DAT_0008c828) {\n    puVar1 = PTR_DAT_0008c33c + 4;\n    *(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;\n    PTR_DAT_0008c33c = puVar1;\n    PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);\n    return;\n  }\n                    \n  FUN_000210a0();\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (expression_statement "puVar1 = PTR_DAT_0008c338;" (assignment_expression "puVar1 = PTR_DAT_0008c338" (identifier "puVar1") (= "=") (identifier "PTR_DAT_0008c338")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_000211b0(0x10);" (assignment_expression "puVar2 = (undefined4 *)FUN_000211b0(0x10)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_000211b0(0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000211b0(0x10)" (identifier "FUN_000211b0") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "puVar2[1] = 0xd;" (assignment_expression "puVar2[1] = 0xd" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xd")) (; ";")) (expression_statement "*puVar2 = 0;" (assignment_expression "*puVar2 = 0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (number_literal "0")) (; ";")) (expression_statement "**(undefined4 **)(puVar1 + 4) = puVar2;" (assignment_expression "**(undefined4 **)(puVar1 + 4) = puVar2" (pointer_expression "**(undefined4 **)(puVar1 + 4)" (* "*") (pointer_expression "*(undefined4 **)(puVar1 + 4)" (* "*") (cast_expression "(undefined4 **)(puVar1 + 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 4)" (( "(") (binary_expression "puVar1 + 4" (identifier "puVar1") (+ "+") (number_literal "4")) () ")"))))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "*(undefined4 **)(puVar1 + 4) = puVar2;" (assignment_expression "*(undefined4 **)(puVar1 + 4) = puVar2" (pointer_expression "*(undefined4 **)(puVar1 + 4)" (* "*") (cast_expression "(undefined4 **)(puVar1 + 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 4)" (( "(") (binary_expression "puVar1 + 4" (identifier "puVar1") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[3] = puVar2 + 2;" (assignment_expression "puVar2[3] = puVar2 + 2" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "puVar2 + 2" (identifier "puVar2") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (PTR_DAT_0008c33c < &DAT_0008c828) {\n    puVar1 = PTR_DAT_0008c33c + 4;\n    *(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;\n    PTR_DAT_0008c33c = puVar1;\n    PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);\n    return;\n  }" (if "if") (parenthesized_expression "(PTR_DAT_0008c33c < &DAT_0008c828)" (( "(") (binary_expression "PTR_DAT_0008c33c < &DAT_0008c828" (identifier "PTR_DAT_0008c33c") (< "<") (pointer_expression "&DAT_0008c828" (& "&") (identifier "DAT_0008c828"))) () ")")) (compound_statement "{\n    puVar1 = PTR_DAT_0008c33c + 4;\n    *(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;\n    PTR_DAT_0008c33c = puVar1;\n    PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);\n    return;\n  }" ({ "{") (expression_statement "puVar1 = PTR_DAT_0008c33c + 4;" (assignment_expression "puVar1 = PTR_DAT_0008c33c + 4" (identifier "puVar1") (= "=") (binary_expression "PTR_DAT_0008c33c + 4" (identifier "PTR_DAT_0008c33c") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;" (assignment_expression "*(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338" (pointer_expression "*(undefined **)PTR_DAT_0008c33c" (* "*") (cast_expression "(undefined **)PTR_DAT_0008c33c" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_DAT_0008c33c"))) (= "=") (identifier "PTR_DAT_0008c338")) (; ";")) (expression_statement "PTR_DAT_0008c33c = puVar1;" (assignment_expression "PTR_DAT_0008c33c = puVar1" (identifier "PTR_DAT_0008c33c") (= "=") (identifier "puVar1")) (; ";")) (expression_statement "PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);" (assignment_expression "PTR_DAT_0008c338 = (undefined *)(puVar2 + 2)" (identifier "PTR_DAT_0008c338") (= "=") (cast_expression "(undefined *)(puVar2 + 2)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 2)" (( "(") (binary_expression "puVar2 + 2" (identifier "puVar2") (+ "+") (number_literal "2")) () ")")))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_000210a0();" (call_expression "FUN_000210a0()" (identifier "FUN_000210a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void function_1(void)

{
  type_1 *plVar1;
  type_1 **pplVar2;
  type_2 *plVar3;
  type_1 *new_ptr;
  
  plVar1 = stat_ptr;
  new_ptr = (type_1 *)0x27057;
  plVar3 = (type_2 *)var_1(0x10);
  (plVar3->header).type = lang_group_statement_enum;
  (plVar3->header).next = (type_2 *)0x0;
  *plVar1->tail = plVar3;
  plVar1->tail = (type_2 **)plVar3;
  (plVar3->wild_statement).filename = (char *)0x0;
  (plVar3->reloc_statement).howto = (type_3 *)&(plVar3->output_section_statement).children
  ;
  if (var_2 < &statement_list) {
    pplVar2 = var_2 + 1;
    *var_2 = stat_ptr;
    var_2 = pplVar2;
    stat_ptr = &(plVar3->output_section_statement).children;
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_3(new_ptr);
}


(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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

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

void MASKED(void)

{
  undefined *puVar1;
  undefined4 *puVar2;
  
  puVar1 = PTR_DAT_0008c338;
  puVar2 = (undefined4 *)FUN_000211b0(0x10);
  puVar2[1] = 0xd;
  *puVar2 = 0;
  **(undefined4 **)(puVar1 + 4) = puVar2;
  *(undefined4 **)(puVar1 + 4) = puVar2;
  puVar2[2] = 0;
  puVar2[3] = puVar2 + 2;
  if (PTR_DAT_0008c33c < &DAT_0008c828) {
    puVar1 = PTR_DAT_0008c33c + 4;
    *(undefined **)PTR_DAT_0008c33c = PTR_DAT_0008c338;
    PTR_DAT_0008c33c = puVar1;
    PTR_DAT_0008c338 = (undefined *)(puVar2 + 2);
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000210a0();
}

