
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void set_section_addresses(Output_section_element_data * this,
   Symbol_table * symtab, Layout * layout, Output_section * os, uint64_t param_4, uint64_t *
   dot_value, uint64_t * param_6, Output_section * * dot_section, string * param_8,
   Input_section_list * param_9) */

void __thiscall
gold::Output_section_element_data::set_section_addresses
          (Output_section_element_data *this,Symbol_table *symtab,Layout *layout,Output_section *os,
          uint64_t param_4,uint64_t *dot_value,uint64_t *param_6,Output_section **dot_section,
          string *param_8,Input_section_list *param_9)

{
  byte bVar1;
  int iVar2;
  Expression *pEVar3;
  uint64_t uVar4;
  Output_section *pOVar5;
  iterator __position;
  Output_section_data *posd;
  Output_section_data *local_40 [2];
  
  if (os != (Output_section *)0x0) {
    posd = (Output_section_data *)operator_new(0x68);
    pEVar3 = this->val_;
    uVar4 = *dot_value;
    *(bool *)&posd[1].super_Output_data._vptr_Output_data = this->is_signed_;
    pOVar5 = *dot_section;
    iVar2 = this->size_;
    posd[1].super_Output_data.address_ = (uint64_t)pEVar3;
    (posd->super_Output_data).address_ = 0;
    (posd->super_Output_data).data_size_ = (long)iVar2;
    bVar1 = (posd->super_Output_data).field_0x20;
    posd->output_section_ = (Output_section *)0x0;
    posd->addralign_ = 0;
    (posd->super_Output_data).offset_ = -1;
    (posd->super_Output_data).field_0x20 = bVar1 & 0xe0 | 10;
    (posd->super_Output_data)._vptr_Output_data =
         (_func_int_varargs **)&PTR__Output_data_expression_003b75b0;
    posd[1].super_Output_data.data_size_ = (off_t)symtab;
    posd[1].super_Output_data.offset_ = (off_t)layout;
    *(uint64_t *)&posd[1].super_Output_data.field_0x20 = uVar4;
    posd[1].output_section_ = pOVar5;
    Output_section::add_output_section_data(os,posd);
    if (layout->record_output_section_data_from_script_ != false) {
      __position._M_current =
           (layout->script_output_section_data_list_).
           super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>
           ._M_impl._M_finish;
      if (__position._M_current ==
          (layout->script_output_section_data_list_).
          super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>
          ._M_impl._M_end_of_storage) {
        local_40[0] = posd;
        std::vector<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>::
        _M_realloc_insert<gold::Output_section_data*_const&>
                  (&layout->script_output_section_data_list_,__position,local_40);
      }
      else {
        *__position._M_current = posd;
        (layout->script_output_section_data_list_).
        super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>.
        _M_impl._M_finish = __position._M_current + 1;
      }
    }
    *dot_value = *dot_value + (long)this->size_;
    return;
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/script-sections.cc",0x4a9,"set_section_addresses");
}



void FUN_00206a80(long param_1,undefined8 param_2,long param_3,long param_4,undefined8 param_5,
                 long *param_6,undefined8 param_7,undefined8 *param_8)

{
  int iVar1;
  undefined8 uVar2;
  long lVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_40 [2];
  
  if (param_4 != 0) {
    puVar6 = (undefined8 *)FUN_00275550(0x68);
    uVar2 = *(undefined8 *)(param_1 + 0x10);
    lVar3 = *param_6;
    *(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);
    uVar4 = *param_8;
    iVar1 = *(int *)(param_1 + 8);
    puVar6[8] = uVar2;
    puVar6[1] = 0;
    puVar6[2] = (long)iVar1;
    puVar6[5] = 0;
    puVar6[6] = 0;
    puVar6[3] = 0xffffffffffffffff;
    *(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;
    *puVar6 = &PTR_FUN_003b75b0;
    puVar6[9] = param_2;
    puVar6[10] = param_3;
    puVar6[0xb] = lVar3;
    puVar6[0xc] = uVar4;
    FUN_001c4ee0(param_4,puVar6);
    if (*(char *)(param_3 + 0x380) != '\0') {
      puVar5 = *(undefined8 **)(param_3 + 0x390);
      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {
        local_40[0] = puVar6;
        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);
      }
      else {
        *puVar5 = puVar6;
        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;
      }
    }
    *param_6 = *param_6 + (long)*(int *)(param_1 + 8);
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0016cdf0("../../gold/script-sections.cc",0x4a9,"set_section_addresses");
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x18
TEST RCX,RCX
JZ 0x00206b8c
MOV RBP,RDI
MOV EDI,0x68
MOV R12,RDX
MOV R15,RSI
MOV R14,RCX
MOV R13,R9
CALL 0x00275550
MOV RSI,qword ptr [RBP + 0x10]
MOVZX EDI,byte ptr [RBP + 0xc]
MOV RBX,RAX
MOV RAX,qword ptr [RSP + 0x58]
MOV RCX,qword ptr [R13]
MOV byte ptr [RBX + 0x38],DIL
MOV RDI,R14
MOV RDX,qword ptr [RAX]
MOVSXD RAX,dword ptr [RBP + 0x8]
MOV qword ptr [RBX + 0x40],RSI
MOV RSI,RBX
MOV qword ptr [RBX + 0x8],0x0
MOV qword ptr [RBX + 0x10],RAX
MOVZX EAX,byte ptr [RBX + 0x20]
MOV qword ptr [RBX + 0x28],0x0
AND EAX,0xffffffe0
MOV qword ptr [RBX + 0x30],0x0
OR EAX,0xa
MOV qword ptr [RBX + 0x18],-0x1
MOV byte ptr [RBX + 0x20],AL
LEA RAX,[0x3b75b0]
MOV qword ptr [RBX],RAX
MOV qword ptr [RBX + 0x48],R15
MOV qword ptr [RBX + 0x50],R12
MOV qword ptr [RBX + 0x58],RCX
MOV qword ptr [RBX + 0x60],RDX
CALL 0x001c4ee0
MOV qword ptr [RSP + 0x8],RBX
CMP byte ptr [R12 + 0x380],0x0
JNZ 0x00206b50
MOVSXD RAX,dword ptr [RBP + 0x8]
ADD qword ptr [R13],RAX
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RSI,qword ptr [R12 + 0x390]
CMP RSI,qword ptr [R12 + 0x398]
JZ 0x00206b78
MOV qword ptr [RSI],RBX
ADD RSI,0x8
MOV qword ptr [R12 + 0x390],RSI
JMP 0x00206b39
LEA RDX,[RSP + 0x8]
LEA RDI,[R12 + 0x388]
CALL 0x0020b2d0
JMP 0x00206b39
LEA RDX,[0x31d220]
MOV ESI,0x4a9
LEA RDI,[0x31c74b]
CALL 0x0016cdf0
(translation_unit "void FUN_00206a80(long param_1,undefined8 param_2,long param_3,long param_4,undefined8 param_5,\n                 long *param_6,undefined8 param_7,undefined8 *param_8)\n\n{\n  int iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  undefined8 *local_40 [2];\n  \n  if (param_4 != 0) {\n    puVar6 = (undefined8 *)FUN_00275550(0x68);\n    uVar2 = *(undefined8 *)(param_1 + 0x10);\n    lVar3 = *param_6;\n    *(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);\n    uVar4 = *param_8;\n    iVar1 = *(int *)(param_1 + 8);\n    puVar6[8] = uVar2;\n    puVar6[1] = 0;\n    puVar6[2] = (long)iVar1;\n    puVar6[5] = 0;\n    puVar6[6] = 0;\n    puVar6[3] = 0xffffffffffffffff;\n    *(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;\n    *puVar6 = &PTR_FUN_003b75b0;\n    puVar6[9] = param_2;\n    puVar6[10] = param_3;\n    puVar6[0xb] = lVar3;\n    puVar6[0xc] = uVar4;\n    FUN_001c4ee0(param_4,puVar6);\n    if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }\n    *param_6 = *param_6 + (long)*(int *)(param_1 + 8);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0016cdf0("../../gold/script-sections.cc",0x4a9,"set_section_addresses");\n}\n\n" (function_definition "void FUN_00206a80(long param_1,undefined8 param_2,long param_3,long param_4,undefined8 param_5,\n                 long *param_6,undefined8 param_7,undefined8 *param_8)\n\n{\n  int iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  undefined8 *local_40 [2];\n  \n  if (param_4 != 0) {\n    puVar6 = (undefined8 *)FUN_00275550(0x68);\n    uVar2 = *(undefined8 *)(param_1 + 0x10);\n    lVar3 = *param_6;\n    *(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);\n    uVar4 = *param_8;\n    iVar1 = *(int *)(param_1 + 8);\n    puVar6[8] = uVar2;\n    puVar6[1] = 0;\n    puVar6[2] = (long)iVar1;\n    puVar6[5] = 0;\n    puVar6[6] = 0;\n    puVar6[3] = 0xffffffffffffffff;\n    *(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;\n    *puVar6 = &PTR_FUN_003b75b0;\n    puVar6[9] = param_2;\n    puVar6[10] = param_3;\n    puVar6[0xb] = lVar3;\n    puVar6[0xc] = uVar4;\n    FUN_001c4ee0(param_4,puVar6);\n    if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }\n    *param_6 = *param_6 + (long)*(int *)(param_1 + 8);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0016cdf0("../../gold/script-sections.cc",0x4a9,"set_section_addresses");\n}" primitive_type (function_declarator "FUN_00206a80(long param_1,undefined8 param_2,long param_3,long param_4,undefined8 param_5,\n                 long *param_6,undefined8 param_7,undefined8 *param_8)" identifier (parameter_list "(long param_1,undefined8 param_2,long param_3,long param_4,undefined8 param_5,\n                 long *param_6,undefined8 param_7,undefined8 *param_8)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "long *param_6" (sized_type_specifier "long" long) (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "undefined8 param_7" type_identifier identifier) , (parameter_declaration "undefined8 *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  undefined8 *local_40 [2];\n  \n  if (param_4 != 0) {\n    puVar6 = (undefined8 *)FUN_00275550(0x68);\n    uVar2 = *(undefined8 *)(param_1 + 0x10);\n    lVar3 = *param_6;\n    *(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);\n    uVar4 = *param_8;\n    iVar1 = *(int *)(param_1 + 8);\n    puVar6[8] = uVar2;\n    puVar6[1] = 0;\n    puVar6[2] = (long)iVar1;\n    puVar6[5] = 0;\n    puVar6[6] = 0;\n    puVar6[3] = 0xffffffffffffffff;\n    *(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;\n    *puVar6 = &PTR_FUN_003b75b0;\n    puVar6[9] = param_2;\n    puVar6[10] = param_3;\n    puVar6[0xb] = lVar3;\n    puVar6[0xc] = uVar4;\n    FUN_001c4ee0(param_4,puVar6);\n    if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }\n    *param_6 = *param_6 + (long)*(int *)(param_1 + 8);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0016cdf0("../../gold/script-sections.cc",0x4a9,"set_section_addresses");\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined8 *local_40 [2];" type_identifier (pointer_declarator "*local_40 [2]" * (array_declarator "local_40 [2]" identifier [ number_literal ])) ;) (if_statement "if (param_4 != 0) {\n    puVar6 = (undefined8 *)FUN_00275550(0x68);\n    uVar2 = *(undefined8 *)(param_1 + 0x10);\n    lVar3 = *param_6;\n    *(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);\n    uVar4 = *param_8;\n    iVar1 = *(int *)(param_1 + 8);\n    puVar6[8] = uVar2;\n    puVar6[1] = 0;\n    puVar6[2] = (long)iVar1;\n    puVar6[5] = 0;\n    puVar6[6] = 0;\n    puVar6[3] = 0xffffffffffffffff;\n    *(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;\n    *puVar6 = &PTR_FUN_003b75b0;\n    puVar6[9] = param_2;\n    puVar6[10] = param_3;\n    puVar6[0xb] = lVar3;\n    puVar6[0xc] = uVar4;\n    FUN_001c4ee0(param_4,puVar6);\n    if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }\n    *param_6 = *param_6 + (long)*(int *)(param_1 + 8);\n    return;\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar6 = (undefined8 *)FUN_00275550(0x68);\n    uVar2 = *(undefined8 *)(param_1 + 0x10);\n    lVar3 = *param_6;\n    *(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);\n    uVar4 = *param_8;\n    iVar1 = *(int *)(param_1 + 8);\n    puVar6[8] = uVar2;\n    puVar6[1] = 0;\n    puVar6[2] = (long)iVar1;\n    puVar6[5] = 0;\n    puVar6[6] = 0;\n    puVar6[3] = 0xffffffffffffffff;\n    *(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;\n    *puVar6 = &PTR_FUN_003b75b0;\n    puVar6[9] = param_2;\n    puVar6[10] = param_3;\n    puVar6[0xb] = lVar3;\n    puVar6[0xc] = uVar4;\n    FUN_001c4ee0(param_4,puVar6);\n    if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }\n    *param_6 = *param_6 + (long)*(int *)(param_1 + 8);\n    return;\n  }" { (expression_statement "puVar6 = (undefined8 *)FUN_00275550(0x68);" (assignment_expression "puVar6 = (undefined8 *)FUN_00275550(0x68)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x68)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x68)" identifier (argument_list "(0x68)" ( number_literal ))))) ;) (expression_statement "uVar2 = *(undefined8 *)(param_1 + 0x10);" (assignment_expression "uVar2 = *(undefined8 *)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = *param_6;" (assignment_expression "lVar3 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) (expression_statement "*(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);" (assignment_expression "*(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc)" (pointer_expression "*(undefined1 *)(puVar6 + 7)" * (cast_expression "(undefined1 *)(puVar6 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 7)" ( (binary_expression "puVar6 + 7" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(param_1 + 0xc)" * (cast_expression "(undefined1 *)(param_1 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *param_8;" (assignment_expression "uVar4 = *param_8" identifier = (pointer_expression "*param_8" * identifier)) ;) (expression_statement "iVar1 = *(int *)(param_1 + 8);" (assignment_expression "iVar1 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "puVar6[8] = uVar2;" (assignment_expression "puVar6[8] = uVar2" (subscript_expression "puVar6[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[2] = (long)iVar1;" (assignment_expression "puVar6[2] = (long)iVar1" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = (cast_expression "(long)iVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "puVar6[5] = 0;" (assignment_expression "puVar6[5] = 0" (subscript_expression "puVar6[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[6] = 0;" (assignment_expression "puVar6[6] = 0" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[3] = 0xffffffffffffffff;" (assignment_expression "puVar6[3] = 0xffffffffffffffff" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;" (assignment_expression "*(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10" (pointer_expression "*(byte *)(puVar6 + 4)" * (cast_expression "(byte *)(puVar6 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar6 + 4) & 0xe0 | 10" (binary_expression "*(byte *)(puVar6 + 4) & 0xe0" (pointer_expression "*(byte *)(puVar6 + 4)" * (cast_expression "(byte *)(puVar6 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "*puVar6 = &PTR_FUN_003b75b0;" (assignment_expression "*puVar6 = &PTR_FUN_003b75b0" (pointer_expression "*puVar6" * identifier) = (pointer_expression "&PTR_FUN_003b75b0" & identifier)) ;) (expression_statement "puVar6[9] = param_2;" (assignment_expression "puVar6[9] = param_2" (subscript_expression "puVar6[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[10] = param_3;" (assignment_expression "puVar6[10] = param_3" (subscript_expression "puVar6[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[0xb] = lVar3;" (assignment_expression "puVar6[0xb] = lVar3" (subscript_expression "puVar6[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[0xc] = uVar4;" (assignment_expression "puVar6[0xc] = uVar4" (subscript_expression "puVar6[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_001c4ee0(param_4,puVar6);" (call_expression "FUN_001c4ee0(param_4,puVar6)" identifier (argument_list "(param_4,puVar6)" ( identifier , identifier ))) ;) (if_statement "if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }" if (parenthesized_expression "(*(char *)(param_3 + 0x380) != '\0')" ( (binary_expression "*(char *)(param_3 + 0x380) != '\0'" (pointer_expression "*(char *)(param_3 + 0x380)" * (cast_expression "(char *)(param_3 + 0x380)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x380)" ( (binary_expression "param_3 + 0x380" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }" { (expression_statement "puVar5 = *(undefined8 **)(param_3 + 0x390);" (assignment_expression "puVar5 = *(undefined8 **)(param_3 + 0x390)" identifier = (pointer_expression "*(undefined8 **)(param_3 + 0x390)" * (cast_expression "(undefined8 **)(param_3 + 0x390)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x390)" ( (binary_expression "param_3 + 0x390" identifier + number_literal) ))))) ;) (if_statement "if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }" if (parenthesized_expression "(puVar5 == *(undefined8 **)(param_3 + 0x398))" ( (binary_expression "puVar5 == *(undefined8 **)(param_3 + 0x398)" identifier == (pointer_expression "*(undefined8 **)(param_3 + 0x398)" * (cast_expression "(undefined8 **)(param_3 + 0x398)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x398)" ( (binary_expression "param_3 + 0x398" identifier + number_literal) ))))) )) (compound_statement "{\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }" { (expression_statement "local_40[0] = puVar6;" (assignment_expression "local_40[0] = puVar6" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);" (call_expression "FUN_0020b2d0(param_3 + 0x388,puVar5,local_40)" identifier (argument_list "(param_3 + 0x388,puVar5,local_40)" ( (binary_expression "param_3 + 0x388" identifier + number_literal) , identifier , identifier ))) ;) }) (else_clause "else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }" else (compound_statement "{\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }" { (expression_statement "*puVar5 = puVar6;" (assignment_expression "*puVar5 = puVar6" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "*(undefined8 **)(param_3 + 0x390) = puVar5 + 1;" (assignment_expression "*(undefined8 **)(param_3 + 0x390) = puVar5 + 1" (pointer_expression "*(undefined8 **)(param_3 + 0x390)" * (cast_expression "(undefined8 **)(param_3 + 0x390)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x390)" ( (binary_expression "param_3 + 0x390" identifier + number_literal) )))) = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }))) })) (expression_statement "*param_6 = *param_6 + (long)*(int *)(param_1 + 8);" (assignment_expression "*param_6 = *param_6 + (long)*(int *)(param_1 + 8)" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 + (long)*(int *)(param_1 + 8)" (pointer_expression "*param_6" * identifier) + (cast_expression "(long)*(int *)(param_1 + 8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))))) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_0016cdf0("../../gold/script-sections.cc",0x4a9,"set_section_addresses");" (call_expression "FUN_0016cdf0("../../gold/script-sections.cc",0x4a9,"set_section_addresses")" identifier (argument_list "("../../gold/script-sections.cc",0x4a9,"set_section_addresses")" ( (string_literal ""../../gold/script-sections.cc"" " string_content ") , number_literal , (string_literal ""set_section_addresses"" " string_content ") ))) ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void set_section_addresses(Output_section_element_data * this,\n   Symbol_table * symtab, Layout * layout, Output_section * os, uint64_t param_4, uint64_t *\n   dot_value, uint64_t * param_6, Output_section * * dot_section, string * param_8,\n   Input_section_list * param_9) */\n\nvoid __thiscall\ngold::Output_section_element_data::set_section_addresses\n          (Output_section_element_data *this,Symbol_table *symtab,Layout *layout,Output_section *os,\n          uint64_t param_4,uint64_t *dot_value,uint64_t *param_6,Output_section **dot_section,\n          string *param_8,Input_section_list *param_9)\n\n{\n  byte bVar1;\n  int iVar2;\n  Expression *pEVar3;\n  uint64_t uVar4;\n  Output_section *pOVar5;\n  iterator __position;\n  Output_section_data *posd;\n  Output_section_data *local_40 [2];\n  \n  if (os != (Output_section *)0x0) {\n    posd = (Output_section_data *)operator_new(0x68);\n    pEVar3 = this->val_;\n    uVar4 = *dot_value;\n    *(bool *)&posd[1].super_Output_data._vptr_Output_data = this->is_signed_;\n    pOVar5 = *dot_section;\n    iVar2 = this->size_;\n    posd[1].super_Output_data.address_ = (uint64_t)pEVar3;\n    (posd->super_Output_data).address_ = 0;\n    (posd->super_Output_data).data_size_ = (long)iVar2;\n    bVar1 = (posd->super_Output_data).field_0x20;\n    posd->output_section_ = (Output_section *)0x0;\n    posd->addralign_ = 0;\n    (posd->super_Output_data).offset_ = -1;\n    (posd->super_Output_data).field_0x20 = bVar1 & 0xe0 | 10;\n    (posd->super_Output_data)._vptr_Output_data =\n         (_func_int_varargs **)&PTR__Output_data_expression_003b75b0;\n    posd[1].super_Output_data.data_size_ = (off_t)symtab;\n    posd[1].super_Output_data.offset_ = (off_t)layout;\n    *(uint64_t *)&posd[1].super_Output_data.field_0x20 = uVar4;\n    posd[1].output_section_ = pOVar5;\n    Output_section::add_output_section_data(os,posd);\n    if (layout->record_output_section_data_from_script_ != false) {\n      __position._M_current =\n           (layout->script_output_section_data_list_).\n           super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n           ._M_impl._M_finish;\n      if (__position._M_current ==\n          (layout->script_output_section_data_list_).\n          super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n          ._M_impl._M_end_of_storage) {\n        local_40[0] = posd;\n        std::vector<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>::\n        _M_realloc_insert<gold::Output_section_data*_const&>\n                  (&layout->script_output_section_data_list_,__position,local_40);\n      }\n      else {\n        *__position._M_current = posd;\n        (layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>.\n        _M_impl._M_finish = __position._M_current + 1;\n      }\n    }\n    *dot_value = *dot_value + (long)this->size_;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/script-sections.cc",0x4a9,"set_section_addresses");\n}\n\n" comment comment (function_definition "void __thiscall\ngold::Output_section_element_data::set_section_addresses\n          (Output_section_element_data *this,Symbol_table *symtab,Layout *layout,Output_section *os,\n          uint64_t param_4,uint64_t *dot_value,uint64_t *param_6,Output_section **dot_section,\n          string *param_8,Input_section_list *param_9)\n\n{\n  byte bVar1;\n  int iVar2;\n  Expression *pEVar3;\n  uint64_t uVar4;\n  Output_section *pOVar5;\n  iterator __position;\n  Output_section_data *posd;\n  Output_section_data *local_40 [2];\n  \n  if (os != (Output_section *)0x0) {\n    posd = (Output_section_data *)operator_new(0x68);\n    pEVar3 = this->val_;\n    uVar4 = *dot_value;\n    *(bool *)&posd[1].super_Output_data._vptr_Output_data = this->is_signed_;\n    pOVar5 = *dot_section;\n    iVar2 = this->size_;\n    posd[1].super_Output_data.address_ = (uint64_t)pEVar3;\n    (posd->super_Output_data).address_ = 0;\n    (posd->super_Output_data).data_size_ = (long)iVar2;\n    bVar1 = (posd->super_Output_data).field_0x20;\n    posd->output_section_ = (Output_section *)0x0;\n    posd->addralign_ = 0;\n    (posd->super_Output_data).offset_ = -1;\n    (posd->super_Output_data).field_0x20 = bVar1 & 0xe0 | 10;\n    (posd->super_Output_data)._vptr_Output_data =\n         (_func_int_varargs **)&PTR__Output_data_expression_003b75b0;\n    posd[1].super_Output_data.data_size_ = (off_t)symtab;\n    posd[1].super_Output_data.offset_ = (off_t)layout;\n    *(uint64_t *)&posd[1].super_Output_data.field_0x20 = uVar4;\n    posd[1].output_section_ = pOVar5;\n    Output_section::add_output_section_data(os,posd);\n    if (layout->record_output_section_data_from_script_ != false) {\n      __position._M_current =\n           (layout->script_output_section_data_list_).\n           super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n           ._M_impl._M_finish;\n      if (__position._M_current ==\n          (layout->script_output_section_data_list_).\n          super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n          ._M_impl._M_end_of_storage) {\n        local_40[0] = posd;\n        std::vector<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>::\n        _M_realloc_insert<gold::Output_section_data*_const&>\n                  (&layout->script_output_section_data_list_,__position,local_40);\n      }\n      else {\n        *__position._M_current = posd;\n        (layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>.\n        _M_impl._M_finish = __position._M_current + 1;\n      }\n    }\n    *dot_value = *dot_value + (long)this->size_;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/script-sections.cc",0x4a9,"set_section_addresses");\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_section_element_data::" identifier : : identifier : :) (function_declarator "set_section_addresses\n          (Output_section_element_data *this,Symbol_table *symtab,Layout *layout,Output_section *os,\n          uint64_t param_4,uint64_t *dot_value,uint64_t *param_6,Output_section **dot_section,\n          string *param_8,Input_section_list *param_9)" identifier (parameter_list "(Output_section_element_data *this,Symbol_table *symtab,Layout *layout,Output_section *os,\n          uint64_t param_4,uint64_t *dot_value,uint64_t *param_6,Output_section **dot_section,\n          string *param_8,Input_section_list *param_9)" ( (parameter_declaration "Output_section_element_data *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_table *symtab" type_identifier (pointer_declarator "*symtab" * identifier)) , (parameter_declaration "Layout *layout" type_identifier (pointer_declarator "*layout" * identifier)) , (parameter_declaration "Output_section *os" type_identifier (pointer_declarator "*os" * identifier)) , (parameter_declaration "uint64_t param_4" primitive_type identifier) , (parameter_declaration "uint64_t *dot_value" primitive_type (pointer_declarator "*dot_value" * identifier)) , (parameter_declaration "uint64_t *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "Output_section **dot_section" type_identifier (pointer_declarator "**dot_section" * (pointer_declarator "*dot_section" * identifier))) , (parameter_declaration "string *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "Input_section_list *param_9" type_identifier (pointer_declarator "*param_9" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  Expression *pEVar3;\n  uint64_t uVar4;\n  Output_section *pOVar5;\n  iterator __position;\n  Output_section_data *posd;\n  Output_section_data *local_40 [2];\n  \n  if (os != (Output_section *)0x0) {\n    posd = (Output_section_data *)operator_new(0x68);\n    pEVar3 = this->val_;\n    uVar4 = *dot_value;\n    *(bool *)&posd[1].super_Output_data._vptr_Output_data = this->is_signed_;\n    pOVar5 = *dot_section;\n    iVar2 = this->size_;\n    posd[1].super_Output_data.address_ = (uint64_t)pEVar3;\n    (posd->super_Output_data).address_ = 0;\n    (posd->super_Output_data).data_size_ = (long)iVar2;\n    bVar1 = (posd->super_Output_data).field_0x20;\n    posd->output_section_ = (Output_section *)0x0;\n    posd->addralign_ = 0;\n    (posd->super_Output_data).offset_ = -1;\n    (posd->super_Output_data).field_0x20 = bVar1 & 0xe0 | 10;\n    (posd->super_Output_data)._vptr_Output_data =\n         (_func_int_varargs **)&PTR__Output_data_expression_003b75b0;\n    posd[1].super_Output_data.data_size_ = (off_t)symtab;\n    posd[1].super_Output_data.offset_ = (off_t)layout;\n    *(uint64_t *)&posd[1].super_Output_data.field_0x20 = uVar4;\n    posd[1].output_section_ = pOVar5;\n    Output_section::add_output_section_data(os,posd);\n    if (layout->record_output_section_data_from_script_ != false) {\n      __position._M_current =\n           (layout->script_output_section_data_list_).\n           super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n           ._M_impl._M_finish;\n      if (__position._M_current ==\n          (layout->script_output_section_data_list_).\n          super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n          ._M_impl._M_end_of_storage) {\n        local_40[0] = posd;\n        std::vector<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>::\n        _M_realloc_insert<gold::Output_section_data*_const&>\n                  (&layout->script_output_section_data_list_,__position,local_40);\n      }\n      else {\n        *__position._M_current = posd;\n        (layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>.\n        _M_impl._M_finish = __position._M_current + 1;\n      }\n    }\n    *dot_value = *dot_value + (long)this->size_;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/script-sections.cc",0x4a9,"set_section_addresses");\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "Expression *pEVar3;" type_identifier (pointer_declarator "*pEVar3" * identifier) ;) (declaration "uint64_t uVar4;" primitive_type identifier ;) (declaration "Output_section *pOVar5;" type_identifier (pointer_declarator "*pOVar5" * identifier) ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "Output_section_data *posd;" type_identifier (pointer_declarator "*posd" * identifier) ;) (declaration "Output_section_data *local_40 [2];" type_identifier (pointer_declarator "*local_40 [2]" * (array_declarator "local_40 [2]" identifier [ number_literal ])) ;) (if_statement "if (os != (Output_section *)0x0) {\n    posd = (Output_section_data *)operator_new(0x68);\n    pEVar3 = this->val_;\n    uVar4 = *dot_value;\n    *(bool *)&posd[1].super_Output_data._vptr_Output_data = this->is_signed_;\n    pOVar5 = *dot_section;\n    iVar2 = this->size_;\n    posd[1].super_Output_data.address_ = (uint64_t)pEVar3;\n    (posd->super_Output_data).address_ = 0;\n    (posd->super_Output_data).data_size_ = (long)iVar2;\n    bVar1 = (posd->super_Output_data).field_0x20;\n    posd->output_section_ = (Output_section *)0x0;\n    posd->addralign_ = 0;\n    (posd->super_Output_data).offset_ = -1;\n    (posd->super_Output_data).field_0x20 = bVar1 & 0xe0 | 10;\n    (posd->super_Output_data)._vptr_Output_data =\n         (_func_int_varargs **)&PTR__Output_data_expression_003b75b0;\n    posd[1].super_Output_data.data_size_ = (off_t)symtab;\n    posd[1].super_Output_data.offset_ = (off_t)layout;\n    *(uint64_t *)&posd[1].super_Output_data.field_0x20 = uVar4;\n    posd[1].output_section_ = pOVar5;\n    Output_section::add_output_section_data(os,posd);\n    if (layout->record_output_section_data_from_script_ != false) {\n      __position._M_current =\n           (layout->script_output_section_data_list_).\n           super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n           ._M_impl._M_finish;\n      if (__position._M_current ==\n          (layout->script_output_section_data_list_).\n          super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n          ._M_impl._M_end_of_storage) {\n        local_40[0] = posd;\n        std::vector<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>::\n        _M_realloc_insert<gold::Output_section_data*_const&>\n                  (&layout->script_output_section_data_list_,__position,local_40);\n      }\n      else {\n        *__position._M_current = posd;\n        (layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>.\n        _M_impl._M_finish = __position._M_current + 1;\n      }\n    }\n    *dot_value = *dot_value + (long)this->size_;\n    return;\n  }" if (parenthesized_expression "(os != (Output_section *)0x0)" ( (binary_expression "os != (Output_section *)0x0" identifier != (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    posd = (Output_section_data *)operator_new(0x68);\n    pEVar3 = this->val_;\n    uVar4 = *dot_value;\n    *(bool *)&posd[1].super_Output_data._vptr_Output_data = this->is_signed_;\n    pOVar5 = *dot_section;\n    iVar2 = this->size_;\n    posd[1].super_Output_data.address_ = (uint64_t)pEVar3;\n    (posd->super_Output_data).address_ = 0;\n    (posd->super_Output_data).data_size_ = (long)iVar2;\n    bVar1 = (posd->super_Output_data).field_0x20;\n    posd->output_section_ = (Output_section *)0x0;\n    posd->addralign_ = 0;\n    (posd->super_Output_data).offset_ = -1;\n    (posd->super_Output_data).field_0x20 = bVar1 & 0xe0 | 10;\n    (posd->super_Output_data)._vptr_Output_data =\n         (_func_int_varargs **)&PTR__Output_data_expression_003b75b0;\n    posd[1].super_Output_data.data_size_ = (off_t)symtab;\n    posd[1].super_Output_data.offset_ = (off_t)layout;\n    *(uint64_t *)&posd[1].super_Output_data.field_0x20 = uVar4;\n    posd[1].output_section_ = pOVar5;\n    Output_section::add_output_section_data(os,posd);\n    if (layout->record_output_section_data_from_script_ != false) {\n      __position._M_current =\n           (layout->script_output_section_data_list_).\n           super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n           ._M_impl._M_finish;\n      if (__position._M_current ==\n          (layout->script_output_section_data_list_).\n          super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n          ._M_impl._M_end_of_storage) {\n        local_40[0] = posd;\n        std::vector<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>::\n        _M_realloc_insert<gold::Output_section_data*_const&>\n                  (&layout->script_output_section_data_list_,__position,local_40);\n      }\n      else {\n        *__position._M_current = posd;\n        (layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>.\n        _M_impl._M_finish = __position._M_current + 1;\n      }\n    }\n    *dot_value = *dot_value + (long)this->size_;\n    return;\n  }" { (expression_statement "posd = (Output_section_data *)operator_new(0x68);" (assignment_expression "posd = (Output_section_data *)operator_new(0x68)" identifier = (cast_expression "(Output_section_data *)operator_new(0x68)" ( (type_descriptor "Output_section_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x68)" identifier (argument_list "(0x68)" ( number_literal ))))) ;) (expression_statement "pEVar3 = this->val_;" (assignment_expression "pEVar3 = this->val_" identifier = (field_expression "this->val_" identifier -> field_identifier)) ;) (expression_statement "uVar4 = *dot_value;" (assignment_expression "uVar4 = *dot_value" identifier = (pointer_expression "*dot_value" * identifier)) ;) (expression_statement "*(bool *)&posd[1].super_Output_data._vptr_Output_data = this->is_signed_;" (assignment_expression "*(bool *)&posd[1].super_Output_data._vptr_Output_data = this->is_signed_" (pointer_expression "*(bool *)&posd[1].super_Output_data._vptr_Output_data" * (cast_expression "(bool *)&posd[1].super_Output_data._vptr_Output_data" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&posd[1].super_Output_data._vptr_Output_data" & (field_expression "posd[1].super_Output_data._vptr_Output_data" (field_expression "posd[1].super_Output_data" (subscript_expression "posd[1]" identifier [ number_literal ]) . field_identifier) . field_identifier)))) = (field_expression "this->is_signed_" identifier -> field_identifier)) ;) (expression_statement "pOVar5 = *dot_section;" (assignment_expression "pOVar5 = *dot_section" identifier = (pointer_expression "*dot_section" * identifier)) ;) (expression_statement "iVar2 = this->size_;" (assignment_expression "iVar2 = this->size_" identifier = (field_expression "this->size_" identifier -> field_identifier)) ;) (expression_statement "posd[1].super_Output_data.address_ = (uint64_t)pEVar3;" (assignment_expression "posd[1].super_Output_data.address_ = (uint64_t)pEVar3" (field_expression "posd[1].super_Output_data.address_" (field_expression "posd[1].super_Output_data" (subscript_expression "posd[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) = (cast_expression "(uint64_t)pEVar3" ( (type_descriptor "uint64_t" primitive_type) ) identifier)) ;) (expression_statement "(posd->super_Output_data).address_ = 0;" (assignment_expression "(posd->super_Output_data).address_ = 0" (field_expression "(posd->super_Output_data).address_" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(posd->super_Output_data).data_size_ = (long)iVar2;" (assignment_expression "(posd->super_Output_data).data_size_ = (long)iVar2" (field_expression "(posd->super_Output_data).data_size_" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(long)iVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "bVar1 = (posd->super_Output_data).field_0x20;" (assignment_expression "bVar1 = (posd->super_Output_data).field_0x20" identifier = (field_expression "(posd->super_Output_data).field_0x20" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "posd->output_section_ = (Output_section *)0x0;" (assignment_expression "posd->output_section_ = (Output_section *)0x0" (field_expression "posd->output_section_" identifier -> field_identifier) = (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "posd->addralign_ = 0;" (assignment_expression "posd->addralign_ = 0" (field_expression "posd->addralign_" identifier -> field_identifier) = number_literal) ;) (expression_statement "(posd->super_Output_data).offset_ = -1;" (assignment_expression "(posd->super_Output_data).offset_ = -1" (field_expression "(posd->super_Output_data).offset_" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(posd->super_Output_data).field_0x20 = bVar1 & 0xe0 | 10;" (assignment_expression "(posd->super_Output_data).field_0x20 = bVar1 & 0xe0 | 10" (field_expression "(posd->super_Output_data).field_0x20" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier) = (binary_expression "bVar1 & 0xe0 | 10" (binary_expression "bVar1 & 0xe0" identifier & number_literal) | number_literal)) ;) (expression_statement "(posd->super_Output_data)._vptr_Output_data =\n         (_func_int_varargs **)&PTR__Output_data_expression_003b75b0;" (assignment_expression "(posd->super_Output_data)._vptr_Output_data =\n         (_func_int_varargs **)&PTR__Output_data_expression_003b75b0" (field_expression "(posd->super_Output_data)._vptr_Output_data" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(_func_int_varargs **)&PTR__Output_data_expression_003b75b0" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&PTR__Output_data_expression_003b75b0" & identifier))) ;) (expression_statement "posd[1].super_Output_data.data_size_ = (off_t)symtab;" (assignment_expression "posd[1].super_Output_data.data_size_ = (off_t)symtab" (field_expression "posd[1].super_Output_data.data_size_" (field_expression "posd[1].super_Output_data" (subscript_expression "posd[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) = (cast_expression "(off_t)symtab" ( (type_descriptor "off_t" type_identifier) ) identifier)) ;) (expression_statement "posd[1].super_Output_data.offset_ = (off_t)layout;" (assignment_expression "posd[1].super_Output_data.offset_ = (off_t)layout" (field_expression "posd[1].super_Output_data.offset_" (field_expression "posd[1].super_Output_data" (subscript_expression "posd[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) = (cast_expression "(off_t)layout" ( (type_descriptor "off_t" type_identifier) ) identifier)) ;) (expression_statement "*(uint64_t *)&posd[1].super_Output_data.field_0x20 = uVar4;" (assignment_expression "*(uint64_t *)&posd[1].super_Output_data.field_0x20 = uVar4" (pointer_expression "*(uint64_t *)&posd[1].super_Output_data.field_0x20" * (cast_expression "(uint64_t *)&posd[1].super_Output_data.field_0x20" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&posd[1].super_Output_data.field_0x20" & (field_expression "posd[1].super_Output_data.field_0x20" (field_expression "posd[1].super_Output_data" (subscript_expression "posd[1]" identifier [ number_literal ]) . field_identifier) . field_identifier)))) = identifier) ;) (expression_statement "posd[1].output_section_ = pOVar5;" (assignment_expression "posd[1].output_section_ = pOVar5" (field_expression "posd[1].output_section_" (subscript_expression "posd[1]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (labeled_statement "Output_section::add_output_section_data(os,posd);" statement_identifier : (ERROR ":" :) (expression_statement "add_output_section_data(os,posd);" (call_expression "add_output_section_data(os,posd)" identifier (argument_list "(os,posd)" ( identifier , identifier ))) ;)) (if_statement "if (layout->record_output_section_data_from_script_ != false) {\n      __position._M_current =\n           (layout->script_output_section_data_list_).\n           super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n           ._M_impl._M_finish;\n      if (__position._M_current ==\n          (layout->script_output_section_data_list_).\n          super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n          ._M_impl._M_end_of_storage) {\n        local_40[0] = posd;\n        std::vector<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>::\n        _M_realloc_insert<gold::Output_section_data*_const&>\n                  (&layout->script_output_section_data_list_,__position,local_40);\n      }\n      else {\n        *__position._M_current = posd;\n        (layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>.\n        _M_impl._M_finish = __position._M_current + 1;\n      }\n    }" if (parenthesized_expression "(layout->record_output_section_data_from_script_ != false)" ( (binary_expression "layout->record_output_section_data_from_script_ != false" (field_expression "layout->record_output_section_data_from_script_" identifier -> field_identifier) != false) )) (compound_statement "{\n      __position._M_current =\n           (layout->script_output_section_data_list_).\n           super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n           ._M_impl._M_finish;\n      if (__position._M_current ==\n          (layout->script_output_section_data_list_).\n          super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n          ._M_impl._M_end_of_storage) {\n        local_40[0] = posd;\n        std::vector<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>::\n        _M_realloc_insert<gold::Output_section_data*_const&>\n                  (&layout->script_output_section_data_list_,__position,local_40);\n      }\n      else {\n        *__position._M_current = posd;\n        (layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>.\n        _M_impl._M_finish = __position._M_current + 1;\n      }\n    }" { (expression_statement "__position._M_current =\n           (layout->script_output_section_data_list_).\n           super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n           ._M_impl._M_finish;" (field_expression "__position._M_current =\n           (layout->script_output_section_data_list_).\n           super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n           ._M_impl._M_finish" (field_expression "__position._M_current =\n           (layout->script_output_section_data_list_).\n           super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n           ._M_impl" (binary_expression "__position._M_current =\n           (layout->script_output_section_data_list_).\n           super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_" (binary_expression "__position._M_current =\n           (layout->script_output_section_data_list_).\n           super__Vector_base<gold::Output_section_data*,_std::allocator<gold" (binary_expression "__position._M_current =\n           (layout->script_output_section_data_list_).\n           super__Vector_base<gold::Output_section_data*,_std" (assignment_expression "__position._M_current =\n           (layout->script_output_section_data_list_).\n           super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) = (binary_expression "(layout->script_output_section_data_list_).\n           super__Vector_base<gold" (field_expression "(layout->script_output_section_data_list_).\n           super__Vector_base" (parenthesized_expression "(layout->script_output_section_data_list_)" ( (field_expression "layout->script_output_section_data_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (__position._M_current ==\n          (layout->script_output_section_data_list_).\n          super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n          ._M_impl._M_end_of_storage) {\n        local_40[0] = posd;\n        std::vector<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>::\n        _M_realloc_insert<gold::Output_section_data*_const&>\n                  (&layout->script_output_section_data_list_,__position,local_40);\n      }\n      else {\n        *__position._M_current = posd;\n        (layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>.\n        _M_impl._M_finish = __position._M_current + 1;\n      }" if (parenthesized_expression "(__position._M_current ==\n          (layout->script_output_section_data_list_).\n          super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n          ._M_impl._M_end_of_storage)" ( (field_expression "__position._M_current ==\n          (layout->script_output_section_data_list_).\n          super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n          ._M_impl._M_end_of_storage" (field_expression "__position._M_current ==\n          (layout->script_output_section_data_list_).\n          super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>\n          ._M_impl" (binary_expression "__position._M_current ==\n          (layout->script_output_section_data_list_).\n          super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_" (binary_expression "__position._M_current ==\n          (layout->script_output_section_data_list_).\n          super__Vector_base<gold::Output_section_data*,_std::allocator<gold" (binary_expression "__position._M_current ==\n          (layout->script_output_section_data_list_).\n          super__Vector_base<gold::Output_section_data*,_std" (binary_expression "__position._M_current ==\n          (layout->script_output_section_data_list_).\n          super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) == (binary_expression "(layout->script_output_section_data_list_).\n          super__Vector_base<gold" (field_expression "(layout->script_output_section_data_list_).\n          super__Vector_base" (parenthesized_expression "(layout->script_output_section_data_list_)" ( (field_expression "layout->script_output_section_data_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n        local_40[0] = posd;\n        std::vector<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>::\n        _M_realloc_insert<gold::Output_section_data*_const&>\n                  (&layout->script_output_section_data_list_,__position,local_40);\n      }" { (expression_statement "local_40[0] = posd;" (assignment_expression "local_40[0] = posd" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (ERROR "std::vector<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>::\n        _M_realloc_insert<gold::" (comma_expression "std::vector<gold::Output_section_data*,_std" identifier (ERROR "::vector<gold::Output_section_data*" : : (binary_expression "vector<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Output_section_data*>_>::\n        _M_realloc_insert<gold" (binary_expression "Output_section_data*>_>::\n        _M_realloc_insert" (binary_expression "Output_section_data*>_" identifier * (ERROR ">" >) identifier) > (ERROR "::" : :) identifier) < identifier) : :) (expression_statement "Output_section_data*_const&>\n                  (&layout->script_output_section_data_list_,__position,local_40);" (binary_expression "Output_section_data*_const&>\n                  (&layout->script_output_section_data_list_,__position,local_40)" (binary_expression "Output_section_data*_const" identifier * identifier) (ERROR "&" &) > (parenthesized_expression "(&layout->script_output_section_data_list_,__position,local_40)" ( (comma_expression "&layout->script_output_section_data_list_,__position,local_40" (pointer_expression "&layout->script_output_section_data_list_" & (field_expression "layout->script_output_section_data_list_" identifier -> field_identifier)) , (comma_expression "__position,local_40" identifier , identifier)) ))) ;) }) (else_clause "else {\n        *__position._M_current = posd;\n        (layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>.\n        _M_impl._M_finish = __position._M_current + 1;\n      }" else (compound_statement "{\n        *__position._M_current = posd;\n        (layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>.\n        _M_impl._M_finish = __position._M_current + 1;\n      }" { (expression_statement "*__position._M_current = posd;" (assignment_expression "*__position._M_current = posd" (pointer_expression "*__position._M_current" * (field_expression "__position._M_current" identifier . field_identifier)) = identifier) ;) (expression_statement "(layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>.\n        _M_impl._M_finish = __position._M_current + 1;" (assignment_expression "(layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>.\n        _M_impl._M_finish = __position._M_current + 1" (field_expression "(layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>.\n        _M_impl._M_finish" (field_expression "(layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_>.\n        _M_impl" (binary_expression "(layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std::allocator<gold::Output_section_data*>_" (binary_expression "(layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std::allocator<gold" (binary_expression "(layout->script_output_section_data_list_).\n        super__Vector_base<gold::Output_section_data*,_std" (binary_expression "(layout->script_output_section_data_list_).\n        super__Vector_base<gold" (field_expression "(layout->script_output_section_data_list_).\n        super__Vector_base" (parenthesized_expression "(layout->script_output_section_data_list_)" ( (field_expression "layout->script_output_section_data_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_section_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) }))) })) (expression_statement "*dot_value = *dot_value + (long)this->size_;" (assignment_expression "*dot_value = *dot_value + (long)this->size_" (pointer_expression "*dot_value" * identifier) = (binary_expression "*dot_value + (long)this->size_" (pointer_expression "*dot_value" * identifier) + (cast_expression "(long)this->size_" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "this->size_" identifier -> field_identifier)))) ;) (return_statement "return;" return ;) })) comment (expression_statement "do_gold_unreachable("../../gold/script-sections.cc",0x4a9,"set_section_addresses");" (call_expression "do_gold_unreachable("../../gold/script-sections.cc",0x4a9,"set_section_addresses")" identifier (argument_list "("../../gold/script-sections.cc",0x4a9,"set_section_addresses")" ( (string_literal ""../../gold/script-sections.cc"" " string_content ") , number_literal , (string_literal ""set_section_addresses"" " string_content ") ))) ;) })))
(translation_unit "void FUN_00206a80(long param_1,undefined8 param_2,long param_3,long param_4,undefined8 param_5,\n                 long *param_6,undefined8 param_7,undefined8 *param_8)\n\n{\n  int iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  undefined8 *local_40 [2];\n  \n  if (param_4 != 0) {\n    puVar6 = (undefined8 *)FUN_00275550(0x68);\n    uVar2 = *(undefined8 *)(param_1 + 0x10);\n    lVar3 = *param_6;\n    *(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);\n    uVar4 = *param_8;\n    iVar1 = *(int *)(param_1 + 8);\n    puVar6[8] = uVar2;\n    puVar6[1] = 0;\n    puVar6[2] = (long)iVar1;\n    puVar6[5] = 0;\n    puVar6[6] = 0;\n    puVar6[3] = 0xffffffffffffffff;\n    *(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;\n    *puVar6 = &PTR_FUN_003b75b0;\n    puVar6[9] = param_2;\n    puVar6[10] = param_3;\n    puVar6[0xb] = lVar3;\n    puVar6[0xc] = uVar4;\n    FUN_001c4ee0(param_4,puVar6);\n    if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }\n    *param_6 = *param_6 + (long)*(int *)(param_1 + 8);\n    return;\n  }\n                    \n  FUN_0016cdf0("../../gold/script-sections.cc",0x4a9,"set_section_addresses");\n}\n\n" (function_definition "void FUN_00206a80(long param_1,undefined8 param_2,long param_3,long param_4,undefined8 param_5,\n                 long *param_6,undefined8 param_7,undefined8 *param_8)\n\n{\n  int iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  undefined8 *local_40 [2];\n  \n  if (param_4 != 0) {\n    puVar6 = (undefined8 *)FUN_00275550(0x68);\n    uVar2 = *(undefined8 *)(param_1 + 0x10);\n    lVar3 = *param_6;\n    *(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);\n    uVar4 = *param_8;\n    iVar1 = *(int *)(param_1 + 8);\n    puVar6[8] = uVar2;\n    puVar6[1] = 0;\n    puVar6[2] = (long)iVar1;\n    puVar6[5] = 0;\n    puVar6[6] = 0;\n    puVar6[3] = 0xffffffffffffffff;\n    *(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;\n    *puVar6 = &PTR_FUN_003b75b0;\n    puVar6[9] = param_2;\n    puVar6[10] = param_3;\n    puVar6[0xb] = lVar3;\n    puVar6[0xc] = uVar4;\n    FUN_001c4ee0(param_4,puVar6);\n    if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }\n    *param_6 = *param_6 + (long)*(int *)(param_1 + 8);\n    return;\n  }\n                    \n  FUN_0016cdf0("../../gold/script-sections.cc",0x4a9,"set_section_addresses");\n}" primitive_type (function_declarator "FUN_00206a80(long param_1,undefined8 param_2,long param_3,long param_4,undefined8 param_5,\n                 long *param_6,undefined8 param_7,undefined8 *param_8)" identifier (parameter_list "(long param_1,undefined8 param_2,long param_3,long param_4,undefined8 param_5,\n                 long *param_6,undefined8 param_7,undefined8 *param_8)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "long *param_6" (sized_type_specifier "long" long) (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "undefined8 param_7" type_identifier identifier) , (parameter_declaration "undefined8 *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  undefined8 *local_40 [2];\n  \n  if (param_4 != 0) {\n    puVar6 = (undefined8 *)FUN_00275550(0x68);\n    uVar2 = *(undefined8 *)(param_1 + 0x10);\n    lVar3 = *param_6;\n    *(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);\n    uVar4 = *param_8;\n    iVar1 = *(int *)(param_1 + 8);\n    puVar6[8] = uVar2;\n    puVar6[1] = 0;\n    puVar6[2] = (long)iVar1;\n    puVar6[5] = 0;\n    puVar6[6] = 0;\n    puVar6[3] = 0xffffffffffffffff;\n    *(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;\n    *puVar6 = &PTR_FUN_003b75b0;\n    puVar6[9] = param_2;\n    puVar6[10] = param_3;\n    puVar6[0xb] = lVar3;\n    puVar6[0xc] = uVar4;\n    FUN_001c4ee0(param_4,puVar6);\n    if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }\n    *param_6 = *param_6 + (long)*(int *)(param_1 + 8);\n    return;\n  }\n                    \n  FUN_0016cdf0("../../gold/script-sections.cc",0x4a9,"set_section_addresses");\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined8 *local_40 [2];" type_identifier (pointer_declarator "*local_40 [2]" * (array_declarator "local_40 [2]" identifier [ number_literal ])) ;) (if_statement "if (param_4 != 0) {\n    puVar6 = (undefined8 *)FUN_00275550(0x68);\n    uVar2 = *(undefined8 *)(param_1 + 0x10);\n    lVar3 = *param_6;\n    *(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);\n    uVar4 = *param_8;\n    iVar1 = *(int *)(param_1 + 8);\n    puVar6[8] = uVar2;\n    puVar6[1] = 0;\n    puVar6[2] = (long)iVar1;\n    puVar6[5] = 0;\n    puVar6[6] = 0;\n    puVar6[3] = 0xffffffffffffffff;\n    *(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;\n    *puVar6 = &PTR_FUN_003b75b0;\n    puVar6[9] = param_2;\n    puVar6[10] = param_3;\n    puVar6[0xb] = lVar3;\n    puVar6[0xc] = uVar4;\n    FUN_001c4ee0(param_4,puVar6);\n    if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }\n    *param_6 = *param_6 + (long)*(int *)(param_1 + 8);\n    return;\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar6 = (undefined8 *)FUN_00275550(0x68);\n    uVar2 = *(undefined8 *)(param_1 + 0x10);\n    lVar3 = *param_6;\n    *(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);\n    uVar4 = *param_8;\n    iVar1 = *(int *)(param_1 + 8);\n    puVar6[8] = uVar2;\n    puVar6[1] = 0;\n    puVar6[2] = (long)iVar1;\n    puVar6[5] = 0;\n    puVar6[6] = 0;\n    puVar6[3] = 0xffffffffffffffff;\n    *(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;\n    *puVar6 = &PTR_FUN_003b75b0;\n    puVar6[9] = param_2;\n    puVar6[10] = param_3;\n    puVar6[0xb] = lVar3;\n    puVar6[0xc] = uVar4;\n    FUN_001c4ee0(param_4,puVar6);\n    if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }\n    *param_6 = *param_6 + (long)*(int *)(param_1 + 8);\n    return;\n  }" { (expression_statement "puVar6 = (undefined8 *)FUN_00275550(0x68);" (assignment_expression "puVar6 = (undefined8 *)FUN_00275550(0x68)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x68)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x68)" identifier (argument_list "(0x68)" ( number_literal ))))) ;) (expression_statement "uVar2 = *(undefined8 *)(param_1 + 0x10);" (assignment_expression "uVar2 = *(undefined8 *)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = *param_6;" (assignment_expression "lVar3 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) (expression_statement "*(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);" (assignment_expression "*(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc)" (pointer_expression "*(undefined1 *)(puVar6 + 7)" * (cast_expression "(undefined1 *)(puVar6 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 7)" ( (binary_expression "puVar6 + 7" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(param_1 + 0xc)" * (cast_expression "(undefined1 *)(param_1 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *param_8;" (assignment_expression "uVar4 = *param_8" identifier = (pointer_expression "*param_8" * identifier)) ;) (expression_statement "iVar1 = *(int *)(param_1 + 8);" (assignment_expression "iVar1 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "puVar6[8] = uVar2;" (assignment_expression "puVar6[8] = uVar2" (subscript_expression "puVar6[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[2] = (long)iVar1;" (assignment_expression "puVar6[2] = (long)iVar1" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = (cast_expression "(long)iVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "puVar6[5] = 0;" (assignment_expression "puVar6[5] = 0" (subscript_expression "puVar6[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[6] = 0;" (assignment_expression "puVar6[6] = 0" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[3] = 0xffffffffffffffff;" (assignment_expression "puVar6[3] = 0xffffffffffffffff" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;" (assignment_expression "*(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10" (pointer_expression "*(byte *)(puVar6 + 4)" * (cast_expression "(byte *)(puVar6 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar6 + 4) & 0xe0 | 10" (binary_expression "*(byte *)(puVar6 + 4) & 0xe0" (pointer_expression "*(byte *)(puVar6 + 4)" * (cast_expression "(byte *)(puVar6 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "*puVar6 = &PTR_FUN_003b75b0;" (assignment_expression "*puVar6 = &PTR_FUN_003b75b0" (pointer_expression "*puVar6" * identifier) = (pointer_expression "&PTR_FUN_003b75b0" & identifier)) ;) (expression_statement "puVar6[9] = param_2;" (assignment_expression "puVar6[9] = param_2" (subscript_expression "puVar6[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[10] = param_3;" (assignment_expression "puVar6[10] = param_3" (subscript_expression "puVar6[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[0xb] = lVar3;" (assignment_expression "puVar6[0xb] = lVar3" (subscript_expression "puVar6[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[0xc] = uVar4;" (assignment_expression "puVar6[0xc] = uVar4" (subscript_expression "puVar6[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_001c4ee0(param_4,puVar6);" (call_expression "FUN_001c4ee0(param_4,puVar6)" identifier (argument_list "(param_4,puVar6)" ( identifier , identifier ))) ;) (if_statement "if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }" if (parenthesized_expression "(*(char *)(param_3 + 0x380) != '\0')" ( (binary_expression "*(char *)(param_3 + 0x380) != '\0'" (pointer_expression "*(char *)(param_3 + 0x380)" * (cast_expression "(char *)(param_3 + 0x380)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x380)" ( (binary_expression "param_3 + 0x380" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }" { (expression_statement "puVar5 = *(undefined8 **)(param_3 + 0x390);" (assignment_expression "puVar5 = *(undefined8 **)(param_3 + 0x390)" identifier = (pointer_expression "*(undefined8 **)(param_3 + 0x390)" * (cast_expression "(undefined8 **)(param_3 + 0x390)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x390)" ( (binary_expression "param_3 + 0x390" identifier + number_literal) ))))) ;) (if_statement "if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }" if (parenthesized_expression "(puVar5 == *(undefined8 **)(param_3 + 0x398))" ( (binary_expression "puVar5 == *(undefined8 **)(param_3 + 0x398)" identifier == (pointer_expression "*(undefined8 **)(param_3 + 0x398)" * (cast_expression "(undefined8 **)(param_3 + 0x398)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x398)" ( (binary_expression "param_3 + 0x398" identifier + number_literal) ))))) )) (compound_statement "{\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }" { (expression_statement "local_40[0] = puVar6;" (assignment_expression "local_40[0] = puVar6" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);" (call_expression "FUN_0020b2d0(param_3 + 0x388,puVar5,local_40)" identifier (argument_list "(param_3 + 0x388,puVar5,local_40)" ( (binary_expression "param_3 + 0x388" identifier + number_literal) , identifier , identifier ))) ;) }) (else_clause "else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }" else (compound_statement "{\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }" { (expression_statement "*puVar5 = puVar6;" (assignment_expression "*puVar5 = puVar6" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "*(undefined8 **)(param_3 + 0x390) = puVar5 + 1;" (assignment_expression "*(undefined8 **)(param_3 + 0x390) = puVar5 + 1" (pointer_expression "*(undefined8 **)(param_3 + 0x390)" * (cast_expression "(undefined8 **)(param_3 + 0x390)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x390)" ( (binary_expression "param_3 + 0x390" identifier + number_literal) )))) = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }))) })) (expression_statement "*param_6 = *param_6 + (long)*(int *)(param_1 + 8);" (assignment_expression "*param_6 = *param_6 + (long)*(int *)(param_1 + 8)" (pointer_expression "*param_6" * identifier) = (binary_expression "*param_6 + (long)*(int *)(param_1 + 8)" (pointer_expression "*param_6" * identifier) + (cast_expression "(long)*(int *)(param_1 + 8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0016cdf0("../../gold/script-sections.cc",0x4a9,"set_section_addresses");" (call_expression "FUN_0016cdf0("../../gold/script-sections.cc",0x4a9,"set_section_addresses")" identifier (argument_list "("../../gold/script-sections.cc",0x4a9,"set_section_addresses")" ( (string_literal ""../../gold/script-sections.cc"" " string_content ") , number_literal , (string_literal ""set_section_addresses"" " string_content ") ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression 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 ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "void FUN_00206a80(long param_1,undefined8 param_2,long param_3,long param_4,undefined8 param_5,\n                 long *param_6,undefined8 param_7,undefined8 *param_8)\n\n{\n  int iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  undefined8 *local_40 [2];\n  \n  if (param_4 != 0) {\n    puVar6 = (undefined8 *)FUN_00275550(0x68);\n    uVar2 = *(undefined8 *)(param_1 + 0x10);\n    lVar3 = *param_6;\n    *(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);\n    uVar4 = *param_8;\n    iVar1 = *(int *)(param_1 + 8);\n    puVar6[8] = uVar2;\n    puVar6[1] = 0;\n    puVar6[2] = (long)iVar1;\n    puVar6[5] = 0;\n    puVar6[6] = 0;\n    puVar6[3] = 0xffffffffffffffff;\n    *(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;\n    *puVar6 = &PTR_FUN_003b75b0;\n    puVar6[9] = param_2;\n    puVar6[10] = param_3;\n    puVar6[0xb] = lVar3;\n    puVar6[0xc] = uVar4;\n    FUN_001c4ee0(param_4,puVar6);\n    if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }\n    *param_6 = *param_6 + (long)*(int *)(param_1 + 8);\n    return;\n  }\n                    \n  FUN_0016cdf0("../../gold/script-sections.cc",0x4a9,"set_section_addresses");\n}" (primitive_type "void") (function_declarator "FUN_00206a80(long param_1,undefined8 param_2,long param_3,long param_4,undefined8 param_5,\n                 long *param_6,undefined8 param_7,undefined8 *param_8)" (identifier "FUN_00206a80") (parameter_list "(long param_1,undefined8 param_2,long param_3,long param_4,undefined8 param_5,\n                 long *param_6,undefined8 param_7,undefined8 *param_8)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) (, ",") (parameter_declaration "long *param_6" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) (, ",") (parameter_declaration "undefined8 param_7" (type_identifier "undefined8") (identifier "param_7")) (, ",") (parameter_declaration "undefined8 *param_8" (type_identifier "undefined8") (pointer_declarator "*param_8" (* "*") (identifier "param_8"))) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  undefined8 *local_40 [2];\n  \n  if (param_4 != 0) {\n    puVar6 = (undefined8 *)FUN_00275550(0x68);\n    uVar2 = *(undefined8 *)(param_1 + 0x10);\n    lVar3 = *param_6;\n    *(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);\n    uVar4 = *param_8;\n    iVar1 = *(int *)(param_1 + 8);\n    puVar6[8] = uVar2;\n    puVar6[1] = 0;\n    puVar6[2] = (long)iVar1;\n    puVar6[5] = 0;\n    puVar6[6] = 0;\n    puVar6[3] = 0xffffffffffffffff;\n    *(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;\n    *puVar6 = &PTR_FUN_003b75b0;\n    puVar6[9] = param_2;\n    puVar6[10] = param_3;\n    puVar6[0xb] = lVar3;\n    puVar6[0xc] = uVar4;\n    FUN_001c4ee0(param_4,puVar6);\n    if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }\n    *param_6 = *param_6 + (long)*(int *)(param_1 + 8);\n    return;\n  }\n                    \n  FUN_0016cdf0("../../gold/script-sections.cc",0x4a9,"set_section_addresses");\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "undefined8 *puVar5;" (type_identifier "undefined8") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined8 *puVar6;" (type_identifier "undefined8") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined8 *local_40 [2];" (type_identifier "undefined8") (pointer_declarator "*local_40 [2]" (* "*") (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (param_4 != 0) {\n    puVar6 = (undefined8 *)FUN_00275550(0x68);\n    uVar2 = *(undefined8 *)(param_1 + 0x10);\n    lVar3 = *param_6;\n    *(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);\n    uVar4 = *param_8;\n    iVar1 = *(int *)(param_1 + 8);\n    puVar6[8] = uVar2;\n    puVar6[1] = 0;\n    puVar6[2] = (long)iVar1;\n    puVar6[5] = 0;\n    puVar6[6] = 0;\n    puVar6[3] = 0xffffffffffffffff;\n    *(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;\n    *puVar6 = &PTR_FUN_003b75b0;\n    puVar6[9] = param_2;\n    puVar6[10] = param_3;\n    puVar6[0xb] = lVar3;\n    puVar6[0xc] = uVar4;\n    FUN_001c4ee0(param_4,puVar6);\n    if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }\n    *param_6 = *param_6 + (long)*(int *)(param_1 + 8);\n    return;\n  }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    puVar6 = (undefined8 *)FUN_00275550(0x68);\n    uVar2 = *(undefined8 *)(param_1 + 0x10);\n    lVar3 = *param_6;\n    *(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);\n    uVar4 = *param_8;\n    iVar1 = *(int *)(param_1 + 8);\n    puVar6[8] = uVar2;\n    puVar6[1] = 0;\n    puVar6[2] = (long)iVar1;\n    puVar6[5] = 0;\n    puVar6[6] = 0;\n    puVar6[3] = 0xffffffffffffffff;\n    *(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;\n    *puVar6 = &PTR_FUN_003b75b0;\n    puVar6[9] = param_2;\n    puVar6[10] = param_3;\n    puVar6[0xb] = lVar3;\n    puVar6[0xc] = uVar4;\n    FUN_001c4ee0(param_4,puVar6);\n    if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }\n    *param_6 = *param_6 + (long)*(int *)(param_1 + 8);\n    return;\n  }" ({ "{") (expression_statement "puVar6 = (undefined8 *)FUN_00275550(0x68);" (assignment_expression "puVar6 = (undefined8 *)FUN_00275550(0x68)" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0x68)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0x68)" (identifier "FUN_00275550") (argument_list "(0x68)" (( "(") (number_literal "0x68") () ")"))))) (; ";")) (expression_statement "uVar2 = *(undefined8 *)(param_1 + 0x10);" (assignment_expression "uVar2 = *(undefined8 *)(param_1 + 0x10)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "lVar3 = *param_6;" (assignment_expression "lVar3 = *param_6" (identifier "lVar3") (= "=") (pointer_expression "*param_6" (* "*") (identifier "param_6"))) (; ";")) (expression_statement "*(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);" (assignment_expression "*(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc)" (pointer_expression "*(undefined1 *)(puVar6 + 7)" (* "*") (cast_expression "(undefined1 *)(puVar6 + 7)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 7)" (( "(") (binary_expression "puVar6 + 7" (identifier "puVar6") (+ "+") (number_literal "7")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar4 = *param_8;" (assignment_expression "uVar4 = *param_8" (identifier "uVar4") (= "=") (pointer_expression "*param_8" (* "*") (identifier "param_8"))) (; ";")) (expression_statement "iVar1 = *(int *)(param_1 + 8);" (assignment_expression "iVar1 = *(int *)(param_1 + 8)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "puVar6[8] = uVar2;" (assignment_expression "puVar6[8] = uVar2" (subscript_expression "puVar6[8]" (identifier "puVar6") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6[2] = (long)iVar1;" (assignment_expression "puVar6[2] = (long)iVar1" (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(long)iVar1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar1"))) (; ";")) (expression_statement "puVar6[5] = 0;" (assignment_expression "puVar6[5] = 0" (subscript_expression "puVar6[5]" (identifier "puVar6") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6[6] = 0;" (assignment_expression "puVar6[6] = 0" (subscript_expression "puVar6[6]" (identifier "puVar6") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6[3] = 0xffffffffffffffff;" (assignment_expression "puVar6[3] = 0xffffffffffffffff" (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "*(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;" (assignment_expression "*(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10" (pointer_expression "*(byte *)(puVar6 + 4)" (* "*") (cast_expression "(byte *)(puVar6 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 4)" (( "(") (binary_expression "puVar6 + 4" (identifier "puVar6") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(byte *)(puVar6 + 4) & 0xe0 | 10" (binary_expression "*(byte *)(puVar6 + 4) & 0xe0" (pointer_expression "*(byte *)(puVar6 + 4)" (* "*") (cast_expression "(byte *)(puVar6 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 4)" (( "(") (binary_expression "puVar6 + 4" (identifier "puVar6") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "0xe0")) (| "|") (number_literal "10"))) (; ";")) (expression_statement "*puVar6 = &PTR_FUN_003b75b0;" (assignment_expression "*puVar6 = &PTR_FUN_003b75b0" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (pointer_expression "&PTR_FUN_003b75b0" (& "&") (identifier "PTR_FUN_003b75b0"))) (; ";")) (expression_statement "puVar6[9] = param_2;" (assignment_expression "puVar6[9] = param_2" (subscript_expression "puVar6[9]" (identifier "puVar6") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar6[10] = param_3;" (assignment_expression "puVar6[10] = param_3" (subscript_expression "puVar6[10]" (identifier "puVar6") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar6[0xb] = lVar3;" (assignment_expression "puVar6[0xb] = lVar3" (subscript_expression "puVar6[0xb]" (identifier "puVar6") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "lVar3")) (; ";")) (expression_statement "puVar6[0xc] = uVar4;" (assignment_expression "puVar6[0xc] = uVar4" (subscript_expression "puVar6[0xc]" (identifier "puVar6") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "FUN_001c4ee0(param_4,puVar6);" (call_expression "FUN_001c4ee0(param_4,puVar6)" (identifier "FUN_001c4ee0") (argument_list "(param_4,puVar6)" (( "(") (identifier "param_4") (, ",") (identifier "puVar6") () ")"))) (; ";")) (if_statement "if (*(char *)(param_3 + 0x380) != '\0') {\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }" (if "if") (parenthesized_expression "(*(char *)(param_3 + 0x380) != '\0')" (( "(") (binary_expression "*(char *)(param_3 + 0x380) != '\0'" (pointer_expression "*(char *)(param_3 + 0x380)" (* "*") (cast_expression "(char *)(param_3 + 0x380)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x380)" (( "(") (binary_expression "param_3 + 0x380" (identifier "param_3") (+ "+") (number_literal "0x380")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      puVar5 = *(undefined8 **)(param_3 + 0x390);\n      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }\n    }" ({ "{") (expression_statement "puVar5 = *(undefined8 **)(param_3 + 0x390);" (assignment_expression "puVar5 = *(undefined8 **)(param_3 + 0x390)" (identifier "puVar5") (= "=") (pointer_expression "*(undefined8 **)(param_3 + 0x390)" (* "*") (cast_expression "(undefined8 **)(param_3 + 0x390)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 0x390)" (( "(") (binary_expression "param_3 + 0x390" (identifier "param_3") (+ "+") (number_literal "0x390")) () ")"))))) (; ";")) (if_statement "if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }\n      else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }" (if "if") (parenthesized_expression "(puVar5 == *(undefined8 **)(param_3 + 0x398))" (( "(") (binary_expression "puVar5 == *(undefined8 **)(param_3 + 0x398)" (identifier "puVar5") (== "==") (pointer_expression "*(undefined8 **)(param_3 + 0x398)" (* "*") (cast_expression "(undefined8 **)(param_3 + 0x398)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 0x398)" (( "(") (binary_expression "param_3 + 0x398" (identifier "param_3") (+ "+") (number_literal "0x398")) () ")"))))) () ")")) (compound_statement "{\n        local_40[0] = puVar6;\n        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);\n      }" ({ "{") (expression_statement "local_40[0] = puVar6;" (assignment_expression "local_40[0] = puVar6" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "puVar6")) (; ";")) (expression_statement "FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);" (call_expression "FUN_0020b2d0(param_3 + 0x388,puVar5,local_40)" (identifier "FUN_0020b2d0") (argument_list "(param_3 + 0x388,puVar5,local_40)" (( "(") (binary_expression "param_3 + 0x388" (identifier "param_3") (+ "+") (number_literal "0x388")) (, ",") (identifier "puVar5") (, ",") (identifier "local_40") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }" (else "else") (compound_statement "{\n        *puVar5 = puVar6;\n        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;\n      }" ({ "{") (expression_statement "*puVar5 = puVar6;" (assignment_expression "*puVar5 = puVar6" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "puVar6")) (; ";")) (expression_statement "*(undefined8 **)(param_3 + 0x390) = puVar5 + 1;" (assignment_expression "*(undefined8 **)(param_3 + 0x390) = puVar5 + 1" (pointer_expression "*(undefined8 **)(param_3 + 0x390)" (* "*") (cast_expression "(undefined8 **)(param_3 + 0x390)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 0x390)" (( "(") (binary_expression "param_3 + 0x390" (identifier "param_3") (+ "+") (number_literal "0x390")) () ")")))) (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "*param_6 = *param_6 + (long)*(int *)(param_1 + 8);" (assignment_expression "*param_6 = *param_6 + (long)*(int *)(param_1 + 8)" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (binary_expression "*param_6 + (long)*(int *)(param_1 + 8)" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (+ "+") (cast_expression "(long)*(int *)(param_1 + 8)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0016cdf0("../../gold/script-sections.cc",0x4a9,"set_section_addresses");" (call_expression "FUN_0016cdf0("../../gold/script-sections.cc",0x4a9,"set_section_addresses")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/script-sections.cc",0x4a9,"set_section_addresses")" (( "(") (string_literal ""../../gold/script-sections.cc"" (" """) (string_content "../../gold/script-sections.cc") (" """)) (, ",") (number_literal "0x4a9") (, ",") (string_literal ""set_section_addresses"" (" """) (string_content "set_section_addresses") (" """)) () ")"))) (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void set_section_addresses(Output_section_element_data * this,
   Symbol_table * symtab, Layout * layout, Output_section * os, uint64_t param_4, uint64_t *
   dot_value, uint64_t * param_6, Output_section * * dot_section, string * param_8,
   Input_section_list * param_9) */

void __thiscall
var_5::type_1::function_1
          (type_1 *this,type_2 *symtab,type_3 *layout,type_4 *var_1,
          uint64_t param_4,uint64_t *dot_value,uint64_t *param_6,type_4 **dot_section,
          type_5 *param_8,type_6 *param_9)

{
  type_7 var_3;
  int iVar2;
  type_8 *pEVar3;
  uint64_t uVar4;
  type_4 *pOVar5;
  type_9 __position;
  type_10 *posd;
  type_10 *local_40 [2];
  
  if (var_1 != (type_4 *)0x0) {
    posd = (type_10 *)var_2(0x68);
    pEVar3 = this->val_;
    uVar4 = *dot_value;
    *(bool *)&posd[1].super_Output_data._vptr_Output_data = this->is_signed_;
    pOVar5 = *dot_section;
    iVar2 = this->size_;
    posd[1].super_Output_data.address_ = (uint64_t)pEVar3;
    (posd->super_Output_data).address_ = 0;
    (posd->super_Output_data).data_size_ = (long)iVar2;
    var_3 = (posd->super_Output_data).field_0x20;
    posd->output_section_ = (type_4 *)0x0;
    posd->addralign_ = 0;
    (posd->super_Output_data).offset_ = -1;
    (posd->super_Output_data).field_0x20 = var_3 & 0xe0 | 10;
    (posd->super_Output_data)._vptr_Output_data =
         (type_11 **)&PTR__Output_data_expression_003b75b0;
    posd[1].super_Output_data.data_size_ = (type_12)symtab;
    posd[1].super_Output_data.offset_ = (type_12)layout;
    *(uint64_t *)&posd[1].super_Output_data.field_0x20 = uVar4;
    posd[1].output_section_ = pOVar5;
    Output_section::var_4(var_1,posd);
    if (layout->record_output_section_data_from_script_ != false) {
      __position._M_current =
           (layout->script_output_section_data_list_).
           super__Vector_base<var_5::type_10*,var_6::allocator<var_5::type_10*>var_7>
           ._M_impl._M_finish;
      if (__position._M_current ==
          (layout->script_output_section_data_list_).
          super__Vector_base<var_5::type_10*,var_6::allocator<var_5::type_10*>var_7>
          ._M_impl._M_end_of_storage) {
        local_40[0] = posd;
        std::vector<var_5::type_10*,var_6::allocator<var_5::type_10*>var_7>::
        _M_realloc_insert<var_5::type_10*var_8&>
                  (&layout->script_output_section_data_list_,__position,local_40);
      }
      else {
        *__position._M_current = posd;
        (layout->script_output_section_data_list_).
        super__Vector_base<var_5::type_10*,var_6::allocator<var_5::type_10*>var_7>.
        _M_impl._M_finish = __position._M_current + 1;
      }
    }
    *dot_value = *dot_value + (long)this->size_;
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_9("../../gold/script-sections.cc",0x4a9,"set_section_addresses");
}


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

void MASKED(long param_1,undefined8 param_2,long param_3,long param_4,undefined8 param_5,
                 long *param_6,undefined8 param_7,undefined8 *param_8)

{
  int iVar1;
  undefined8 uVar2;
  long lVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_40 [2];
  
  if (param_4 != 0) {
    puVar6 = (undefined8 *)FUN_00275550(0x68);
    uVar2 = *(undefined8 *)(param_1 + 0x10);
    lVar3 = *param_6;
    *(undefined1 *)(puVar6 + 7) = *(undefined1 *)(param_1 + 0xc);
    uVar4 = *param_8;
    iVar1 = *(int *)(param_1 + 8);
    puVar6[8] = uVar2;
    puVar6[1] = 0;
    puVar6[2] = (long)iVar1;
    puVar6[5] = 0;
    puVar6[6] = 0;
    puVar6[3] = 0xffffffffffffffff;
    *(byte *)(puVar6 + 4) = *(byte *)(puVar6 + 4) & 0xe0 | 10;
    *puVar6 = &PTR_FUN_003b75b0;
    puVar6[9] = param_2;
    puVar6[10] = param_3;
    puVar6[0xb] = lVar3;
    puVar6[0xc] = uVar4;
    FUN_001c4ee0(param_4,puVar6);
    if (*(char *)(param_3 + 0x380) != '\0') {
      puVar5 = *(undefined8 **)(param_3 + 0x390);
      if (puVar5 == *(undefined8 **)(param_3 + 0x398)) {
        local_40[0] = puVar6;
        FUN_0020b2d0(param_3 + 0x388,puVar5,local_40);
      }
      else {
        *puVar5 = puVar6;
        *(undefined8 **)(param_3 + 0x390) = puVar5 + 1;
      }
    }
    *param_6 = *param_6 + (long)*(int *)(param_1 + 8);
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0016cdf0("../../gold/script-sections.cc",0x4a9,"set_section_addresses");
}

