
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: void set_fixed_layout(Output_section * this, uint64_t sh_addr, off_t
   sh_offset, off_t sh_size, uint64_t sh_addralign) */

void __thiscall
gold::Output_section::set_fixed_layout
          (Output_section *this,uint64_t sh_addr,off_t sh_offset,off_t sh_size,uint64_t sh_addralign
          )

{
  byte bVar1;
  
  bVar1 = (this->super_Output_data).field_0x1c;
  this->addralign_ = sh_addralign;
  if ((bVar1 & 2) != 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0x231,"set_current_data_size_for_child");
  }
  (this->super_Output_data).data_size_ = sh_size;
  if ((this->flags_ & 2) != 0) {
    if ((bVar1 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/output.h",0x142,"set_address");
    }
    bVar1 = bVar1 | 1;
    (this->super_Output_data).field_0x1c = bVar1;
    (this->super_Output_data).address_ = sh_addr;
  }
  if ((bVar1 & 4) == 0) {
    (this->super_Output_data).field_0x1c = bVar1 | 4;
    (this->super_Output_data).offset_ = sh_offset;
    (*(this->super_Output_data)._vptr_Output_data[0xe])(this);
    if (((this->super_Output_data).field_0x1c & 2) != 0) {
      Free_list::init(&this->free_list_,(EVP_PKEY_CTX *)sh_size);
      this->field_0x92 = this->field_0x92 | 0x20;
      return;
    }
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size");
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/output.h",0x14b,"set_file_offset");
}



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

void FUN_000ea140(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6,
                 int param_7,int param_8,int param_9)

{
  undefined4 uVar1;
  byte bVar2;
  
  bVar2 = *(byte *)(param_1 + 7);
  param_1[9] = param_8;
  param_1[10] = param_9;
  if ((bVar2 & 2) != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);
  }
  param_1[3] = param_6;
  param_1[4] = param_7;
  if ((*(byte *)(param_1 + 0x15) & 2) != 0) {
    if ((bVar2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);
    }
    bVar2 = bVar2 | 1;
    *(byte *)(param_1 + 7) = bVar2;
    param_1[1] = param_2;
    param_1[2] = param_3;
    param_9 = param_3;
  }
  if ((bVar2 & 4) == 0) {
    *(byte *)(param_1 + 7) = bVar2 | 4;
    param_1[5] = param_4;
    param_1[6] = param_5;
    uVar1 = (**(code **)(*param_1 + 0x38))(param_1);
    if ((*(byte *)(param_1 + 7) & 2) != 0) {
      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);
      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;
      return;
    }
                    /* WARNING: Subroutine does not return */
    FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);
  }
                    /* WARNING: Subroutine does not return */
  FUN_0008b620("../../gold/output.h",0x14b,"set_file_offset",param_9);
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00035680
ADD EBX,0x254eb7
SUB ESP,0x1c
MOV EAX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [ESP + 0x38]
MOV EBP,dword ptr [ESP + 0x30]
MOV ESI,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x3c]
MOVZX ECX,byte ptr [EBP + 0x1c]
MOV EDI,dword ptr [ESP + 0x48]
MOV dword ptr [ESP + 0xc],EDX
MOV EDX,dword ptr [ESP + 0x40]
MOV dword ptr [ESP],EAX
MOV EAX,dword ptr [ESP + 0x4c]
MOV dword ptr [ESP + 0x4],EDX
MOV EDX,dword ptr [ESP + 0x50]
MOV dword ptr [EBP + 0x24],EAX
MOV dword ptr [EBP + 0x28],EDX
TEST CL,0x2
JNZ 0x000ea20b
MOV dword ptr [EBP + 0xc],ESI
MOV dword ptr [EBP + 0x10],EDI
TEST byte ptr [EBP + 0x54],0x2
JNZ 0x000ea1f0
TEST CL,0x4
JNZ 0x000ea23d
MOV EAX,dword ptr [ESP]
MOV EDX,dword ptr [ESP + 0x4]
OR ECX,0x4
SUB ESP,0xc
MOV byte ptr [EBP + 0x1c],CL
MOV dword ptr [EBP + 0x14],EAX
MOV EAX,dword ptr [EBP]
MOV dword ptr [EBP + 0x18],EDX
PUSH EBP
CALL dword ptr [EAX + 0x38]
ADD ESP,0x10
TEST byte ptr [EBP + 0x1c],0x2
JZ 0x000ea224
LEA EAX,[EBP + 0xb4]
PUSH 0x0
PUSH EDI
PUSH ESI
PUSH EAX
CALL 0x000a8120
OR byte ptr [EBP + 0x92],0x20
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
TEST CL,0x1
JNZ 0x000ea256
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
OR ECX,0x1
MOV byte ptr [EBP + 0x1c],CL
MOV dword ptr [EBP + 0x4],EAX
MOV dword ptr [EBP + 0x8],EDX
JMP 0x000ea1a0
LEA EAX,[EBX + 0xfff1eee0]
PUSH ESI
PUSH EAX
LEA EAX,[EBX + 0xfff0c35d]
PUSH 0x231
PUSH EAX
CALL 0x0008b620
PUSH EAX
LEA EAX,[EBX + 0xfff1ecdc]
PUSH EAX
LEA EAX,[EBX + 0xfff0c35d]
PUSH 0x163
PUSH EAX
CALL 0x0008b620
LEA EAX,[EBX + 0xfff1ecf0]
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xfff0c35d]
PUSH 0x14b
PUSH EAX
CALL 0x0008b620
LEA EAX,[EBX + 0xfff1ed00]
PUSH ECX
PUSH EAX
LEA EAX,[EBX + 0xfff0c35d]
PUSH 0x142
PUSH EAX
CALL 0x0008b620
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_000ea140(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7,int param_8,int param_9)\n\n{\n  undefined4 uVar1;\n  byte bVar2;\n  \n  bVar2 = *(byte *)(param_1 + 7);\n  param_1[9] = param_8;\n  param_1[10] = param_9;\n  if ((bVar2 & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);\n  }\n  param_1[3] = param_6;\n  param_1[4] = param_7;\n  if ((*(byte *)(param_1 + 0x15) & 2) != 0) {\n    if ((bVar2 & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }\n    bVar2 = bVar2 | 1;\n    *(byte *)(param_1 + 7) = bVar2;\n    param_1[1] = param_2;\n    param_1[2] = param_3;\n    param_9 = param_3;\n  }\n  if ((bVar2 & 4) == 0) {\n    *(byte *)(param_1 + 7) = bVar2 | 4;\n    param_1[5] = param_4;\n    param_1[6] = param_5;\n    uVar1 = (**(code **)(*param_1 + 0x38))(param_1);\n    if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0008b620("../../gold/output.h",0x14b,"set_file_offset",param_9);\n}\n\n" comment (function_definition "void FUN_000ea140(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7,int param_8,int param_9)\n\n{\n  undefined4 uVar1;\n  byte bVar2;\n  \n  bVar2 = *(byte *)(param_1 + 7);\n  param_1[9] = param_8;\n  param_1[10] = param_9;\n  if ((bVar2 & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);\n  }\n  param_1[3] = param_6;\n  param_1[4] = param_7;\n  if ((*(byte *)(param_1 + 0x15) & 2) != 0) {\n    if ((bVar2 & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }\n    bVar2 = bVar2 | 1;\n    *(byte *)(param_1 + 7) = bVar2;\n    param_1[1] = param_2;\n    param_1[2] = param_3;\n    param_9 = param_3;\n  }\n  if ((bVar2 & 4) == 0) {\n    *(byte *)(param_1 + 7) = bVar2 | 4;\n    param_1[5] = param_4;\n    param_1[6] = param_5;\n    uVar1 = (**(code **)(*param_1 + 0x38))(param_1);\n    if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0008b620("../../gold/output.h",0x14b,"set_file_offset",param_9);\n}" primitive_type (function_declarator "FUN_000ea140(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7,int param_8,int param_9)" identifier (parameter_list "(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7,int param_8,int param_9)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "int param_9" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  byte bVar2;\n  \n  bVar2 = *(byte *)(param_1 + 7);\n  param_1[9] = param_8;\n  param_1[10] = param_9;\n  if ((bVar2 & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);\n  }\n  param_1[3] = param_6;\n  param_1[4] = param_7;\n  if ((*(byte *)(param_1 + 0x15) & 2) != 0) {\n    if ((bVar2 & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }\n    bVar2 = bVar2 | 1;\n    *(byte *)(param_1 + 7) = bVar2;\n    param_1[1] = param_2;\n    param_1[2] = param_3;\n    param_9 = param_3;\n  }\n  if ((bVar2 & 4) == 0) {\n    *(byte *)(param_1 + 7) = bVar2 | 4;\n    param_1[5] = param_4;\n    param_1[6] = param_5;\n    uVar1 = (**(code **)(*param_1 + 0x38))(param_1);\n    if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0008b620("../../gold/output.h",0x14b,"set_file_offset",param_9);\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (expression_statement "bVar2 = *(byte *)(param_1 + 7);" (assignment_expression "bVar2 = *(byte *)(param_1 + 7)" identifier = (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) ))))) ;) (expression_statement "param_1[9] = param_8;" (assignment_expression "param_1[9] = param_8" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[10] = param_9;" (assignment_expression "param_1[10] = param_9" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((bVar2 & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);\n  }" if (parenthesized_expression "((bVar2 & 2) != 0)" ( (binary_expression "(bVar2 & 2) != 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);\n  }" { comment (expression_statement "FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);" (call_expression "FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6)" identifier (argument_list "("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_current_data_size_for_child"" " string_content ") , identifier ))) ;) })) (expression_statement "param_1[3] = param_6;" (assignment_expression "param_1[3] = param_6" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[4] = param_7;" (assignment_expression "param_1[4] = param_7" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((*(byte *)(param_1 + 0x15) & 2) != 0) {\n    if ((bVar2 & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }\n    bVar2 = bVar2 | 1;\n    *(byte *)(param_1 + 7) = bVar2;\n    param_1[1] = param_2;\n    param_1[2] = param_3;\n    param_9 = param_3;\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x15) & 2) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x15) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x15) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x15) & 2" (pointer_expression "*(byte *)(param_1 + 0x15)" * (cast_expression "(byte *)(param_1 + 0x15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x15)" ( (binary_expression "param_1 + 0x15" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((bVar2 & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }\n    bVar2 = bVar2 | 1;\n    *(byte *)(param_1 + 7) = bVar2;\n    param_1[1] = param_2;\n    param_1[2] = param_3;\n    param_9 = param_3;\n  }" { (if_statement "if ((bVar2 & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }" if (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }" { comment (expression_statement "FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);" (call_expression "FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2)" identifier (argument_list "("../../gold/output.h",0x142,"set_address",bVar2)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_address"" " string_content ") , identifier ))) ;) })) (expression_statement "bVar2 = bVar2 | 1;" (assignment_expression "bVar2 = bVar2 | 1" identifier = (binary_expression "bVar2 | 1" identifier | number_literal)) ;) (expression_statement "*(byte *)(param_1 + 7) = bVar2;" (assignment_expression "*(byte *)(param_1 + 7) = bVar2" (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[1] = param_2;" (assignment_expression "param_1[1] = param_2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = param_3;" (assignment_expression "param_1[2] = param_3" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_9 = param_3;" (assignment_expression "param_9 = param_3" identifier = identifier) ;) })) (if_statement "if ((bVar2 & 4) == 0) {\n    *(byte *)(param_1 + 7) = bVar2 | 4;\n    param_1[5] = param_4;\n    param_1[6] = param_5;\n    uVar1 = (**(code **)(*param_1 + 0x38))(param_1);\n    if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);\n  }" if (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    *(byte *)(param_1 + 7) = bVar2 | 4;\n    param_1[5] = param_4;\n    param_1[6] = param_5;\n    uVar1 = (**(code **)(*param_1 + 0x38))(param_1);\n    if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);\n  }" { (expression_statement "*(byte *)(param_1 + 7) = bVar2 | 4;" (assignment_expression "*(byte *)(param_1 + 7) = bVar2 | 4" (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) = (binary_expression "bVar2 | 4" identifier | number_literal)) ;) (expression_statement "param_1[5] = param_4;" (assignment_expression "param_1[5] = param_4" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[6] = param_5;" (assignment_expression "param_1[6] = param_5" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = (**(code **)(*param_1 + 0x38))(param_1);" (assignment_expression "uVar1 = (**(code **)(*param_1 + 0x38))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x38))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x38))" ( (pointer_expression "**(code **)(*param_1 + 0x38)" * (pointer_expression "*(code **)(*param_1 + 0x38)" * (cast_expression "(code **)(*param_1 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x38)" ( (binary_expression "*param_1 + 0x38" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 7) & 2) != 0)" ( (binary_expression "(*(byte *)(param_1 + 7) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 7) & 2)" ( (binary_expression "*(byte *)(param_1 + 7) & 2" (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }" { (expression_statement "FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);" (call_expression "FUN_000a8120(param_1 + 0x2d,param_6,param_7,0)" identifier (argument_list "(param_1 + 0x2d,param_6,param_7,0)" ( (binary_expression "param_1 + 0x2d" identifier + number_literal) , identifier , identifier , number_literal ))) ;) (expression_statement "*(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;" (assignment_expression "*(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20" (pointer_expression "*(byte *)((int)param_1 + 0x92)" * (cast_expression "(byte *)((int)param_1 + 0x92)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x92)" ( (binary_expression "(int)param_1 + 0x92" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)param_1 + 0x92) | 0x20" (pointer_expression "*(byte *)((int)param_1 + 0x92)" * (cast_expression "(byte *)((int)param_1 + 0x92)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x92)" ( (binary_expression "(int)param_1 + 0x92" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);" (call_expression "FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1)" identifier (argument_list "("../../gold/output.h",0x163,"finalize_data_size",uVar1)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""finalize_data_size"" " string_content ") , identifier ))) ;) })) comment (expression_statement "FUN_0008b620("../../gold/output.h",0x14b,"set_file_offset",param_9);" (call_expression "FUN_0008b620("../../gold/output.h",0x14b,"set_file_offset",param_9)" identifier (argument_list "("../../gold/output.h",0x14b,"set_file_offset",param_9)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_file_offset"" " string_content ") , identifier ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* DWARF original prototype: void set_fixed_layout(Output_section * this, uint64_t sh_addr, off_t\n   sh_offset, off_t sh_size, uint64_t sh_addralign) */\n\nvoid __thiscall\ngold::Output_section::set_fixed_layout\n          (Output_section *this,uint64_t sh_addr,off_t sh_offset,off_t sh_size,uint64_t sh_addralign\n          )\n\n{\n  byte bVar1;\n  \n  bVar1 = (this->super_Output_data).field_0x1c;\n  this->addralign_ = sh_addralign;\n  if ((bVar1 & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x231,"set_current_data_size_for_child");\n  }\n  (this->super_Output_data).data_size_ = sh_size;\n  if ((this->flags_ & 2) != 0) {\n    if ((bVar1 & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0x142,"set_address");\n    }\n    bVar1 = bVar1 | 1;\n    (this->super_Output_data).field_0x1c = bVar1;\n    (this->super_Output_data).address_ = sh_addr;\n  }\n  if ((bVar1 & 4) == 0) {\n    (this->super_Output_data).field_0x1c = bVar1 | 4;\n    (this->super_Output_data).offset_ = sh_offset;\n    (*(this->super_Output_data)._vptr_Output_data[0xe])(this);\n    if (((this->super_Output_data).field_0x1c & 2) != 0) {\n      Free_list::init(&this->free_list_,(EVP_PKEY_CTX *)sh_size);\n      this->field_0x92 = this->field_0x92 | 0x20;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size");\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0x14b,"set_file_offset");\n}\n\n" comment comment (function_definition "void __thiscall\ngold::Output_section::set_fixed_layout\n          (Output_section *this,uint64_t sh_addr,off_t sh_offset,off_t sh_size,uint64_t sh_addralign\n          )\n\n{\n  byte bVar1;\n  \n  bVar1 = (this->super_Output_data).field_0x1c;\n  this->addralign_ = sh_addralign;\n  if ((bVar1 & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x231,"set_current_data_size_for_child");\n  }\n  (this->super_Output_data).data_size_ = sh_size;\n  if ((this->flags_ & 2) != 0) {\n    if ((bVar1 & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0x142,"set_address");\n    }\n    bVar1 = bVar1 | 1;\n    (this->super_Output_data).field_0x1c = bVar1;\n    (this->super_Output_data).address_ = sh_addr;\n  }\n  if ((bVar1 & 4) == 0) {\n    (this->super_Output_data).field_0x1c = bVar1 | 4;\n    (this->super_Output_data).offset_ = sh_offset;\n    (*(this->super_Output_data)._vptr_Output_data[0xe])(this);\n    if (((this->super_Output_data).field_0x1c & 2) != 0) {\n      Free_list::init(&this->free_list_,(EVP_PKEY_CTX *)sh_size);\n      this->field_0x92 = this->field_0x92 | 0x20;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size");\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0x14b,"set_file_offset");\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_section::" identifier : : identifier : :) (function_declarator "set_fixed_layout\n          (Output_section *this,uint64_t sh_addr,off_t sh_offset,off_t sh_size,uint64_t sh_addralign\n          )" identifier (parameter_list "(Output_section *this,uint64_t sh_addr,off_t sh_offset,off_t sh_size,uint64_t sh_addralign\n          )" ( (parameter_declaration "Output_section *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint64_t sh_addr" primitive_type identifier) , (parameter_declaration "off_t sh_offset" type_identifier identifier) , (parameter_declaration "off_t sh_size" type_identifier identifier) , (parameter_declaration "uint64_t sh_addralign" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  \n  bVar1 = (this->super_Output_data).field_0x1c;\n  this->addralign_ = sh_addralign;\n  if ((bVar1 & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x231,"set_current_data_size_for_child");\n  }\n  (this->super_Output_data).data_size_ = sh_size;\n  if ((this->flags_ & 2) != 0) {\n    if ((bVar1 & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0x142,"set_address");\n    }\n    bVar1 = bVar1 | 1;\n    (this->super_Output_data).field_0x1c = bVar1;\n    (this->super_Output_data).address_ = sh_addr;\n  }\n  if ((bVar1 & 4) == 0) {\n    (this->super_Output_data).field_0x1c = bVar1 | 4;\n    (this->super_Output_data).offset_ = sh_offset;\n    (*(this->super_Output_data)._vptr_Output_data[0xe])(this);\n    if (((this->super_Output_data).field_0x1c & 2) != 0) {\n      Free_list::init(&this->free_list_,(EVP_PKEY_CTX *)sh_size);\n      this->field_0x92 = this->field_0x92 | 0x20;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size");\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0x14b,"set_file_offset");\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (expression_statement "bVar1 = (this->super_Output_data).field_0x1c;" (assignment_expression "bVar1 = (this->super_Output_data).field_0x1c" identifier = (field_expression "(this->super_Output_data).field_0x1c" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "this->addralign_ = sh_addralign;" (assignment_expression "this->addralign_ = sh_addralign" (field_expression "this->addralign_" identifier -> field_identifier) = identifier) ;) (if_statement "if ((bVar1 & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x231,"set_current_data_size_for_child");\n  }" if (parenthesized_expression "((bVar1 & 2) != 0)" ( (binary_expression "(bVar1 & 2) != 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x231,"set_current_data_size_for_child");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0x231,"set_current_data_size_for_child");" (call_expression "do_gold_unreachable("../../gold/output.h",0x231,"set_current_data_size_for_child")" identifier (argument_list "("../../gold/output.h",0x231,"set_current_data_size_for_child")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_current_data_size_for_child"" " string_content ") ))) ;) })) (expression_statement "(this->super_Output_data).data_size_ = sh_size;" (assignment_expression "(this->super_Output_data).data_size_ = sh_size" (field_expression "(this->super_Output_data).data_size_" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if ((this->flags_ & 2) != 0) {\n    if ((bVar1 & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0x142,"set_address");\n    }\n    bVar1 = bVar1 | 1;\n    (this->super_Output_data).field_0x1c = bVar1;\n    (this->super_Output_data).address_ = sh_addr;\n  }" if (parenthesized_expression "((this->flags_ & 2) != 0)" ( (binary_expression "(this->flags_ & 2) != 0" (parenthesized_expression "(this->flags_ & 2)" ( (binary_expression "this->flags_ & 2" (field_expression "this->flags_" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((bVar1 & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0x142,"set_address");\n    }\n    bVar1 = bVar1 | 1;\n    (this->super_Output_data).field_0x1c = bVar1;\n    (this->super_Output_data).address_ = sh_addr;\n  }" { (if_statement "if ((bVar1 & 1) != 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0x142,"set_address");\n    }" if (parenthesized_expression "((bVar1 & 1) != 0)" ( (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0x142,"set_address");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0x142,"set_address");" (call_expression "do_gold_unreachable("../../gold/output.h",0x142,"set_address")" identifier (argument_list "("../../gold/output.h",0x142,"set_address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_address"" " string_content ") ))) ;) })) (expression_statement "bVar1 = bVar1 | 1;" (assignment_expression "bVar1 = bVar1 | 1" identifier = (binary_expression "bVar1 | 1" identifier | number_literal)) ;) (expression_statement "(this->super_Output_data).field_0x1c = bVar1;" (assignment_expression "(this->super_Output_data).field_0x1c = bVar1" (field_expression "(this->super_Output_data).field_0x1c" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(this->super_Output_data).address_ = sh_addr;" (assignment_expression "(this->super_Output_data).address_ = sh_addr" (field_expression "(this->super_Output_data).address_" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier) = identifier) ;) })) (if_statement "if ((bVar1 & 4) == 0) {\n    (this->super_Output_data).field_0x1c = bVar1 | 4;\n    (this->super_Output_data).offset_ = sh_offset;\n    (*(this->super_Output_data)._vptr_Output_data[0xe])(this);\n    if (((this->super_Output_data).field_0x1c & 2) != 0) {\n      Free_list::init(&this->free_list_,(EVP_PKEY_CTX *)sh_size);\n      this->field_0x92 = this->field_0x92 | 0x20;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size");\n  }" if (parenthesized_expression "((bVar1 & 4) == 0)" ( (binary_expression "(bVar1 & 4) == 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    (this->super_Output_data).field_0x1c = bVar1 | 4;\n    (this->super_Output_data).offset_ = sh_offset;\n    (*(this->super_Output_data)._vptr_Output_data[0xe])(this);\n    if (((this->super_Output_data).field_0x1c & 2) != 0) {\n      Free_list::init(&this->free_list_,(EVP_PKEY_CTX *)sh_size);\n      this->field_0x92 = this->field_0x92 | 0x20;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size");\n  }" { (expression_statement "(this->super_Output_data).field_0x1c = bVar1 | 4;" (assignment_expression "(this->super_Output_data).field_0x1c = bVar1 | 4" (field_expression "(this->super_Output_data).field_0x1c" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier) = (binary_expression "bVar1 | 4" identifier | number_literal)) ;) (expression_statement "(this->super_Output_data).offset_ = sh_offset;" (assignment_expression "(this->super_Output_data).offset_ = sh_offset" (field_expression "(this->super_Output_data).offset_" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(*(this->super_Output_data)._vptr_Output_data[0xe])(this);" (call_expression "(*(this->super_Output_data)._vptr_Output_data[0xe])(this)" (parenthesized_expression "(*(this->super_Output_data)._vptr_Output_data[0xe])" ( (pointer_expression "*(this->super_Output_data)._vptr_Output_data[0xe]" * (subscript_expression "(this->super_Output_data)._vptr_Output_data[0xe]" (field_expression "(this->super_Output_data)._vptr_Output_data" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(this)" ( identifier ))) ;) (if_statement "if (((this->super_Output_data).field_0x1c & 2) != 0) {\n      Free_list::init(&this->free_list_,(EVP_PKEY_CTX *)sh_size);\n      this->field_0x92 = this->field_0x92 | 0x20;\n      return;\n    }" if (parenthesized_expression "(((this->super_Output_data).field_0x1c & 2) != 0)" ( (binary_expression "((this->super_Output_data).field_0x1c & 2) != 0" (parenthesized_expression "((this->super_Output_data).field_0x1c & 2)" ( (binary_expression "(this->super_Output_data).field_0x1c & 2" (field_expression "(this->super_Output_data).field_0x1c" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      Free_list::init(&this->free_list_,(EVP_PKEY_CTX *)sh_size);\n      this->field_0x92 = this->field_0x92 | 0x20;\n      return;\n    }" { (labeled_statement "Free_list::init(&this->free_list_,(EVP_PKEY_CTX *)sh_size);" statement_identifier : (ERROR ":" :) (expression_statement "init(&this->free_list_,(EVP_PKEY_CTX *)sh_size);" (call_expression "init(&this->free_list_,(EVP_PKEY_CTX *)sh_size)" identifier (argument_list "(&this->free_list_,(EVP_PKEY_CTX *)sh_size)" ( (pointer_expression "&this->free_list_" & (field_expression "this->free_list_" identifier -> field_identifier)) , (cast_expression "(EVP_PKEY_CTX *)sh_size" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "this->field_0x92 = this->field_0x92 | 0x20;" (assignment_expression "this->field_0x92 = this->field_0x92 | 0x20" (field_expression "this->field_0x92" identifier -> field_identifier) = (binary_expression "this->field_0x92 | 0x20" (field_expression "this->field_0x92" identifier -> field_identifier) | number_literal)) ;) (return_statement "return;" return ;) })) comment (expression_statement "do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size");" (call_expression "do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size")" identifier (argument_list "("../../gold/output.h",0x163,"finalize_data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""finalize_data_size"" " string_content ") ))) ;) })) comment (expression_statement "do_gold_unreachable("../../gold/output.h",0x14b,"set_file_offset");" (call_expression "do_gold_unreachable("../../gold/output.h",0x14b,"set_file_offset")" identifier (argument_list "("../../gold/output.h",0x14b,"set_file_offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_file_offset"" " string_content ") ))) ;) })))
(translation_unit "void FUN_000ea140(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7,int param_8,int param_9)\n\n{\n  undefined4 uVar1;\n  byte bVar2;\n  \n  bVar2 = *(byte *)(param_1 + 7);\n  param_1[9] = param_8;\n  param_1[10] = param_9;\n  if ((bVar2 & 2) != 0) {\n                    \n    FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);\n  }\n  param_1[3] = param_6;\n  param_1[4] = param_7;\n  if ((*(byte *)(param_1 + 0x15) & 2) != 0) {\n    if ((bVar2 & 1) != 0) {\n                    \n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }\n    bVar2 = bVar2 | 1;\n    *(byte *)(param_1 + 7) = bVar2;\n    param_1[1] = param_2;\n    param_1[2] = param_3;\n    param_9 = param_3;\n  }\n  if ((bVar2 & 4) == 0) {\n    *(byte *)(param_1 + 7) = bVar2 | 4;\n    param_1[5] = param_4;\n    param_1[6] = param_5;\n    uVar1 = (**(code **)(*param_1 + 0x38))(param_1);\n    if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }\n                    \n    FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);\n  }\n                    \n  FUN_0008b620("../../gold/output.h",0x14b,"set_file_offset",param_9);\n}\n\n" (function_definition "void FUN_000ea140(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7,int param_8,int param_9)\n\n{\n  undefined4 uVar1;\n  byte bVar2;\n  \n  bVar2 = *(byte *)(param_1 + 7);\n  param_1[9] = param_8;\n  param_1[10] = param_9;\n  if ((bVar2 & 2) != 0) {\n                    \n    FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);\n  }\n  param_1[3] = param_6;\n  param_1[4] = param_7;\n  if ((*(byte *)(param_1 + 0x15) & 2) != 0) {\n    if ((bVar2 & 1) != 0) {\n                    \n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }\n    bVar2 = bVar2 | 1;\n    *(byte *)(param_1 + 7) = bVar2;\n    param_1[1] = param_2;\n    param_1[2] = param_3;\n    param_9 = param_3;\n  }\n  if ((bVar2 & 4) == 0) {\n    *(byte *)(param_1 + 7) = bVar2 | 4;\n    param_1[5] = param_4;\n    param_1[6] = param_5;\n    uVar1 = (**(code **)(*param_1 + 0x38))(param_1);\n    if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }\n                    \n    FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);\n  }\n                    \n  FUN_0008b620("../../gold/output.h",0x14b,"set_file_offset",param_9);\n}" primitive_type (function_declarator "FUN_000ea140(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7,int param_8,int param_9)" identifier (parameter_list "(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7,int param_8,int param_9)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "int param_9" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  byte bVar2;\n  \n  bVar2 = *(byte *)(param_1 + 7);\n  param_1[9] = param_8;\n  param_1[10] = param_9;\n  if ((bVar2 & 2) != 0) {\n                    \n    FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);\n  }\n  param_1[3] = param_6;\n  param_1[4] = param_7;\n  if ((*(byte *)(param_1 + 0x15) & 2) != 0) {\n    if ((bVar2 & 1) != 0) {\n                    \n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }\n    bVar2 = bVar2 | 1;\n    *(byte *)(param_1 + 7) = bVar2;\n    param_1[1] = param_2;\n    param_1[2] = param_3;\n    param_9 = param_3;\n  }\n  if ((bVar2 & 4) == 0) {\n    *(byte *)(param_1 + 7) = bVar2 | 4;\n    param_1[5] = param_4;\n    param_1[6] = param_5;\n    uVar1 = (**(code **)(*param_1 + 0x38))(param_1);\n    if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }\n                    \n    FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);\n  }\n                    \n  FUN_0008b620("../../gold/output.h",0x14b,"set_file_offset",param_9);\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (expression_statement "bVar2 = *(byte *)(param_1 + 7);" (assignment_expression "bVar2 = *(byte *)(param_1 + 7)" identifier = (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) ))))) ;) (expression_statement "param_1[9] = param_8;" (assignment_expression "param_1[9] = param_8" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[10] = param_9;" (assignment_expression "param_1[10] = param_9" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((bVar2 & 2) != 0) {\n                    \n    FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);\n  }" if (parenthesized_expression "((bVar2 & 2) != 0)" ( (binary_expression "(bVar2 & 2) != 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    \n    FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);\n  }" { (expression_statement "FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);" (call_expression "FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6)" identifier (argument_list "("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_current_data_size_for_child"" " string_content ") , identifier ))) ;) })) (expression_statement "param_1[3] = param_6;" (assignment_expression "param_1[3] = param_6" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[4] = param_7;" (assignment_expression "param_1[4] = param_7" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((*(byte *)(param_1 + 0x15) & 2) != 0) {\n    if ((bVar2 & 1) != 0) {\n                    \n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }\n    bVar2 = bVar2 | 1;\n    *(byte *)(param_1 + 7) = bVar2;\n    param_1[1] = param_2;\n    param_1[2] = param_3;\n    param_9 = param_3;\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x15) & 2) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x15) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x15) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x15) & 2" (pointer_expression "*(byte *)(param_1 + 0x15)" * (cast_expression "(byte *)(param_1 + 0x15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x15)" ( (binary_expression "param_1 + 0x15" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((bVar2 & 1) != 0) {\n                    \n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }\n    bVar2 = bVar2 | 1;\n    *(byte *)(param_1 + 7) = bVar2;\n    param_1[1] = param_2;\n    param_1[2] = param_3;\n    param_9 = param_3;\n  }" { (if_statement "if ((bVar2 & 1) != 0) {\n                    \n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }" if (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    \n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }" { (expression_statement "FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);" (call_expression "FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2)" identifier (argument_list "("../../gold/output.h",0x142,"set_address",bVar2)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_address"" " string_content ") , identifier ))) ;) })) (expression_statement "bVar2 = bVar2 | 1;" (assignment_expression "bVar2 = bVar2 | 1" identifier = (binary_expression "bVar2 | 1" identifier | number_literal)) ;) (expression_statement "*(byte *)(param_1 + 7) = bVar2;" (assignment_expression "*(byte *)(param_1 + 7) = bVar2" (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[1] = param_2;" (assignment_expression "param_1[1] = param_2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = param_3;" (assignment_expression "param_1[2] = param_3" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_9 = param_3;" (assignment_expression "param_9 = param_3" identifier = identifier) ;) })) (if_statement "if ((bVar2 & 4) == 0) {\n    *(byte *)(param_1 + 7) = bVar2 | 4;\n    param_1[5] = param_4;\n    param_1[6] = param_5;\n    uVar1 = (**(code **)(*param_1 + 0x38))(param_1);\n    if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }\n                    \n    FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);\n  }" if (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    *(byte *)(param_1 + 7) = bVar2 | 4;\n    param_1[5] = param_4;\n    param_1[6] = param_5;\n    uVar1 = (**(code **)(*param_1 + 0x38))(param_1);\n    if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }\n                    \n    FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);\n  }" { (expression_statement "*(byte *)(param_1 + 7) = bVar2 | 4;" (assignment_expression "*(byte *)(param_1 + 7) = bVar2 | 4" (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) = (binary_expression "bVar2 | 4" identifier | number_literal)) ;) (expression_statement "param_1[5] = param_4;" (assignment_expression "param_1[5] = param_4" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[6] = param_5;" (assignment_expression "param_1[6] = param_5" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = (**(code **)(*param_1 + 0x38))(param_1);" (assignment_expression "uVar1 = (**(code **)(*param_1 + 0x38))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x38))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x38))" ( (pointer_expression "**(code **)(*param_1 + 0x38)" * (pointer_expression "*(code **)(*param_1 + 0x38)" * (cast_expression "(code **)(*param_1 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x38)" ( (binary_expression "*param_1 + 0x38" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 7) & 2) != 0)" ( (binary_expression "(*(byte *)(param_1 + 7) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 7) & 2)" ( (binary_expression "*(byte *)(param_1 + 7) & 2" (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }" { (expression_statement "FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);" (call_expression "FUN_000a8120(param_1 + 0x2d,param_6,param_7,0)" identifier (argument_list "(param_1 + 0x2d,param_6,param_7,0)" ( (binary_expression "param_1 + 0x2d" identifier + number_literal) , identifier , identifier , number_literal ))) ;) (expression_statement "*(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;" (assignment_expression "*(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20" (pointer_expression "*(byte *)((int)param_1 + 0x92)" * (cast_expression "(byte *)((int)param_1 + 0x92)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x92)" ( (binary_expression "(int)param_1 + 0x92" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)param_1 + 0x92) | 0x20" (pointer_expression "*(byte *)((int)param_1 + 0x92)" * (cast_expression "(byte *)((int)param_1 + 0x92)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x92)" ( (binary_expression "(int)param_1 + 0x92" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);" (call_expression "FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1)" identifier (argument_list "("../../gold/output.h",0x163,"finalize_data_size",uVar1)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""finalize_data_size"" " string_content ") , identifier ))) ;) })) (expression_statement "FUN_0008b620("../../gold/output.h",0x14b,"set_file_offset",param_9);" (call_expression "FUN_0008b620("../../gold/output.h",0x14b,"set_file_offset",param_9)" identifier (argument_list "("../../gold/output.h",0x14b,"set_file_offset",param_9)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_file_offset"" " string_content ") , identifier ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) | LIT)) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })))
(function_definition "void FUN_000ea140(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7,int param_8,int param_9)\n\n{\n  undefined4 uVar1;\n  byte bVar2;\n  \n  bVar2 = *(byte *)(param_1 + 7);\n  param_1[9] = param_8;\n  param_1[10] = param_9;\n  if ((bVar2 & 2) != 0) {\n                    \n    FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);\n  }\n  param_1[3] = param_6;\n  param_1[4] = param_7;\n  if ((*(byte *)(param_1 + 0x15) & 2) != 0) {\n    if ((bVar2 & 1) != 0) {\n                    \n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }\n    bVar2 = bVar2 | 1;\n    *(byte *)(param_1 + 7) = bVar2;\n    param_1[1] = param_2;\n    param_1[2] = param_3;\n    param_9 = param_3;\n  }\n  if ((bVar2 & 4) == 0) {\n    *(byte *)(param_1 + 7) = bVar2 | 4;\n    param_1[5] = param_4;\n    param_1[6] = param_5;\n    uVar1 = (**(code **)(*param_1 + 0x38))(param_1);\n    if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }\n                    \n    FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);\n  }\n                    \n  FUN_0008b620("../../gold/output.h",0x14b,"set_file_offset",param_9);\n}" (primitive_type "void") (function_declarator "FUN_000ea140(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7,int param_8,int param_9)" (identifier "FUN_000ea140") (parameter_list "(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 int param_7,int param_8,int param_9)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) (, ",") (parameter_declaration "int param_8" (primitive_type "int") (identifier "param_8")) (, ",") (parameter_declaration "int param_9" (primitive_type "int") (identifier "param_9")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  byte bVar2;\n  \n  bVar2 = *(byte *)(param_1 + 7);\n  param_1[9] = param_8;\n  param_1[10] = param_9;\n  if ((bVar2 & 2) != 0) {\n                    \n    FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);\n  }\n  param_1[3] = param_6;\n  param_1[4] = param_7;\n  if ((*(byte *)(param_1 + 0x15) & 2) != 0) {\n    if ((bVar2 & 1) != 0) {\n                    \n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }\n    bVar2 = bVar2 | 1;\n    *(byte *)(param_1 + 7) = bVar2;\n    param_1[1] = param_2;\n    param_1[2] = param_3;\n    param_9 = param_3;\n  }\n  if ((bVar2 & 4) == 0) {\n    *(byte *)(param_1 + 7) = bVar2 | 4;\n    param_1[5] = param_4;\n    param_1[6] = param_5;\n    uVar1 = (**(code **)(*param_1 + 0x38))(param_1);\n    if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }\n                    \n    FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);\n  }\n                    \n  FUN_0008b620("../../gold/output.h",0x14b,"set_file_offset",param_9);\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (expression_statement "bVar2 = *(byte *)(param_1 + 7);" (assignment_expression "bVar2 = *(byte *)(param_1 + 7)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(param_1 + 7)" (* "*") (cast_expression "(byte *)(param_1 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 7)" (( "(") (binary_expression "param_1 + 7" (identifier "param_1") (+ "+") (number_literal "7")) () ")"))))) (; ";")) (expression_statement "param_1[9] = param_8;" (assignment_expression "param_1[9] = param_8" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "param_8")) (; ";")) (expression_statement "param_1[10] = param_9;" (assignment_expression "param_1[10] = param_9" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "param_9")) (; ";")) (if_statement "if ((bVar2 & 2) != 0) {\n                    \n    FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);\n  }" (if "if") (parenthesized_expression "((bVar2 & 2) != 0)" (( "(") (binary_expression "(bVar2 & 2) != 0" (parenthesized_expression "(bVar2 & 2)" (( "(") (binary_expression "bVar2 & 2" (identifier "bVar2") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);\n  }" ({ "{") (expression_statement "FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);" (call_expression "FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6)" (identifier "FUN_0008b620") (argument_list "("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6)" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0x231") (, ",") (string_literal ""set_current_data_size_for_child"" (" """) (string_content "set_current_data_size_for_child") (" """)) (, ",") (identifier "param_6") () ")"))) (; ";")) (} "}"))) (expression_statement "param_1[3] = param_6;" (assignment_expression "param_1[3] = param_6" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_6")) (; ";")) (expression_statement "param_1[4] = param_7;" (assignment_expression "param_1[4] = param_7" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "param_7")) (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x15) & 2) != 0) {\n    if ((bVar2 & 1) != 0) {\n                    \n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }\n    bVar2 = bVar2 | 1;\n    *(byte *)(param_1 + 7) = bVar2;\n    param_1[1] = param_2;\n    param_1[2] = param_3;\n    param_9 = param_3;\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x15) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x15) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x15) & 2)" (( "(") (binary_expression "*(byte *)(param_1 + 0x15) & 2" (pointer_expression "*(byte *)(param_1 + 0x15)" (* "*") (cast_expression "(byte *)(param_1 + 0x15)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x15)" (( "(") (binary_expression "param_1 + 0x15" (identifier "param_1") (+ "+") (number_literal "0x15")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if ((bVar2 & 1) != 0) {\n                    \n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }\n    bVar2 = bVar2 | 1;\n    *(byte *)(param_1 + 7) = bVar2;\n    param_1[1] = param_2;\n    param_1[2] = param_3;\n    param_9 = param_3;\n  }" ({ "{") (if_statement "if ((bVar2 & 1) != 0) {\n                    \n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }" (if "if") (parenthesized_expression "((bVar2 & 1) != 0)" (( "(") (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" (( "(") (binary_expression "bVar2 & 1" (identifier "bVar2") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);\n    }" ({ "{") (expression_statement "FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);" (call_expression "FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2)" (identifier "FUN_0008b620") (argument_list "("../../gold/output.h",0x142,"set_address",bVar2)" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0x142") (, ",") (string_literal ""set_address"" (" """) (string_content "set_address") (" """)) (, ",") (identifier "bVar2") () ")"))) (; ";")) (} "}"))) (expression_statement "bVar2 = bVar2 | 1;" (assignment_expression "bVar2 = bVar2 | 1" (identifier "bVar2") (= "=") (binary_expression "bVar2 | 1" (identifier "bVar2") (| "|") (number_literal "1"))) (; ";")) (expression_statement "*(byte *)(param_1 + 7) = bVar2;" (assignment_expression "*(byte *)(param_1 + 7) = bVar2" (pointer_expression "*(byte *)(param_1 + 7)" (* "*") (cast_expression "(byte *)(param_1 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 7)" (( "(") (binary_expression "param_1 + 7" (identifier "param_1") (+ "+") (number_literal "7")) () ")")))) (= "=") (identifier "bVar2")) (; ";")) (expression_statement "param_1[1] = param_2;" (assignment_expression "param_1[1] = param_2" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "param_1[2] = param_3;" (assignment_expression "param_1[2] = param_3" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "param_9 = param_3;" (assignment_expression "param_9 = param_3" (identifier "param_9") (= "=") (identifier "param_3")) (; ";")) (} "}"))) (if_statement "if ((bVar2 & 4) == 0) {\n    *(byte *)(param_1 + 7) = bVar2 | 4;\n    param_1[5] = param_4;\n    param_1[6] = param_5;\n    uVar1 = (**(code **)(*param_1 + 0x38))(param_1);\n    if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }\n                    \n    FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);\n  }" (if "if") (parenthesized_expression "((bVar2 & 4) == 0)" (( "(") (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" (( "(") (binary_expression "bVar2 & 4" (identifier "bVar2") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(byte *)(param_1 + 7) = bVar2 | 4;\n    param_1[5] = param_4;\n    param_1[6] = param_5;\n    uVar1 = (**(code **)(*param_1 + 0x38))(param_1);\n    if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }\n                    \n    FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);\n  }" ({ "{") (expression_statement "*(byte *)(param_1 + 7) = bVar2 | 4;" (assignment_expression "*(byte *)(param_1 + 7) = bVar2 | 4" (pointer_expression "*(byte *)(param_1 + 7)" (* "*") (cast_expression "(byte *)(param_1 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 7)" (( "(") (binary_expression "param_1 + 7" (identifier "param_1") (+ "+") (number_literal "7")) () ")")))) (= "=") (binary_expression "bVar2 | 4" (identifier "bVar2") (| "|") (number_literal "4"))) (; ";")) (expression_statement "param_1[5] = param_4;" (assignment_expression "param_1[5] = param_4" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "param_1[6] = param_5;" (assignment_expression "param_1[6] = param_5" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "param_5")) (; ";")) (expression_statement "uVar1 = (**(code **)(*param_1 + 0x38))(param_1);" (assignment_expression "uVar1 = (**(code **)(*param_1 + 0x38))(param_1)" (identifier "uVar1") (= "=") (call_expression "(**(code **)(*param_1 + 0x38))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x38))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x38)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x38)" (* "*") (cast_expression "(code **)(*param_1 + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x38)" (( "(") (binary_expression "*param_1 + 0x38" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if ((*(byte *)(param_1 + 7) & 2) != 0) {\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 7) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 7) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 7) & 2)" (( "(") (binary_expression "*(byte *)(param_1 + 7) & 2" (pointer_expression "*(byte *)(param_1 + 7)" (* "*") (cast_expression "(byte *)(param_1 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 7)" (( "(") (binary_expression "param_1 + 7" (identifier "param_1") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);\n      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;\n      return;\n    }" ({ "{") (expression_statement "FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);" (call_expression "FUN_000a8120(param_1 + 0x2d,param_6,param_7,0)" (identifier "FUN_000a8120") (argument_list "(param_1 + 0x2d,param_6,param_7,0)" (( "(") (binary_expression "param_1 + 0x2d" (identifier "param_1") (+ "+") (number_literal "0x2d")) (, ",") (identifier "param_6") (, ",") (identifier "param_7") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "*(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;" (assignment_expression "*(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20" (pointer_expression "*(byte *)((int)param_1 + 0x92)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x92)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x92)" (( "(") (binary_expression "(int)param_1 + 0x92" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x92")) () ")")))) (= "=") (binary_expression "*(byte *)((int)param_1 + 0x92) | 0x20" (pointer_expression "*(byte *)((int)param_1 + 0x92)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x92)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x92)" (( "(") (binary_expression "(int)param_1 + 0x92" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x92")) () ")")))) (| "|") (number_literal "0x20"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);" (call_expression "FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1)" (identifier "FUN_0008b620") (argument_list "("../../gold/output.h",0x163,"finalize_data_size",uVar1)" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0x163") (, ",") (string_literal ""finalize_data_size"" (" """) (string_content "finalize_data_size") (" """)) (, ",") (identifier "uVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_0008b620("../../gold/output.h",0x14b,"set_file_offset",param_9);" (call_expression "FUN_0008b620("../../gold/output.h",0x14b,"set_file_offset",param_9)" (identifier "FUN_0008b620") (argument_list "("../../gold/output.h",0x14b,"set_file_offset",param_9)" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0x14b") (, ",") (string_literal ""set_file_offset"" (" """) (string_content "set_file_offset") (" """)) (, ",") (identifier "param_9") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: void set_fixed_layout(Output_section * this, uint64_t sh_addr, off_t
   sh_offset, off_t sh_size, uint64_t sh_addralign) */

void __thiscall
gold::type_1::function_1
          (type_1 *this,uint64_t sh_addr,type_2 sh_offset,type_2 sh_size,uint64_t sh_addralign
          )

{
  type_3 var_1;
  
  var_1 = (this->super_Output_data).field_0x1c;
  this->addralign_ = sh_addralign;
  if ((var_1 & 2) != 0) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/output.h",0x231,"set_current_data_size_for_child");
  }
  (this->super_Output_data).data_size_ = sh_size;
  if ((this->flags_ & 2) != 0) {
    if ((var_1 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
      var_2("../../gold/output.h",0x142,"set_address");
    }
    var_1 = var_1 | 1;
    (this->super_Output_data).field_0x1c = var_1;
    (this->super_Output_data).address_ = sh_addr;
  }
  if ((var_1 & 4) == 0) {
    (this->super_Output_data).field_0x1c = var_1 | 4;
    (this->super_Output_data).offset_ = sh_offset;
    (*(this->super_Output_data)._vptr_Output_data[0xe])(this);
    if (((this->super_Output_data).field_0x1c & 2) != 0) {
      Free_list::var_3(&this->free_list_,(type_4 *)sh_size);
      this->field_0x92 = this->field_0x92 | 0x20;
      return;
    }
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/output.h",0x163,"finalize_data_size");
  }
                    /* WARNING: Subroutine does not return */
  var_2("../../gold/output.h",0x14b,"set_file_offset");
}


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

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

void MASKED(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6,
                 int param_7,int param_8,int param_9)

{
  undefined4 uVar1;
  byte bVar2;
  
  bVar2 = *(byte *)(param_1 + 7);
  param_1[9] = param_8;
  param_1[10] = param_9;
  if ((bVar2 & 2) != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0008b620("../../gold/output.h",0x231,"set_current_data_size_for_child",param_6);
  }
  param_1[3] = param_6;
  param_1[4] = param_7;
  if ((*(byte *)(param_1 + 0x15) & 2) != 0) {
    if ((bVar2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0008b620("../../gold/output.h",0x142,"set_address",bVar2);
    }
    bVar2 = bVar2 | 1;
    *(byte *)(param_1 + 7) = bVar2;
    param_1[1] = param_2;
    param_1[2] = param_3;
    param_9 = param_3;
  }
  if ((bVar2 & 4) == 0) {
    *(byte *)(param_1 + 7) = bVar2 | 4;
    param_1[5] = param_4;
    param_1[6] = param_5;
    uVar1 = (**(code **)(*param_1 + 0x38))(param_1);
    if ((*(byte *)(param_1 + 7) & 2) != 0) {
      FUN_000a8120(param_1 + 0x2d,param_6,param_7,0);
      *(byte *)((int)param_1 + 0x92) = *(byte *)((int)param_1 + 0x92) | 0x20;
      return;
    }
                    /* WARNING: Subroutine does not return */
    FUN_0008b620("../../gold/output.h",0x163,"finalize_data_size",uVar1);
  }
                    /* WARNING: Subroutine does not return */
  FUN_0008b620("../../gold/output.h",0x14b,"set_file_offset",param_9);
}

