
/* DWARF original prototype: void set_final_data_size(Eh_frame * this) */

void __thiscall gold::Eh_frame::set_final_data_size(Eh_frame *this)

{
  byte bVar1;
  _func_int_varargs *p_Var2;
  Output_section *pOVar3;
  Cie *pCVar4;
  uint uVar5;
  int iVar6;
  ulong output_offset;
  _Rb_tree_node_base *p_Var7;
  undefined4 extraout_var;
  pointer ppCVar9;
  ulong local_40;
  uint64_t uVar8;
  
  if (this->mappings_are_done_ == false) {
    if (((this->super_Output_section_data).super_Output_data.field_0x20 & 4) == 0) {
      local_40 = 0;
    }
    else {
      pOVar3 = (this->super_Output_section_data).output_section_;
      if (((pOVar3->super_Output_data).field_0x20 & 4) == 0) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/output.h",0xe3,"offset");
      }
      local_40 = (this->super_Output_section_data).super_Output_data.offset_ -
                 (pOVar3->super_Output_data).offset_;
    }
    ppCVar9 = (this->unmergeable_cie_offsets_).
              super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_start;
    output_offset = local_40;
    if (ppCVar9 !=
        (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>
        ._M_impl._M_finish) {
      do {
        pCVar4 = *ppCVar9;
        p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];
        if (p_Var2 == Output_section_data::do_addralign) {
          uVar5 = (uint)(this->super_Output_section_data).addralign_;
        }
        else {
          uVar5 = (*p_Var2)(this);
        }
        ppCVar9 = ppCVar9 + 1;
        output_offset =
             Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);
      } while ((this->unmergeable_cie_offsets_).
               super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=
               ppCVar9);
    }
    for (p_Var7 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;
        (_Rb_tree_header *)p_Var7 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header;
        p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var7)) {
      pCVar4 = *(Cie **)(p_Var7 + 1);
      p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];
      if (p_Var2 == Output_section_data::do_addralign) {
        uVar5 = (uint)(this->super_Output_section_data).addralign_;
      }
      else {
        uVar5 = (*p_Var2)(this);
      }
      output_offset =
           Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);
    }
    this->mappings_are_done_ = true;
    this->final_data_size_ = output_offset - local_40;
    p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];
    if (p_Var2 == Output_section_data::do_addralign) {
      uVar8 = (this->super_Output_section_data).addralign_;
    }
    else {
      iVar6 = (*p_Var2)(this);
      uVar8 = CONCAT44(extraout_var,iVar6);
    }
    if ((uVar8 - 1 & output_offset) != 0) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/ehframe.cc",0x4df,"set_final_data_size");
    }
  }
  bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20;
  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {
    (this->super_Output_section_data).super_Output_data.data_size_ = this->final_data_size_;
    (this->super_Output_section_data).super_Output_data.field_0x20 = bVar1 | 2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");
}



void FUN_002a7e20(long *param_1)

{
  byte bVar1;
  undefined8 uVar2;
  ulong uVar3;
  long *plVar4;
  long lVar5;
  long lVar6;
  undefined8 *puVar7;
  ulong local_40;
  
  if ((char)param_1[0x11] == '\0') {
    if ((*(byte *)(param_1 + 4) & 4) == 0) {
      local_40 = 0;
    }
    else {
      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_0017c650("../../gold/output.h",0xe3,"offset");
      }
      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);
    }
    puVar7 = (undefined8 *)param_1[0xe];
    uVar3 = local_40;
    if (puVar7 != (undefined8 *)param_1[0xf]) {
      do {
        uVar2 = *puVar7;
        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {
          lVar6 = param_1[6];
        }
        else {
          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);
        }
        puVar7 = puVar7 + 1;
        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);
      } while ((undefined8 *)param_1[0xf] != puVar7);
    }
    for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;
        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {
      lVar6 = plVar4[4];
      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {
        lVar5 = param_1[6];
      }
      else {
        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);
      }
      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);
    }
    *(undefined1 *)(param_1 + 0x11) = 1;
    param_1[0x12] = uVar3 - local_40;
    if (*(code **)(*param_1 + 0x18) == FUN_00185200) {
      lVar6 = param_1[6];
    }
    else {
      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);
    }
    if ((lVar6 - 1U & uVar3) != 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");
    }
  }
  bVar1 = *(byte *)(param_1 + 4);
  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {
    param_1[2] = param_1[0x12];
    *(byte *)(param_1 + 4) = bVar1 | 2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/output.h",0x218,"set_data_size");
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,RDI
SUB RSP,0x18
CMP byte ptr [RDI + 0x88],0x0
JNZ 0x002a7ee7
TEST byte ptr [RDI + 0x20],0x4
JNZ 0x002a7f20
MOV qword ptr [RSP + 0x8],0x0
MOV RBP,qword ptr [RBX + 0x70]
MOV R12,qword ptr [RSP + 0x8]
LEA R14,[0x185200]
CMP RBP,qword ptr [RBX + 0x78]
JNZ 0x002a7e93
JMP 0x002a7f40
MOV RDX,qword ptr [RBX + 0x30]
MOV RSI,R12
MOV RCX,RBX
MOV RDI,R15
ADD RBP,0x8
CALL 0x002a7d40
MOV R12,RAX
CMP qword ptr [RBX + 0x78],RBP
JZ 0x002a7f40
MOV RAX,qword ptr [RBX]
MOV R15,qword ptr [RBP]
MOV RAX,qword ptr [RAX + 0x18]
CMP RAX,R14
JZ 0x002a7e70
MOV RDI,RBX
CALL RAX
MOV RDX,RAX
JMP 0x002a7e74
MOV RAX,R12
SUB RAX,qword ptr [RSP + 0x8]
MOV byte ptr [RBX + 0x88],0x1
MOV qword ptr [RBX + 0x90],RAX
MOV RAX,qword ptr [RBX]
MOV RAX,qword ptr [RAX + 0x18]
CMP RAX,R14
JNZ 0x002a7fa0
MOV RAX,qword ptr [RBX + 0x30]
SUB RAX,0x1
TEST RAX,R12
JNZ 0x002a7fc2
MOVZX EAX,byte ptr [RBX + 0x20]
MOV RDX,qword ptr [RBX + 0x90]
TEST AL,0x2
JNZ 0x002a7faa
TEST AL,0x8
JNZ 0x002a7faa
OR EAX,0x2
MOV qword ptr [RBX + 0x10],RDX
MOV byte ptr [RBX + 0x20],AL
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RAX,qword ptr [RDI + 0x28]
MOV R13,qword ptr [RDI + 0x18]
TEST byte ptr [RAX + 0x20],0x4
JZ 0x002a7fda
SUB R13,qword ptr [RAX + 0x18]
MOV qword ptr [RSP + 0x8],R13
JMP 0x002a7e51
MOV RBP,qword ptr [RBX + 0x58]
LEA R15,[RBX + 0x48]
CMP RBP,R15
JNZ 0x002a7f81
JMP 0x002a7eb0
MOV RDX,qword ptr [RBX + 0x30]
MOV RSI,R12
MOV RCX,RBX
MOV RDI,R13
CALL 0x002a7d40
MOV RDI,RBP
MOV R12,RAX
CALL 0x002dc080
MOV RBP,RAX
CMP RAX,R15
JZ 0x002a7eb0
MOV RAX,qword ptr [RBX]
MOV R13,qword ptr [RBP + 0x20]
MOV RAX,qword ptr [RAX + 0x18]
CMP RAX,R14
JZ 0x002a7f58
MOV RDI,RBX
CALL RAX
MOV RDX,RAX
JMP 0x002a7f5c
MOV RDI,RBX
CALL RAX
JMP 0x002a7eda
LEA RDX,[0x38c308]
MOV ESI,0x218
LEA RDI,[0x373454]
CALL 0x0017c650
LEA RDX,[0x38c1d0]
MOV ESI,0x4df
LEA RDI,[0x38bfc1]
CALL 0x0017c650
LEA RDX,[0x38c2da]
MOV ESI,0xe3
LEA RDI,[0x373454]
CALL 0x0017c650
(translation_unit "void FUN_002a7e20(long *param_1)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  long *plVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  ulong local_40;\n  \n  if ((char)param_1[0x11] == '\0') {\n    if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }\n    puVar7 = (undefined8 *)param_1[0xe];\n    uVar3 = local_40;\n    if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }\n    for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }\n    *(undefined1 *)(param_1 + 0x11) = 1;\n    param_1[0x12] = uVar3 - local_40;\n    if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }\n    if ((lVar6 - 1U & uVar3) != 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }\n  bVar1 = *(byte *)(param_1 + 4);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    param_1[2] = param_1[0x12];\n    *(byte *)(param_1 + 4) = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/output.h",0x218,"set_data_size");\n}\n\n" (function_definition "void FUN_002a7e20(long *param_1)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  long *plVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  ulong local_40;\n  \n  if ((char)param_1[0x11] == '\0') {\n    if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }\n    puVar7 = (undefined8 *)param_1[0xe];\n    uVar3 = local_40;\n    if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }\n    for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }\n    *(undefined1 *)(param_1 + 0x11) = 1;\n    param_1[0x12] = uVar3 - local_40;\n    if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }\n    if ((lVar6 - 1U & uVar3) != 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }\n  bVar1 = *(byte *)(param_1 + 4);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    param_1[2] = param_1[0x12];\n    *(byte *)(param_1 + 4) = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/output.h",0x218,"set_data_size");\n}" primitive_type (function_declarator "FUN_002a7e20(long *param_1)" identifier (parameter_list "(long *param_1)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  long *plVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  ulong local_40;\n  \n  if ((char)param_1[0x11] == '\0') {\n    if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }\n    puVar7 = (undefined8 *)param_1[0xe];\n    uVar3 = local_40;\n    if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }\n    for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }\n    *(undefined1 *)(param_1 + 0x11) = 1;\n    param_1[0x12] = uVar3 - local_40;\n    if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }\n    if ((lVar6 - 1U & uVar3) != 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }\n  bVar1 = *(byte *)(param_1 + 4);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    param_1[2] = param_1[0x12];\n    *(byte *)(param_1 + 4) = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/output.h",0x218,"set_data_size");\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "ulong local_40;" type_identifier identifier ;) (if_statement "if ((char)param_1[0x11] == '\0') {\n    if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }\n    puVar7 = (undefined8 *)param_1[0xe];\n    uVar3 = local_40;\n    if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }\n    for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }\n    *(undefined1 *)(param_1 + 0x11) = 1;\n    param_1[0x12] = uVar3 - local_40;\n    if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }\n    if ((lVar6 - 1U & uVar3) != 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }" if (parenthesized_expression "((char)param_1[0x11] == '\0')" ( (binary_expression "(char)param_1[0x11] == '\0'" (cast_expression "(char)param_1[0x11]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0x11]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }\n    puVar7 = (undefined8 *)param_1[0xe];\n    uVar3 = local_40;\n    if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }\n    for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }\n    *(undefined1 *)(param_1 + 0x11) = 1;\n    param_1[0x12] = uVar3 - local_40;\n    if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }\n    if ((lVar6 - 1U & uVar3) != 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }" { (if_statement "if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 4) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 4) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 4) & 4)" ( (binary_expression "*(byte *)(param_1 + 4) & 4" (pointer_expression "*(byte *)(param_1 + 4)" * (cast_expression "(byte *)(param_1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      local_40 = 0;\n    }" { (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }" else (compound_statement "{\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }" { (if_statement "if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }" if (parenthesized_expression "((*(byte *)(param_1[5] + 0x20) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1[5] + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1[5] + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1[5] + 0x20) & 4" (pointer_expression "*(byte *)(param_1[5] + 0x20)" * (cast_expression "(byte *)(param_1[5] + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[5] + 0x20)" ( (binary_expression "param_1[5] + 0x20" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }" { comment (expression_statement "FUN_0017c650("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0017c650("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;) })) (expression_statement "local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);" (assignment_expression "local_40 = param_1[3] - *(long *)(param_1[5] + 0x18)" identifier = (binary_expression "param_1[3] - *(long *)(param_1[5] + 0x18)" (subscript_expression "param_1[3]" identifier [ number_literal ]) - (pointer_expression "*(long *)(param_1[5] + 0x18)" * (cast_expression "(long *)(param_1[5] + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[5] + 0x18)" ( (binary_expression "param_1[5] + 0x18" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) )))))) ;) }))) (expression_statement "puVar7 = (undefined8 *)param_1[0xe];" (assignment_expression "puVar7 = (undefined8 *)param_1[0xe]" identifier = (cast_expression "(undefined8 *)param_1[0xe]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = local_40;" (assignment_expression "uVar3 = local_40" identifier = identifier) ;) (if_statement "if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }" if (parenthesized_expression "(puVar7 != (undefined8 *)param_1[0xf])" ( (binary_expression "puVar7 != (undefined8 *)param_1[0xf]" identifier != (cast_expression "(undefined8 *)param_1[0xf]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xf]" identifier [ number_literal ]))) )) (compound_statement "{\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }" { (do_statement "do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);" do (compound_statement "{\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      }" { (expression_statement "uVar2 = *puVar7;" (assignment_expression "uVar2 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (if_statement "if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }" if (parenthesized_expression "(*(code **)(*param_1 + 0x18) == FUN_00185200)" ( (binary_expression "*(code **)(*param_1 + 0x18) == FUN_00185200" (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n          lVar6 = param_1[6];\n        }" { (expression_statement "lVar6 = param_1[6];" (assignment_expression "lVar6 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) }) (else_clause "else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }" else (compound_statement "{\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }" { (expression_statement "lVar6 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "lVar6 = (**(code **)(*param_1 + 0x18))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) }))) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);" (assignment_expression "uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1)" identifier = (call_expression "FUN_002a7d40(uVar2,uVar3,lVar6,param_1)" identifier (argument_list "(uVar2,uVar3,lVar6,param_1)" ( identifier , identifier , identifier , identifier )))) ;) }) while (parenthesized_expression "((undefined8 *)param_1[0xf] != puVar7)" ( (binary_expression "(undefined8 *)param_1[0xf] != puVar7" (cast_expression "(undefined8 *)param_1[0xf]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xf]" identifier [ number_literal ])) != identifier) )) ;) })) (for_statement "for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }" for ( (assignment_expression "plVar4 = (long *)param_1[0xb]" identifier = (cast_expression "(long *)param_1[0xb]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ; (binary_expression "plVar4 != param_1 + 9" identifier != (binary_expression "param_1 + 9" identifier + number_literal)) ; (assignment_expression "plVar4 = (long *)thunk_FUN_002dc030(plVar4)" identifier = (cast_expression "(long *)thunk_FUN_002dc030(plVar4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002dc030(plVar4)" identifier (argument_list "(plVar4)" ( identifier ))))) ) (compound_statement "{\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }" { (expression_statement "lVar6 = plVar4[4];" (assignment_expression "lVar6 = plVar4[4]" identifier = (subscript_expression "plVar4[4]" identifier [ number_literal ])) ;) (if_statement "if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" if (parenthesized_expression "(*(code **)(*param_1 + 0x18) == FUN_00185200)" ( (binary_expression "*(code **)(*param_1 + 0x18) == FUN_00185200" (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n        lVar5 = param_1[6];\n      }" { (expression_statement "lVar5 = param_1[6];" (assignment_expression "lVar5 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" else (compound_statement "{\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" { (expression_statement "lVar5 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "lVar5 = (**(code **)(*param_1 + 0x18))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) }))) (expression_statement "uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);" (assignment_expression "uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1)" identifier = (call_expression "FUN_002a7d40(lVar6,uVar3,lVar5,param_1)" identifier (argument_list "(lVar6,uVar3,lVar5,param_1)" ( identifier , identifier , identifier , identifier )))) ;) })) (expression_statement "*(undefined1 *)(param_1 + 0x11) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x11) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x11)" * (cast_expression "(undefined1 *)(param_1 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x11)" ( (binary_expression "param_1 + 0x11" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0x12] = uVar3 - local_40;" (assignment_expression "param_1[0x12] = uVar3 - local_40" (subscript_expression "param_1[0x12]" identifier [ number_literal ]) = (binary_expression "uVar3 - local_40" identifier - identifier)) ;) (if_statement "if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }" if (parenthesized_expression "(*(code **)(*param_1 + 0x18) == FUN_00185200)" ( (binary_expression "*(code **)(*param_1 + 0x18) == FUN_00185200" (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n      lVar6 = param_1[6];\n    }" { (expression_statement "lVar6 = param_1[6];" (assignment_expression "lVar6 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }" else (compound_statement "{\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }" { (expression_statement "lVar6 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "lVar6 = (**(code **)(*param_1 + 0x18))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) }))) (if_statement "if ((lVar6 - 1U & uVar3) != 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }" if (parenthesized_expression "((lVar6 - 1U & uVar3) != 0)" ( (binary_expression "(lVar6 - 1U & uVar3) != 0" (parenthesized_expression "(lVar6 - 1U & uVar3)" ( (binary_expression "lVar6 - 1U & uVar3" (binary_expression "lVar6 - 1U" identifier - number_literal) & identifier) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }" { comment (expression_statement "FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");" (call_expression "FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size")" identifier (argument_list "("../../gold/ehframe.cc",0x4df,"set_final_data_size")" ( (string_literal ""../../gold/ehframe.cc"" " string_content ") , number_literal , (string_literal ""set_final_data_size"" " string_content ") ))) ;) })) })) (expression_statement "bVar1 = *(byte *)(param_1 + 4);" (assignment_expression "bVar1 = *(byte *)(param_1 + 4)" identifier = (pointer_expression "*(byte *)(param_1 + 4)" * (cast_expression "(byte *)(param_1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    param_1[2] = param_1[0x12];\n    *(byte *)(param_1 + 4) = bVar1 | 2;\n    return;\n  }" if (parenthesized_expression "(((bVar1 & 2) == 0) && ((bVar1 & 8) == 0))" ( (binary_expression "((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)" (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 & 8) == 0)" ( (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" ( (binary_expression "bVar1 & 8" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    param_1[2] = param_1[0x12];\n    *(byte *)(param_1 + 4) = bVar1 | 2;\n    return;\n  }" { (expression_statement "param_1[2] = param_1[0x12];" (assignment_expression "param_1[2] = param_1[0x12]" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (subscript_expression "param_1[0x12]" identifier [ number_literal ])) ;) (expression_statement "*(byte *)(param_1 + 4) = bVar1 | 2;" (assignment_expression "*(byte *)(param_1 + 4) = bVar1 | 2" (pointer_expression "*(byte *)(param_1 + 4)" * (cast_expression "(byte *)(param_1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "bVar1 | 2" identifier | number_literal)) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_0017c650("../../gold/output.h",0x218,"set_data_size");" (call_expression "FUN_0017c650("../../gold/output.h",0x218,"set_data_size")" identifier (argument_list "("../../gold/output.h",0x218,"set_data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_data_size"" " string_content ") ))) ;) })))
(translation_unit "/* DWARF original prototype: void set_final_data_size(Eh_frame * this) */\n\nvoid __thiscall gold::Eh_frame::set_final_data_size(Eh_frame *this)\n\n{\n  byte bVar1;\n  _func_int_varargs *p_Var2;\n  Output_section *pOVar3;\n  Cie *pCVar4;\n  uint uVar5;\n  int iVar6;\n  ulong output_offset;\n  _Rb_tree_node_base *p_Var7;\n  undefined4 extraout_var;\n  pointer ppCVar9;\n  ulong local_40;\n  uint64_t uVar8;\n  \n  if (this->mappings_are_done_ == false) {\n    if (((this->super_Output_section_data).super_Output_data.field_0x20 & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      pOVar3 = (this->super_Output_section_data).output_section_;\n      if (((pOVar3->super_Output_data).field_0x20 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = (this->super_Output_section_data).super_Output_data.offset_ -\n                 (pOVar3->super_Output_data).offset_;\n    }\n    ppCVar9 = (this->unmergeable_cie_offsets_).\n              super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_start;\n    output_offset = local_40;\n    if (ppCVar9 !=\n        (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>\n        ._M_impl._M_finish) {\n      do {\n        pCVar4 = *ppCVar9;\n        p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n        if (p_Var2 == Output_section_data::do_addralign) {\n          uVar5 = (uint)(this->super_Output_section_data).addralign_;\n        }\n        else {\n          uVar5 = (*p_Var2)(this);\n        }\n        ppCVar9 = ppCVar9 + 1;\n        output_offset =\n             Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);\n      } while ((this->unmergeable_cie_offsets_).\n               super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n               ppCVar9);\n    }\n    for (p_Var7 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n        (_Rb_tree_header *)p_Var7 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header;\n        p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var7)) {\n      pCVar4 = *(Cie **)(p_Var7 + 1);\n      p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n      if (p_Var2 == Output_section_data::do_addralign) {\n        uVar5 = (uint)(this->super_Output_section_data).addralign_;\n      }\n      else {\n        uVar5 = (*p_Var2)(this);\n      }\n      output_offset =\n           Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);\n    }\n    this->mappings_are_done_ = true;\n    this->final_data_size_ = output_offset - local_40;\n    p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n    if (p_Var2 == Output_section_data::do_addralign) {\n      uVar8 = (this->super_Output_section_data).addralign_;\n    }\n    else {\n      iVar6 = (*p_Var2)(this);\n      uVar8 = CONCAT44(extraout_var,iVar6);\n    }\n    if ((uVar8 - 1 & output_offset) != 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }\n  bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20;\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    (this->super_Output_section_data).super_Output_data.data_size_ = this->final_data_size_;\n    (this->super_Output_section_data).super_Output_data.field_0x20 = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");\n}\n\n" comment (function_definition "void __thiscall gold::Eh_frame::set_final_data_size(Eh_frame *this)\n\n{\n  byte bVar1;\n  _func_int_varargs *p_Var2;\n  Output_section *pOVar3;\n  Cie *pCVar4;\n  uint uVar5;\n  int iVar6;\n  ulong output_offset;\n  _Rb_tree_node_base *p_Var7;\n  undefined4 extraout_var;\n  pointer ppCVar9;\n  ulong local_40;\n  uint64_t uVar8;\n  \n  if (this->mappings_are_done_ == false) {\n    if (((this->super_Output_section_data).super_Output_data.field_0x20 & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      pOVar3 = (this->super_Output_section_data).output_section_;\n      if (((pOVar3->super_Output_data).field_0x20 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = (this->super_Output_section_data).super_Output_data.offset_ -\n                 (pOVar3->super_Output_data).offset_;\n    }\n    ppCVar9 = (this->unmergeable_cie_offsets_).\n              super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_start;\n    output_offset = local_40;\n    if (ppCVar9 !=\n        (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>\n        ._M_impl._M_finish) {\n      do {\n        pCVar4 = *ppCVar9;\n        p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n        if (p_Var2 == Output_section_data::do_addralign) {\n          uVar5 = (uint)(this->super_Output_section_data).addralign_;\n        }\n        else {\n          uVar5 = (*p_Var2)(this);\n        }\n        ppCVar9 = ppCVar9 + 1;\n        output_offset =\n             Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);\n      } while ((this->unmergeable_cie_offsets_).\n               super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n               ppCVar9);\n    }\n    for (p_Var7 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n        (_Rb_tree_header *)p_Var7 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header;\n        p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var7)) {\n      pCVar4 = *(Cie **)(p_Var7 + 1);\n      p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n      if (p_Var2 == Output_section_data::do_addralign) {\n        uVar5 = (uint)(this->super_Output_section_data).addralign_;\n      }\n      else {\n        uVar5 = (*p_Var2)(this);\n      }\n      output_offset =\n           Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);\n    }\n    this->mappings_are_done_ = true;\n    this->final_data_size_ = output_offset - local_40;\n    p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n    if (p_Var2 == Output_section_data::do_addralign) {\n      uVar8 = (this->super_Output_section_data).addralign_;\n    }\n    else {\n      iVar6 = (*p_Var2)(this);\n      uVar8 = CONCAT44(extraout_var,iVar6);\n    }\n    if ((uVar8 - 1 & output_offset) != 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }\n  bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20;\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    (this->super_Output_section_data).super_Output_data.data_size_ = this->final_data_size_;\n    (this->super_Output_section_data).super_Output_data.field_0x20 = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Eh_frame::" identifier : : identifier : :) (function_declarator "set_final_data_size(Eh_frame *this)" identifier (parameter_list "(Eh_frame *this)" ( (parameter_declaration "Eh_frame *this" type_identifier (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  _func_int_varargs *p_Var2;\n  Output_section *pOVar3;\n  Cie *pCVar4;\n  uint uVar5;\n  int iVar6;\n  ulong output_offset;\n  _Rb_tree_node_base *p_Var7;\n  undefined4 extraout_var;\n  pointer ppCVar9;\n  ulong local_40;\n  uint64_t uVar8;\n  \n  if (this->mappings_are_done_ == false) {\n    if (((this->super_Output_section_data).super_Output_data.field_0x20 & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      pOVar3 = (this->super_Output_section_data).output_section_;\n      if (((pOVar3->super_Output_data).field_0x20 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = (this->super_Output_section_data).super_Output_data.offset_ -\n                 (pOVar3->super_Output_data).offset_;\n    }\n    ppCVar9 = (this->unmergeable_cie_offsets_).\n              super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_start;\n    output_offset = local_40;\n    if (ppCVar9 !=\n        (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>\n        ._M_impl._M_finish) {\n      do {\n        pCVar4 = *ppCVar9;\n        p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n        if (p_Var2 == Output_section_data::do_addralign) {\n          uVar5 = (uint)(this->super_Output_section_data).addralign_;\n        }\n        else {\n          uVar5 = (*p_Var2)(this);\n        }\n        ppCVar9 = ppCVar9 + 1;\n        output_offset =\n             Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);\n      } while ((this->unmergeable_cie_offsets_).\n               super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n               ppCVar9);\n    }\n    for (p_Var7 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n        (_Rb_tree_header *)p_Var7 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header;\n        p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var7)) {\n      pCVar4 = *(Cie **)(p_Var7 + 1);\n      p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n      if (p_Var2 == Output_section_data::do_addralign) {\n        uVar5 = (uint)(this->super_Output_section_data).addralign_;\n      }\n      else {\n        uVar5 = (*p_Var2)(this);\n      }\n      output_offset =\n           Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);\n    }\n    this->mappings_are_done_ = true;\n    this->final_data_size_ = output_offset - local_40;\n    p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n    if (p_Var2 == Output_section_data::do_addralign) {\n      uVar8 = (this->super_Output_section_data).addralign_;\n    }\n    else {\n      iVar6 = (*p_Var2)(this);\n      uVar8 = CONCAT44(extraout_var,iVar6);\n    }\n    if ((uVar8 - 1 & output_offset) != 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }\n  bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20;\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    (this->super_Output_section_data).super_Output_data.data_size_ = this->final_data_size_;\n    (this->super_Output_section_data).super_Output_data.field_0x20 = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "_func_int_varargs *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "Output_section *pOVar3;" type_identifier (pointer_declarator "*pOVar3" * identifier) ;) (declaration "Cie *pCVar4;" type_identifier (pointer_declarator "*pCVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "ulong output_offset;" type_identifier identifier ;) (declaration "_Rb_tree_node_base *p_Var7;" type_identifier (pointer_declarator "*p_Var7" * identifier) ;) (declaration "undefined4 extraout_var;" type_identifier identifier ;) (declaration "pointer ppCVar9;" type_identifier identifier ;) (declaration "ulong local_40;" type_identifier identifier ;) (declaration "uint64_t uVar8;" primitive_type identifier ;) (if_statement "if (this->mappings_are_done_ == false) {\n    if (((this->super_Output_section_data).super_Output_data.field_0x20 & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      pOVar3 = (this->super_Output_section_data).output_section_;\n      if (((pOVar3->super_Output_data).field_0x20 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = (this->super_Output_section_data).super_Output_data.offset_ -\n                 (pOVar3->super_Output_data).offset_;\n    }\n    ppCVar9 = (this->unmergeable_cie_offsets_).\n              super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_start;\n    output_offset = local_40;\n    if (ppCVar9 !=\n        (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>\n        ._M_impl._M_finish) {\n      do {\n        pCVar4 = *ppCVar9;\n        p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n        if (p_Var2 == Output_section_data::do_addralign) {\n          uVar5 = (uint)(this->super_Output_section_data).addralign_;\n        }\n        else {\n          uVar5 = (*p_Var2)(this);\n        }\n        ppCVar9 = ppCVar9 + 1;\n        output_offset =\n             Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);\n      } while ((this->unmergeable_cie_offsets_).\n               super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n               ppCVar9);\n    }\n    for (p_Var7 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n        (_Rb_tree_header *)p_Var7 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header;\n        p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var7)) {\n      pCVar4 = *(Cie **)(p_Var7 + 1);\n      p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n      if (p_Var2 == Output_section_data::do_addralign) {\n        uVar5 = (uint)(this->super_Output_section_data).addralign_;\n      }\n      else {\n        uVar5 = (*p_Var2)(this);\n      }\n      output_offset =\n           Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);\n    }\n    this->mappings_are_done_ = true;\n    this->final_data_size_ = output_offset - local_40;\n    p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n    if (p_Var2 == Output_section_data::do_addralign) {\n      uVar8 = (this->super_Output_section_data).addralign_;\n    }\n    else {\n      iVar6 = (*p_Var2)(this);\n      uVar8 = CONCAT44(extraout_var,iVar6);\n    }\n    if ((uVar8 - 1 & output_offset) != 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }" if (parenthesized_expression "(this->mappings_are_done_ == false)" ( (binary_expression "this->mappings_are_done_ == false" (field_expression "this->mappings_are_done_" identifier -> field_identifier) == false) )) (compound_statement "{\n    if (((this->super_Output_section_data).super_Output_data.field_0x20 & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      pOVar3 = (this->super_Output_section_data).output_section_;\n      if (((pOVar3->super_Output_data).field_0x20 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = (this->super_Output_section_data).super_Output_data.offset_ -\n                 (pOVar3->super_Output_data).offset_;\n    }\n    ppCVar9 = (this->unmergeable_cie_offsets_).\n              super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_start;\n    output_offset = local_40;\n    if (ppCVar9 !=\n        (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>\n        ._M_impl._M_finish) {\n      do {\n        pCVar4 = *ppCVar9;\n        p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n        if (p_Var2 == Output_section_data::do_addralign) {\n          uVar5 = (uint)(this->super_Output_section_data).addralign_;\n        }\n        else {\n          uVar5 = (*p_Var2)(this);\n        }\n        ppCVar9 = ppCVar9 + 1;\n        output_offset =\n             Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);\n      } while ((this->unmergeable_cie_offsets_).\n               super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n               ppCVar9);\n    }\n    for (p_Var7 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n        (_Rb_tree_header *)p_Var7 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header;\n        p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var7)) {\n      pCVar4 = *(Cie **)(p_Var7 + 1);\n      p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n      if (p_Var2 == Output_section_data::do_addralign) {\n        uVar5 = (uint)(this->super_Output_section_data).addralign_;\n      }\n      else {\n        uVar5 = (*p_Var2)(this);\n      }\n      output_offset =\n           Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);\n    }\n    this->mappings_are_done_ = true;\n    this->final_data_size_ = output_offset - local_40;\n    p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n    if (p_Var2 == Output_section_data::do_addralign) {\n      uVar8 = (this->super_Output_section_data).addralign_;\n    }\n    else {\n      iVar6 = (*p_Var2)(this);\n      uVar8 = CONCAT44(extraout_var,iVar6);\n    }\n    if ((uVar8 - 1 & output_offset) != 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }" { (if_statement "if (((this->super_Output_section_data).super_Output_data.field_0x20 & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      pOVar3 = (this->super_Output_section_data).output_section_;\n      if (((pOVar3->super_Output_data).field_0x20 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = (this->super_Output_section_data).super_Output_data.offset_ -\n                 (pOVar3->super_Output_data).offset_;\n    }" if (parenthesized_expression "(((this->super_Output_section_data).super_Output_data.field_0x20 & 4) == 0)" ( (binary_expression "((this->super_Output_section_data).super_Output_data.field_0x20 & 4) == 0" (parenthesized_expression "((this->super_Output_section_data).super_Output_data.field_0x20 & 4)" ( (binary_expression "(this->super_Output_section_data).super_Output_data.field_0x20 & 4" (field_expression "(this->super_Output_section_data).super_Output_data.field_0x20" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      local_40 = 0;\n    }" { (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      pOVar3 = (this->super_Output_section_data).output_section_;\n      if (((pOVar3->super_Output_data).field_0x20 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = (this->super_Output_section_data).super_Output_data.offset_ -\n                 (pOVar3->super_Output_data).offset_;\n    }" else (compound_statement "{\n      pOVar3 = (this->super_Output_section_data).output_section_;\n      if (((pOVar3->super_Output_data).field_0x20 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = (this->super_Output_section_data).super_Output_data.offset_ -\n                 (pOVar3->super_Output_data).offset_;\n    }" { (expression_statement "pOVar3 = (this->super_Output_section_data).output_section_;" (assignment_expression "pOVar3 = (this->super_Output_section_data).output_section_" identifier = (field_expression "(this->super_Output_section_data).output_section_" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (((pOVar3->super_Output_data).field_0x20 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n      }" if (parenthesized_expression "(((pOVar3->super_Output_data).field_0x20 & 4) == 0)" ( (binary_expression "((pOVar3->super_Output_data).field_0x20 & 4) == 0" (parenthesized_expression "((pOVar3->super_Output_data).field_0x20 & 4)" ( (binary_expression "(pOVar3->super_Output_data).field_0x20 & 4" (field_expression "(pOVar3->super_Output_data).field_0x20" (parenthesized_expression "(pOVar3->super_Output_data)" ( (field_expression "pOVar3->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n      }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xe3,"offset");" (call_expression "do_gold_unreachable("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;) })) (expression_statement "local_40 = (this->super_Output_section_data).super_Output_data.offset_ -\n                 (pOVar3->super_Output_data).offset_;" (assignment_expression "local_40 = (this->super_Output_section_data).super_Output_data.offset_ -\n                 (pOVar3->super_Output_data).offset_" identifier = (binary_expression "(this->super_Output_section_data).super_Output_data.offset_ -\n                 (pOVar3->super_Output_data).offset_" (field_expression "(this->super_Output_section_data).super_Output_data.offset_" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier) - (field_expression "(pOVar3->super_Output_data).offset_" (parenthesized_expression "(pOVar3->super_Output_data)" ( (field_expression "pOVar3->super_Output_data" identifier -> field_identifier) )) . field_identifier))) ;) }))) (expression_statement "ppCVar9 = (this->unmergeable_cie_offsets_).\n              super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_start;" (field_expression "ppCVar9 = (this->unmergeable_cie_offsets_).\n              super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_start" (field_expression "ppCVar9 = (this->unmergeable_cie_offsets_).\n              super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl" (binary_expression "ppCVar9 = (this->unmergeable_cie_offsets_).\n              super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_" (binary_expression "ppCVar9 = (this->unmergeable_cie_offsets_).\n              super__Vector_base<gold::Cie*,_std::allocator<gold" (binary_expression "ppCVar9 = (this->unmergeable_cie_offsets_).\n              super__Vector_base<gold::Cie*,_std" (assignment_expression "ppCVar9 = (this->unmergeable_cie_offsets_).\n              super__Vector_base<gold" identifier = (binary_expression "(this->unmergeable_cie_offsets_).\n              super__Vector_base<gold" (field_expression "(this->unmergeable_cie_offsets_).\n              super__Vector_base" (parenthesized_expression "(this->unmergeable_cie_offsets_)" ( (field_expression "this->unmergeable_cie_offsets_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Cie" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Cie" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "output_offset = local_40;" (assignment_expression "output_offset = local_40" identifier = identifier) ;) (if_statement "if (ppCVar9 !=\n        (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>\n        ._M_impl._M_finish) {\n      do {\n        pCVar4 = *ppCVar9;\n        p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n        if (p_Var2 == Output_section_data::do_addralign) {\n          uVar5 = (uint)(this->super_Output_section_data).addralign_;\n        }\n        else {\n          uVar5 = (*p_Var2)(this);\n        }\n        ppCVar9 = ppCVar9 + 1;\n        output_offset =\n             Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);\n      } while ((this->unmergeable_cie_offsets_).\n               super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n               ppCVar9);\n    }" if (parenthesized_expression "(ppCVar9 !=\n        (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>\n        ._M_impl._M_finish)" ( (field_expression "ppCVar9 !=\n        (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>\n        ._M_impl._M_finish" (field_expression "ppCVar9 !=\n        (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>\n        ._M_impl" (binary_expression "ppCVar9 !=\n        (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_" (binary_expression "ppCVar9 !=\n        (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold" (binary_expression "ppCVar9 !=\n        (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std" (binary_expression "ppCVar9 !=\n        (this->unmergeable_cie_offsets_).super__Vector_base<gold" identifier != (binary_expression "(this->unmergeable_cie_offsets_).super__Vector_base<gold" (field_expression "(this->unmergeable_cie_offsets_).super__Vector_base" (parenthesized_expression "(this->unmergeable_cie_offsets_)" ( (field_expression "this->unmergeable_cie_offsets_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Cie" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Cie" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n      do {\n        pCVar4 = *ppCVar9;\n        p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n        if (p_Var2 == Output_section_data::do_addralign) {\n          uVar5 = (uint)(this->super_Output_section_data).addralign_;\n        }\n        else {\n          uVar5 = (*p_Var2)(this);\n        }\n        ppCVar9 = ppCVar9 + 1;\n        output_offset =\n             Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);\n      } while ((this->unmergeable_cie_offsets_).\n               super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n               ppCVar9);\n    }" { (do_statement "do {\n        pCVar4 = *ppCVar9;\n        p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n        if (p_Var2 == Output_section_data::do_addralign) {\n          uVar5 = (uint)(this->super_Output_section_data).addralign_;\n        }\n        else {\n          uVar5 = (*p_Var2)(this);\n        }\n        ppCVar9 = ppCVar9 + 1;\n        output_offset =\n             Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);\n      } while ((this->unmergeable_cie_offsets_).\n               super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n               ppCVar9);" do (compound_statement "{\n        pCVar4 = *ppCVar9;\n        p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n        if (p_Var2 == Output_section_data::do_addralign) {\n          uVar5 = (uint)(this->super_Output_section_data).addralign_;\n        }\n        else {\n          uVar5 = (*p_Var2)(this);\n        }\n        ppCVar9 = ppCVar9 + 1;\n        output_offset =\n             Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);\n      }" { (expression_statement "pCVar4 = *ppCVar9;" (assignment_expression "pCVar4 = *ppCVar9" identifier = (pointer_expression "*ppCVar9" * identifier)) ;) (expression_statement "p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];" (assignment_expression "p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3]" identifier = (subscript_expression "(this->super_Output_section_data).super_Output_data._vptr_Output_data[3]" (field_expression "(this->super_Output_section_data).super_Output_data._vptr_Output_data" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var2 == Output_section_data::do_addralign) {\n          uVar5 = (uint)(this->super_Output_section_data).addralign_;\n        }\n        else {\n          uVar5 = (*p_Var2)(this);\n        }" if (parenthesized_expression "(p_Var2 == Output_section_data::do_addralign)" ( (binary_expression "p_Var2 == Output_section_data" identifier == identifier) (ERROR "::do_addralign" : : identifier) )) (compound_statement "{\n          uVar5 = (uint)(this->super_Output_section_data).addralign_;\n        }" { (expression_statement "uVar5 = (uint)(this->super_Output_section_data).addralign_;" (assignment_expression "uVar5 = (uint)(this->super_Output_section_data).addralign_" identifier = (field_expression "(uint)(this->super_Output_section_data).addralign_" (call_expression "(uint)(this->super_Output_section_data)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) ))) . field_identifier)) ;) }) (else_clause "else {\n          uVar5 = (*p_Var2)(this);\n        }" else (compound_statement "{\n          uVar5 = (*p_Var2)(this);\n        }" { (expression_statement "uVar5 = (*p_Var2)(this);" (assignment_expression "uVar5 = (*p_Var2)(this)" identifier = (call_expression "(*p_Var2)(this)" (parenthesized_expression "(*p_Var2)" ( (pointer_expression "*p_Var2" * identifier) )) (argument_list "(this)" ( identifier )))) ;) }))) (expression_statement "ppCVar9 = ppCVar9 + 1;" (assignment_expression "ppCVar9 = ppCVar9 + 1" identifier = (binary_expression "ppCVar9 + 1" identifier + number_literal)) ;) (ERROR "output_offset =\n             Cie::" (assignment_expression "output_offset =\n             Cie" identifier = identifier) : :) (expression_statement "set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);" (call_expression "set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data)" identifier (argument_list "(pCVar4,output_offset,uVar5,&this->super_Output_section_data)" ( identifier , identifier , identifier , (pointer_expression "&this->super_Output_section_data" & (field_expression "this->super_Output_section_data" identifier -> field_identifier)) ))) ;) }) while (parenthesized_expression "((this->unmergeable_cie_offsets_).\n               super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n               ppCVar9)" ( (binary_expression "(this->unmergeable_cie_offsets_).\n               super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n               ppCVar9" (field_expression "(this->unmergeable_cie_offsets_).\n               super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish" (field_expression "(this->unmergeable_cie_offsets_).\n               super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl" (binary_expression "(this->unmergeable_cie_offsets_).\n               super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_" (binary_expression "(this->unmergeable_cie_offsets_).\n               super__Vector_base<gold::Cie*,_std::allocator<gold" (binary_expression "(this->unmergeable_cie_offsets_).\n               super__Vector_base<gold::Cie*,_std" (binary_expression "(this->unmergeable_cie_offsets_).\n               super__Vector_base<gold" (field_expression "(this->unmergeable_cie_offsets_).\n               super__Vector_base" (parenthesized_expression "(this->unmergeable_cie_offsets_)" ( (field_expression "this->unmergeable_cie_offsets_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Cie" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Cie" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) != identifier) )) ;) })) (for_statement "for (p_Var7 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n        (_Rb_tree_header *)p_Var7 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header;\n        p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var7)) {\n      pCVar4 = *(Cie **)(p_Var7 + 1);\n      p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n      if (p_Var2 == Output_section_data::do_addralign) {\n        uVar5 = (uint)(this->super_Output_section_data).addralign_;\n      }\n      else {\n        uVar5 = (*p_Var2)(this);\n      }\n      output_offset =\n           Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);\n    }" for ( (assignment_expression "p_Var7 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left" identifier = (field_expression "(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left" (field_expression "(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->cie_offsets_)._M_t._M_impl" (field_expression "(this->cie_offsets_)._M_t" (parenthesized_expression "(this->cie_offsets_)" ( (field_expression "this->cie_offsets_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ; (binary_expression "(_Rb_tree_header *)p_Var7 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header" (cast_expression "(_Rb_tree_header *)p_Var7" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (pointer_expression "&(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header" & (field_expression "(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->cie_offsets_)._M_t._M_impl" (field_expression "(this->cie_offsets_)._M_t" (parenthesized_expression "(this->cie_offsets_)" ( (field_expression "this->cie_offsets_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ; (ERROR "p_Var7 = (_Rb_tree_node_base *)std::" (assignment_expression "p_Var7 = (_Rb_tree_node_base *)std" identifier = (cast_expression "(_Rb_tree_node_base *)std" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (call_expression "_Rb_tree_increment(p_Var7)" identifier (argument_list "(p_Var7)" ( identifier ))) ) (compound_statement "{\n      pCVar4 = *(Cie **)(p_Var7 + 1);\n      p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n      if (p_Var2 == Output_section_data::do_addralign) {\n        uVar5 = (uint)(this->super_Output_section_data).addralign_;\n      }\n      else {\n        uVar5 = (*p_Var2)(this);\n      }\n      output_offset =\n           Cie::set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);\n    }" { (expression_statement "pCVar4 = *(Cie **)(p_Var7 + 1);" (assignment_expression "pCVar4 = *(Cie **)(p_Var7 + 1)" identifier = (pointer_expression "*(Cie **)(p_Var7 + 1)" * (cast_expression "(Cie **)(p_Var7 + 1)" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var7 + 1)" ( (binary_expression "p_Var7 + 1" identifier + number_literal) ))))) ;) (expression_statement "p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];" (assignment_expression "p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3]" identifier = (subscript_expression "(this->super_Output_section_data).super_Output_data._vptr_Output_data[3]" (field_expression "(this->super_Output_section_data).super_Output_data._vptr_Output_data" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var2 == Output_section_data::do_addralign) {\n        uVar5 = (uint)(this->super_Output_section_data).addralign_;\n      }\n      else {\n        uVar5 = (*p_Var2)(this);\n      }" if (parenthesized_expression "(p_Var2 == Output_section_data::do_addralign)" ( (binary_expression "p_Var2 == Output_section_data" identifier == identifier) (ERROR "::do_addralign" : : identifier) )) (compound_statement "{\n        uVar5 = (uint)(this->super_Output_section_data).addralign_;\n      }" { (expression_statement "uVar5 = (uint)(this->super_Output_section_data).addralign_;" (assignment_expression "uVar5 = (uint)(this->super_Output_section_data).addralign_" identifier = (field_expression "(uint)(this->super_Output_section_data).addralign_" (call_expression "(uint)(this->super_Output_section_data)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) ))) . field_identifier)) ;) }) (else_clause "else {\n        uVar5 = (*p_Var2)(this);\n      }" else (compound_statement "{\n        uVar5 = (*p_Var2)(this);\n      }" { (expression_statement "uVar5 = (*p_Var2)(this);" (assignment_expression "uVar5 = (*p_Var2)(this)" identifier = (call_expression "(*p_Var2)(this)" (parenthesized_expression "(*p_Var2)" ( (pointer_expression "*p_Var2" * identifier) )) (argument_list "(this)" ( identifier )))) ;) }))) (ERROR "output_offset =\n           Cie::" (assignment_expression "output_offset =\n           Cie" identifier = identifier) : :) (expression_statement "set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data);" (call_expression "set_output_offset(pCVar4,output_offset,uVar5,&this->super_Output_section_data)" identifier (argument_list "(pCVar4,output_offset,uVar5,&this->super_Output_section_data)" ( identifier , identifier , identifier , (pointer_expression "&this->super_Output_section_data" & (field_expression "this->super_Output_section_data" identifier -> field_identifier)) ))) ;) })) (expression_statement "this->mappings_are_done_ = true;" (assignment_expression "this->mappings_are_done_ = true" (field_expression "this->mappings_are_done_" identifier -> field_identifier) = true) ;) (expression_statement "this->final_data_size_ = output_offset - local_40;" (assignment_expression "this->final_data_size_ = output_offset - local_40" (field_expression "this->final_data_size_" identifier -> field_identifier) = (binary_expression "output_offset - local_40" identifier - identifier)) ;) (expression_statement "p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];" (assignment_expression "p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3]" identifier = (subscript_expression "(this->super_Output_section_data).super_Output_data._vptr_Output_data[3]" (field_expression "(this->super_Output_section_data).super_Output_data._vptr_Output_data" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var2 == Output_section_data::do_addralign) {\n      uVar8 = (this->super_Output_section_data).addralign_;\n    }\n    else {\n      iVar6 = (*p_Var2)(this);\n      uVar8 = CONCAT44(extraout_var,iVar6);\n    }" if (parenthesized_expression "(p_Var2 == Output_section_data::do_addralign)" ( (binary_expression "p_Var2 == Output_section_data" identifier == identifier) (ERROR "::do_addralign" : : identifier) )) (compound_statement "{\n      uVar8 = (this->super_Output_section_data).addralign_;\n    }" { (expression_statement "uVar8 = (this->super_Output_section_data).addralign_;" (assignment_expression "uVar8 = (this->super_Output_section_data).addralign_" identifier = (field_expression "(this->super_Output_section_data).addralign_" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier)) ;) }) (else_clause "else {\n      iVar6 = (*p_Var2)(this);\n      uVar8 = CONCAT44(extraout_var,iVar6);\n    }" else (compound_statement "{\n      iVar6 = (*p_Var2)(this);\n      uVar8 = CONCAT44(extraout_var,iVar6);\n    }" { (expression_statement "iVar6 = (*p_Var2)(this);" (assignment_expression "iVar6 = (*p_Var2)(this)" identifier = (call_expression "(*p_Var2)(this)" (parenthesized_expression "(*p_Var2)" ( (pointer_expression "*p_Var2" * identifier) )) (argument_list "(this)" ( identifier )))) ;) (expression_statement "uVar8 = CONCAT44(extraout_var,iVar6);" (assignment_expression "uVar8 = CONCAT44(extraout_var,iVar6)" identifier = (call_expression "CONCAT44(extraout_var,iVar6)" identifier (argument_list "(extraout_var,iVar6)" ( identifier , identifier )))) ;) }))) (if_statement "if ((uVar8 - 1 & output_offset) != 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }" if (parenthesized_expression "((uVar8 - 1 & output_offset) != 0)" ( (binary_expression "(uVar8 - 1 & output_offset) != 0" (parenthesized_expression "(uVar8 - 1 & output_offset)" ( (binary_expression "uVar8 - 1 & output_offset" (binary_expression "uVar8 - 1" identifier - number_literal) & identifier) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/ehframe.cc",0x4df,"set_final_data_size");" (call_expression "do_gold_unreachable("../../gold/ehframe.cc",0x4df,"set_final_data_size")" identifier (argument_list "("../../gold/ehframe.cc",0x4df,"set_final_data_size")" ( (string_literal ""../../gold/ehframe.cc"" " string_content ") , number_literal , (string_literal ""set_final_data_size"" " string_content ") ))) ;) })) })) (expression_statement "bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20;" (assignment_expression "bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20" identifier = (field_expression "(this->super_Output_section_data).super_Output_data.field_0x20" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    (this->super_Output_section_data).super_Output_data.data_size_ = this->final_data_size_;\n    (this->super_Output_section_data).super_Output_data.field_0x20 = bVar1 | 2;\n    return;\n  }" if (parenthesized_expression "(((bVar1 & 2) == 0) && ((bVar1 & 8) == 0))" ( (binary_expression "((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)" (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 & 8) == 0)" ( (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" ( (binary_expression "bVar1 & 8" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    (this->super_Output_section_data).super_Output_data.data_size_ = this->final_data_size_;\n    (this->super_Output_section_data).super_Output_data.field_0x20 = bVar1 | 2;\n    return;\n  }" { (expression_statement "(this->super_Output_section_data).super_Output_data.data_size_ = this->final_data_size_;" (assignment_expression "(this->super_Output_section_data).super_Output_data.data_size_ = this->final_data_size_" (field_expression "(this->super_Output_section_data).super_Output_data.data_size_" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "this->final_data_size_" identifier -> field_identifier)) ;) (expression_statement "(this->super_Output_section_data).super_Output_data.field_0x20 = bVar1 | 2;" (assignment_expression "(this->super_Output_section_data).super_Output_data.field_0x20 = bVar1 | 2" (field_expression "(this->super_Output_section_data).super_Output_data.field_0x20" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "bVar1 | 2" identifier | number_literal)) ;) (return_statement "return;" return ;) })) comment (expression_statement "do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");" (call_expression "do_gold_unreachable("../../gold/output.h",0x218,"set_data_size")" identifier (argument_list "("../../gold/output.h",0x218,"set_data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_data_size"" " string_content ") ))) ;) })))
(translation_unit "void FUN_002a7e20(long *param_1)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  long *plVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  ulong local_40;\n  \n  if ((char)param_1[0x11] == '\0') {\n    if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }\n    puVar7 = (undefined8 *)param_1[0xe];\n    uVar3 = local_40;\n    if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }\n    for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }\n    *(undefined1 *)(param_1 + 0x11) = 1;\n    param_1[0x12] = uVar3 - local_40;\n    if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }\n    if ((lVar6 - 1U & uVar3) != 0) {\n                    \n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }\n  bVar1 = *(byte *)(param_1 + 4);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    param_1[2] = param_1[0x12];\n    *(byte *)(param_1 + 4) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_0017c650("../../gold/output.h",0x218,"set_data_size");\n}\n\n" (function_definition "void FUN_002a7e20(long *param_1)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  long *plVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  ulong local_40;\n  \n  if ((char)param_1[0x11] == '\0') {\n    if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }\n    puVar7 = (undefined8 *)param_1[0xe];\n    uVar3 = local_40;\n    if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }\n    for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }\n    *(undefined1 *)(param_1 + 0x11) = 1;\n    param_1[0x12] = uVar3 - local_40;\n    if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }\n    if ((lVar6 - 1U & uVar3) != 0) {\n                    \n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }\n  bVar1 = *(byte *)(param_1 + 4);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    param_1[2] = param_1[0x12];\n    *(byte *)(param_1 + 4) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_0017c650("../../gold/output.h",0x218,"set_data_size");\n}" primitive_type (function_declarator "FUN_002a7e20(long *param_1)" identifier (parameter_list "(long *param_1)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  long *plVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  ulong local_40;\n  \n  if ((char)param_1[0x11] == '\0') {\n    if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }\n    puVar7 = (undefined8 *)param_1[0xe];\n    uVar3 = local_40;\n    if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }\n    for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }\n    *(undefined1 *)(param_1 + 0x11) = 1;\n    param_1[0x12] = uVar3 - local_40;\n    if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }\n    if ((lVar6 - 1U & uVar3) != 0) {\n                    \n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }\n  bVar1 = *(byte *)(param_1 + 4);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    param_1[2] = param_1[0x12];\n    *(byte *)(param_1 + 4) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_0017c650("../../gold/output.h",0x218,"set_data_size");\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "ulong local_40;" type_identifier identifier ;) (if_statement "if ((char)param_1[0x11] == '\0') {\n    if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }\n    puVar7 = (undefined8 *)param_1[0xe];\n    uVar3 = local_40;\n    if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }\n    for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }\n    *(undefined1 *)(param_1 + 0x11) = 1;\n    param_1[0x12] = uVar3 - local_40;\n    if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }\n    if ((lVar6 - 1U & uVar3) != 0) {\n                    \n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }" if (parenthesized_expression "((char)param_1[0x11] == '\0')" ( (binary_expression "(char)param_1[0x11] == '\0'" (cast_expression "(char)param_1[0x11]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0x11]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }\n    puVar7 = (undefined8 *)param_1[0xe];\n    uVar3 = local_40;\n    if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }\n    for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }\n    *(undefined1 *)(param_1 + 0x11) = 1;\n    param_1[0x12] = uVar3 - local_40;\n    if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }\n    if ((lVar6 - 1U & uVar3) != 0) {\n                    \n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }" { (if_statement "if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 4) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 4) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 4) & 4)" ( (binary_expression "*(byte *)(param_1 + 4) & 4" (pointer_expression "*(byte *)(param_1 + 4)" * (cast_expression "(byte *)(param_1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      local_40 = 0;\n    }" { (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }" else (compound_statement "{\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }" { (if_statement "if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }" if (parenthesized_expression "((*(byte *)(param_1[5] + 0x20) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1[5] + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1[5] + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1[5] + 0x20) & 4" (pointer_expression "*(byte *)(param_1[5] + 0x20)" * (cast_expression "(byte *)(param_1[5] + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[5] + 0x20)" ( (binary_expression "param_1[5] + 0x20" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }" { (expression_statement "FUN_0017c650("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0017c650("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;) })) (expression_statement "local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);" (assignment_expression "local_40 = param_1[3] - *(long *)(param_1[5] + 0x18)" identifier = (binary_expression "param_1[3] - *(long *)(param_1[5] + 0x18)" (subscript_expression "param_1[3]" identifier [ number_literal ]) - (pointer_expression "*(long *)(param_1[5] + 0x18)" * (cast_expression "(long *)(param_1[5] + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[5] + 0x18)" ( (binary_expression "param_1[5] + 0x18" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) )))))) ;) }))) (expression_statement "puVar7 = (undefined8 *)param_1[0xe];" (assignment_expression "puVar7 = (undefined8 *)param_1[0xe]" identifier = (cast_expression "(undefined8 *)param_1[0xe]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = local_40;" (assignment_expression "uVar3 = local_40" identifier = identifier) ;) (if_statement "if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }" if (parenthesized_expression "(puVar7 != (undefined8 *)param_1[0xf])" ( (binary_expression "puVar7 != (undefined8 *)param_1[0xf]" identifier != (cast_expression "(undefined8 *)param_1[0xf]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xf]" identifier [ number_literal ]))) )) (compound_statement "{\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }" { (do_statement "do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);" do (compound_statement "{\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      }" { (expression_statement "uVar2 = *puVar7;" (assignment_expression "uVar2 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (if_statement "if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }" if (parenthesized_expression "(*(code **)(*param_1 + 0x18) == FUN_00185200)" ( (binary_expression "*(code **)(*param_1 + 0x18) == FUN_00185200" (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n          lVar6 = param_1[6];\n        }" { (expression_statement "lVar6 = param_1[6];" (assignment_expression "lVar6 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) }) (else_clause "else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }" else (compound_statement "{\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }" { (expression_statement "lVar6 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "lVar6 = (**(code **)(*param_1 + 0x18))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) }))) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);" (assignment_expression "uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1)" identifier = (call_expression "FUN_002a7d40(uVar2,uVar3,lVar6,param_1)" identifier (argument_list "(uVar2,uVar3,lVar6,param_1)" ( identifier , identifier , identifier , identifier )))) ;) }) while (parenthesized_expression "((undefined8 *)param_1[0xf] != puVar7)" ( (binary_expression "(undefined8 *)param_1[0xf] != puVar7" (cast_expression "(undefined8 *)param_1[0xf]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xf]" identifier [ number_literal ])) != identifier) )) ;) })) (for_statement "for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }" for ( (assignment_expression "plVar4 = (long *)param_1[0xb]" identifier = (cast_expression "(long *)param_1[0xb]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ; (binary_expression "plVar4 != param_1 + 9" identifier != (binary_expression "param_1 + 9" identifier + number_literal)) ; (assignment_expression "plVar4 = (long *)thunk_FUN_002dc030(plVar4)" identifier = (cast_expression "(long *)thunk_FUN_002dc030(plVar4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002dc030(plVar4)" identifier (argument_list "(plVar4)" ( identifier ))))) ) (compound_statement "{\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }" { (expression_statement "lVar6 = plVar4[4];" (assignment_expression "lVar6 = plVar4[4]" identifier = (subscript_expression "plVar4[4]" identifier [ number_literal ])) ;) (if_statement "if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" if (parenthesized_expression "(*(code **)(*param_1 + 0x18) == FUN_00185200)" ( (binary_expression "*(code **)(*param_1 + 0x18) == FUN_00185200" (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n        lVar5 = param_1[6];\n      }" { (expression_statement "lVar5 = param_1[6];" (assignment_expression "lVar5 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" else (compound_statement "{\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" { (expression_statement "lVar5 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "lVar5 = (**(code **)(*param_1 + 0x18))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) }))) (expression_statement "uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);" (assignment_expression "uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1)" identifier = (call_expression "FUN_002a7d40(lVar6,uVar3,lVar5,param_1)" identifier (argument_list "(lVar6,uVar3,lVar5,param_1)" ( identifier , identifier , identifier , identifier )))) ;) })) (expression_statement "*(undefined1 *)(param_1 + 0x11) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x11) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x11)" * (cast_expression "(undefined1 *)(param_1 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x11)" ( (binary_expression "param_1 + 0x11" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0x12] = uVar3 - local_40;" (assignment_expression "param_1[0x12] = uVar3 - local_40" (subscript_expression "param_1[0x12]" identifier [ number_literal ]) = (binary_expression "uVar3 - local_40" identifier - identifier)) ;) (if_statement "if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }" if (parenthesized_expression "(*(code **)(*param_1 + 0x18) == FUN_00185200)" ( (binary_expression "*(code **)(*param_1 + 0x18) == FUN_00185200" (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n      lVar6 = param_1[6];\n    }" { (expression_statement "lVar6 = param_1[6];" (assignment_expression "lVar6 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }" else (compound_statement "{\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }" { (expression_statement "lVar6 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "lVar6 = (**(code **)(*param_1 + 0x18))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) }))) (if_statement "if ((lVar6 - 1U & uVar3) != 0) {\n                    \n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }" if (parenthesized_expression "((lVar6 - 1U & uVar3) != 0)" ( (binary_expression "(lVar6 - 1U & uVar3) != 0" (parenthesized_expression "(lVar6 - 1U & uVar3)" ( (binary_expression "lVar6 - 1U & uVar3" (binary_expression "lVar6 - 1U" identifier - number_literal) & identifier) )) != number_literal) )) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }" { (expression_statement "FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");" (call_expression "FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size")" identifier (argument_list "("../../gold/ehframe.cc",0x4df,"set_final_data_size")" ( (string_literal ""../../gold/ehframe.cc"" " string_content ") , number_literal , (string_literal ""set_final_data_size"" " string_content ") ))) ;) })) })) (expression_statement "bVar1 = *(byte *)(param_1 + 4);" (assignment_expression "bVar1 = *(byte *)(param_1 + 4)" identifier = (pointer_expression "*(byte *)(param_1 + 4)" * (cast_expression "(byte *)(param_1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    param_1[2] = param_1[0x12];\n    *(byte *)(param_1 + 4) = bVar1 | 2;\n    return;\n  }" if (parenthesized_expression "(((bVar1 & 2) == 0) && ((bVar1 & 8) == 0))" ( (binary_expression "((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)" (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 & 8) == 0)" ( (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" ( (binary_expression "bVar1 & 8" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    param_1[2] = param_1[0x12];\n    *(byte *)(param_1 + 4) = bVar1 | 2;\n    return;\n  }" { (expression_statement "param_1[2] = param_1[0x12];" (assignment_expression "param_1[2] = param_1[0x12]" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (subscript_expression "param_1[0x12]" identifier [ number_literal ])) ;) (expression_statement "*(byte *)(param_1 + 4) = bVar1 | 2;" (assignment_expression "*(byte *)(param_1 + 4) = bVar1 | 2" (pointer_expression "*(byte *)(param_1 + 4)" * (cast_expression "(byte *)(param_1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "bVar1 | 2" identifier | number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0017c650("../../gold/output.h",0x218,"set_data_size");" (call_expression "FUN_0017c650("../../gold/output.h",0x218,"set_data_size")" identifier (argument_list "("../../gold/output.h",0x218,"set_data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_data_size"" " string_content ") ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) ;) })) (for_statement for ( (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ; (binary_expression IDENT != (binary_expression IDENT + LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & IDENT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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_002a7e20(long *param_1)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  long *plVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  ulong local_40;\n  \n  if ((char)param_1[0x11] == '\0') {\n    if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }\n    puVar7 = (undefined8 *)param_1[0xe];\n    uVar3 = local_40;\n    if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }\n    for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }\n    *(undefined1 *)(param_1 + 0x11) = 1;\n    param_1[0x12] = uVar3 - local_40;\n    if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }\n    if ((lVar6 - 1U & uVar3) != 0) {\n                    \n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }\n  bVar1 = *(byte *)(param_1 + 4);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    param_1[2] = param_1[0x12];\n    *(byte *)(param_1 + 4) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_0017c650("../../gold/output.h",0x218,"set_data_size");\n}" (primitive_type "void") (function_declarator "FUN_002a7e20(long *param_1)" (identifier "FUN_002a7e20") (parameter_list "(long *param_1)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  long *plVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  ulong local_40;\n  \n  if ((char)param_1[0x11] == '\0') {\n    if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }\n    puVar7 = (undefined8 *)param_1[0xe];\n    uVar3 = local_40;\n    if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }\n    for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }\n    *(undefined1 *)(param_1 + 0x11) = 1;\n    param_1[0x12] = uVar3 - local_40;\n    if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }\n    if ((lVar6 - 1U & uVar3) != 0) {\n                    \n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }\n  bVar1 = *(byte *)(param_1 + 4);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    param_1[2] = param_1[0x12];\n    *(byte *)(param_1 + 4) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_0017c650("../../gold/output.h",0x218,"set_data_size");\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "long *plVar4;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar4" (* "*") (identifier "plVar4")) (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "undefined8 *puVar7;" (type_identifier "undefined8") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "ulong local_40;" (type_identifier "ulong") (identifier "local_40") (; ";")) (if_statement "if ((char)param_1[0x11] == '\0') {\n    if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }\n    puVar7 = (undefined8 *)param_1[0xe];\n    uVar3 = local_40;\n    if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }\n    for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }\n    *(undefined1 *)(param_1 + 0x11) = 1;\n    param_1[0x12] = uVar3 - local_40;\n    if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }\n    if ((lVar6 - 1U & uVar3) != 0) {\n                    \n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }" (if "if") (parenthesized_expression "((char)param_1[0x11] == '\0')" (( "(") (binary_expression "(char)param_1[0x11] == '\0'" (cast_expression "(char)param_1[0x11]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[0x11]" (identifier "param_1") ([ "[") (number_literal "0x11") (] "]"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }\n    puVar7 = (undefined8 *)param_1[0xe];\n    uVar3 = local_40;\n    if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }\n    for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }\n    *(undefined1 *)(param_1 + 0x11) = 1;\n    param_1[0x12] = uVar3 - local_40;\n    if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }\n    if ((lVar6 - 1U & uVar3) != 0) {\n                    \n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }\n  }" ({ "{") (if_statement "if ((*(byte *)(param_1 + 4) & 4) == 0) {\n      local_40 = 0;\n    }\n    else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 4) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 4) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 4) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 4) & 4" (pointer_expression "*(byte *)(param_1 + 4)" (* "*") (cast_expression "(byte *)(param_1 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      local_40 = 0;\n    }" ({ "{") (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }" (else "else") (compound_statement "{\n      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }\n      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);\n    }" ({ "{") (if_statement "if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }" (if "if") (parenthesized_expression "((*(byte *)(param_1[5] + 0x20) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(param_1[5] + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1[5] + 0x20) & 4)" (( "(") (binary_expression "*(byte *)(param_1[5] + 0x20) & 4" (pointer_expression "*(byte *)(param_1[5] + 0x20)" (* "*") (cast_expression "(byte *)(param_1[5] + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[5] + 0x20)" (( "(") (binary_expression "param_1[5] + 0x20" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        FUN_0017c650("../../gold/output.h",0xe3,"offset");\n      }" ({ "{") (expression_statement "FUN_0017c650("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0017c650("../../gold/output.h",0xe3,"offset")" (identifier "FUN_0017c650") (argument_list "("../../gold/output.h",0xe3,"offset")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xe3") (, ",") (string_literal ""offset"" (" """) (string_content "offset") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);" (assignment_expression "local_40 = param_1[3] - *(long *)(param_1[5] + 0x18)" (identifier "local_40") (= "=") (binary_expression "param_1[3] - *(long *)(param_1[5] + 0x18)" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (- "-") (pointer_expression "*(long *)(param_1[5] + 0x18)" (* "*") (cast_expression "(long *)(param_1[5] + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[5] + 0x18)" (( "(") (binary_expression "param_1[5] + 0x18" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (+ "+") (number_literal "0x18")) () ")")))))) (; ";")) (} "}")))) (expression_statement "puVar7 = (undefined8 *)param_1[0xe];" (assignment_expression "puVar7 = (undefined8 *)param_1[0xe]" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)param_1[0xe]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")))) (; ";")) (expression_statement "uVar3 = local_40;" (assignment_expression "uVar3 = local_40" (identifier "uVar3") (= "=") (identifier "local_40")) (; ";")) (if_statement "if (puVar7 != (undefined8 *)param_1[0xf]) {\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }" (if "if") (parenthesized_expression "(puVar7 != (undefined8 *)param_1[0xf])" (( "(") (binary_expression "puVar7 != (undefined8 *)param_1[0xf]" (identifier "puVar7") (!= "!=") (cast_expression "(undefined8 *)param_1[0xf]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]")))) () ")")) (compound_statement "{\n      do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);\n    }" ({ "{") (do_statement "do {\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      } while ((undefined8 *)param_1[0xf] != puVar7);" (do "do") (compound_statement "{\n        uVar2 = *puVar7;\n        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }\n        puVar7 = puVar7 + 1;\n        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);\n      }" ({ "{") (expression_statement "uVar2 = *puVar7;" (assignment_expression "uVar2 = *puVar7" (identifier "uVar2") (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (if_statement "if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n          lVar6 = param_1[6];\n        }\n        else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }" (if "if") (parenthesized_expression "(*(code **)(*param_1 + 0x18) == FUN_00185200)" (( "(") (binary_expression "*(code **)(*param_1 + 0x18) == FUN_00185200" (pointer_expression "*(code **)(*param_1 + 0x18)" (* "*") (cast_expression "(code **)(*param_1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x18)" (( "(") (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x18")) () ")")))) (== "==") (identifier "FUN_00185200")) () ")")) (compound_statement "{\n          lVar6 = param_1[6];\n        }" ({ "{") (expression_statement "lVar6 = param_1[6];" (assignment_expression "lVar6 = param_1[6]" (identifier "lVar6") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }" (else "else") (compound_statement "{\n          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n        }" ({ "{") (expression_statement "lVar6 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "lVar6 = (**(code **)(*param_1 + 0x18))(param_1)" (identifier "lVar6") (= "=") (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x18)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x18)" (* "*") (cast_expression "(code **)(*param_1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x18)" (( "(") (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (} "}")))) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);" (assignment_expression "uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1)" (identifier "uVar3") (= "=") (call_expression "FUN_002a7d40(uVar2,uVar3,lVar6,param_1)" (identifier "FUN_002a7d40") (argument_list "(uVar2,uVar3,lVar6,param_1)" (( "(") (identifier "uVar2") (, ",") (identifier "uVar3") (, ",") (identifier "lVar6") (, ",") (identifier "param_1") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined8 *)param_1[0xf] != puVar7)" (( "(") (binary_expression "(undefined8 *)param_1[0xf] != puVar7" (cast_expression "(undefined8 *)param_1[0xf]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]"))) (!= "!=") (identifier "puVar7")) () ")")) (; ";")) (} "}"))) (for_statement "for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;\n        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }" (for "for") (( "(") (assignment_expression "plVar4 = (long *)param_1[0xb]" (identifier "plVar4") (= "=") (cast_expression "(long *)param_1[0xb]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")))) (; ";") (binary_expression "plVar4 != param_1 + 9" (identifier "plVar4") (!= "!=") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9"))) (; ";") (assignment_expression "plVar4 = (long *)thunk_FUN_002dc030(plVar4)" (identifier "plVar4") (= "=") (cast_expression "(long *)thunk_FUN_002dc030(plVar4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "thunk_FUN_002dc030(plVar4)" (identifier "thunk_FUN_002dc030") (argument_list "(plVar4)" (( "(") (identifier "plVar4") () ")"))))) () ")") (compound_statement "{\n      lVar6 = plVar4[4];\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);\n    }" ({ "{") (expression_statement "lVar6 = plVar4[4];" (assignment_expression "lVar6 = plVar4[4]" (identifier "lVar6") (= "=") (subscript_expression "plVar4[4]" (identifier "plVar4") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar5 = param_1[6];\n      }\n      else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" (if "if") (parenthesized_expression "(*(code **)(*param_1 + 0x18) == FUN_00185200)" (( "(") (binary_expression "*(code **)(*param_1 + 0x18) == FUN_00185200" (pointer_expression "*(code **)(*param_1 + 0x18)" (* "*") (cast_expression "(code **)(*param_1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x18)" (( "(") (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x18")) () ")")))) (== "==") (identifier "FUN_00185200")) () ")")) (compound_statement "{\n        lVar5 = param_1[6];\n      }" ({ "{") (expression_statement "lVar5 = param_1[6];" (assignment_expression "lVar5 = param_1[6]" (identifier "lVar5") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" (else "else") (compound_statement "{\n        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" ({ "{") (expression_statement "lVar5 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "lVar5 = (**(code **)(*param_1 + 0x18))(param_1)" (identifier "lVar5") (= "=") (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x18)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x18)" (* "*") (cast_expression "(code **)(*param_1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x18)" (( "(") (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (} "}")))) (expression_statement "uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);" (assignment_expression "uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1)" (identifier "uVar3") (= "=") (call_expression "FUN_002a7d40(lVar6,uVar3,lVar5,param_1)" (identifier "FUN_002a7d40") (argument_list "(lVar6,uVar3,lVar5,param_1)" (( "(") (identifier "lVar6") (, ",") (identifier "uVar3") (, ",") (identifier "lVar5") (, ",") (identifier "param_1") () ")")))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(param_1 + 0x11) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x11) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x11)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x11)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x11)" (( "(") (binary_expression "param_1 + 0x11" (identifier "param_1") (+ "+") (number_literal "0x11")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "param_1[0x12] = uVar3 - local_40;" (assignment_expression "param_1[0x12] = uVar3 - local_40" (subscript_expression "param_1[0x12]" (identifier "param_1") ([ "[") (number_literal "0x12") (] "]")) (= "=") (binary_expression "uVar3 - local_40" (identifier "uVar3") (- "-") (identifier "local_40"))) (; ";")) (if_statement "if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n      lVar6 = param_1[6];\n    }\n    else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }" (if "if") (parenthesized_expression "(*(code **)(*param_1 + 0x18) == FUN_00185200)" (( "(") (binary_expression "*(code **)(*param_1 + 0x18) == FUN_00185200" (pointer_expression "*(code **)(*param_1 + 0x18)" (* "*") (cast_expression "(code **)(*param_1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x18)" (( "(") (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x18")) () ")")))) (== "==") (identifier "FUN_00185200")) () ")")) (compound_statement "{\n      lVar6 = param_1[6];\n    }" ({ "{") (expression_statement "lVar6 = param_1[6];" (assignment_expression "lVar6 = param_1[6]" (identifier "lVar6") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }" (else "else") (compound_statement "{\n      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);\n    }" ({ "{") (expression_statement "lVar6 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "lVar6 = (**(code **)(*param_1 + 0x18))(param_1)" (identifier "lVar6") (= "=") (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x18)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x18)" (* "*") (cast_expression "(code **)(*param_1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x18)" (( "(") (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (} "}")))) (if_statement "if ((lVar6 - 1U & uVar3) != 0) {\n                    \n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }" (if "if") (parenthesized_expression "((lVar6 - 1U & uVar3) != 0)" (( "(") (binary_expression "(lVar6 - 1U & uVar3) != 0" (parenthesized_expression "(lVar6 - 1U & uVar3)" (( "(") (binary_expression "lVar6 - 1U & uVar3" (binary_expression "lVar6 - 1U" (identifier "lVar6") (- "-") (number_literal "1U")) (& "&") (identifier "uVar3")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");\n    }" ({ "{") (expression_statement "FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");" (call_expression "FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size")" (identifier "FUN_0017c650") (argument_list "("../../gold/ehframe.cc",0x4df,"set_final_data_size")" (( "(") (string_literal ""../../gold/ehframe.cc"" (" """) (string_content "../../gold/ehframe.cc") (" """)) (, ",") (number_literal "0x4df") (, ",") (string_literal ""set_final_data_size"" (" """) (string_content "set_final_data_size") (" """)) () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "bVar1 = *(byte *)(param_1 + 4);" (assignment_expression "bVar1 = *(byte *)(param_1 + 4)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_1 + 4)" (* "*") (cast_expression "(byte *)(param_1 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    param_1[2] = param_1[0x12];\n    *(byte *)(param_1 + 4) = bVar1 | 2;\n    return;\n  }" (if "if") (parenthesized_expression "(((bVar1 & 2) == 0) && ((bVar1 & 8) == 0))" (( "(") (binary_expression "((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)" (parenthesized_expression "((bVar1 & 2) == 0)" (( "(") (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" (( "(") (binary_expression "bVar1 & 2" (identifier "bVar1") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((bVar1 & 8) == 0)" (( "(") (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" (( "(") (binary_expression "bVar1 & 8" (identifier "bVar1") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    param_1[2] = param_1[0x12];\n    *(byte *)(param_1 + 4) = bVar1 | 2;\n    return;\n  }" ({ "{") (expression_statement "param_1[2] = param_1[0x12];" (assignment_expression "param_1[2] = param_1[0x12]" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "param_1[0x12]" (identifier "param_1") ([ "[") (number_literal "0x12") (] "]"))) (; ";")) (expression_statement "*(byte *)(param_1 + 4) = bVar1 | 2;" (assignment_expression "*(byte *)(param_1 + 4) = bVar1 | 2" (pointer_expression "*(byte *)(param_1 + 4)" (* "*") (cast_expression "(byte *)(param_1 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "bVar1 | 2" (identifier "bVar1") (| "|") (number_literal "2"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0017c650("../../gold/output.h",0x218,"set_data_size");" (call_expression "FUN_0017c650("../../gold/output.h",0x218,"set_data_size")" (identifier "FUN_0017c650") (argument_list "("../../gold/output.h",0x218,"set_data_size")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0x218") (, ",") (string_literal ""set_data_size"" (" """) (string_content "set_data_size") (" """)) () ")"))) (; ";")) (} "}")))

/* DWARF original prototype: void set_final_data_size(Eh_frame * this) */

void __thiscall var_2::type_1::function_1(type_1 *this)

{
  type_2 var_15;
  type_3 *var_6;
  type_4 *pOVar3;
  type_5 *pCVar4;
  type_6 uVar5;
  int iVar6;
  type_7 var_11;
  type_8 *var_10;
  type_9 extraout_var;
  type_10 var_5;
  type_7 var_12;
  uint64_t var_14;
  
  if (this->mappings_are_done_ == false) {
    if (((this->super_Output_section_data).super_Output_data.field_0x20 & 4) == 0) {
      var_12 = 0;
    }
    else {
      pOVar3 = (this->super_Output_section_data).output_section_;
      if (((pOVar3->super_Output_data).field_0x20 & 4) == 0) {
                    /* WARNING: Subroutine does not return */
        var_1("../../gold/output.h",0xe3,"offset");
      }
      var_12 = (this->super_Output_section_data).super_Output_data.offset_ -
                 (pOVar3->super_Output_data).offset_;
    }
    var_5 = (this->unmergeable_cie_offsets_).
              super__Vector_base<var_2::type_5*,var_3::allocator<var_2::type_5*>var_4>._M_impl._M_start;
    var_11 = var_12;
    if (var_5 !=
        (this->unmergeable_cie_offsets_).super__Vector_base<var_2::type_5*,var_3::allocator<var_2::type_5*>var_4>
        ._M_impl._M_finish) {
      do {
        pCVar4 = *var_5;
        var_6 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];
        if (var_6 == var_7::do_addralign) {
          uVar5 = (type_6)(this->super_Output_section_data).addralign_;
        }
        else {
          uVar5 = (*var_6)(this);
        }
        var_5 = var_5 + 1;
        var_11 =
             type_5::var_8(pCVar4,var_11,uVar5,&this->super_Output_section_data);
      } while ((this->unmergeable_cie_offsets_).
               super__Vector_base<var_2::type_5*,var_3::allocator<var_2::type_5*>var_4>._M_impl._M_finish !=
               var_5);
    }
    for (var_10 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;
        (type_11 *)var_10 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header;
        var_10 = (type_8 *)std::var_9(var_10)) {
      pCVar4 = *(type_5 **)(var_10 + 1);
      var_6 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];
      if (var_6 == var_7::do_addralign) {
        uVar5 = (type_6)(this->super_Output_section_data).addralign_;
      }
      else {
        uVar5 = (*var_6)(this);
      }
      var_11 =
           type_5::var_8(pCVar4,var_11,uVar5,&this->super_Output_section_data);
    }
    this->mappings_are_done_ = true;
    this->final_data_size_ = var_11 - var_12;
    var_6 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];
    if (var_6 == var_7::do_addralign) {
      var_14 = (this->super_Output_section_data).addralign_;
    }
    else {
      iVar6 = (*var_6)(this);
      var_14 = var_13(extraout_var,iVar6);
    }
    if ((var_14 - 1 & var_11) != 0) {
                    /* WARNING: Subroutine does not return */
      var_1("../../gold/ehframe.cc",0x4df,"set_final_data_size");
    }
  }
  var_15 = (this->super_Output_section_data).super_Output_data.field_0x20;
  if (((var_15 & 2) == 0) && ((var_15 & 8) == 0)) {
    (this->super_Output_section_data).super_Output_data.data_size_ = this->final_data_size_;
    (this->super_Output_section_data).super_Output_data.field_0x20 = var_15 | 2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_1("../../gold/output.h",0x218,"set_data_size");
}


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

{
  byte bVar1;
  undefined8 uVar2;
  ulong uVar3;
  long *plVar4;
  long lVar5;
  long lVar6;
  undefined8 *puVar7;
  ulong local_40;
  
  if ((char)param_1[0x11] == '\0') {
    if ((*(byte *)(param_1 + 4) & 4) == 0) {
      local_40 = 0;
    }
    else {
      if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_0017c650("../../gold/output.h",0xe3,"offset");
      }
      local_40 = param_1[3] - *(long *)(param_1[5] + 0x18);
    }
    puVar7 = (undefined8 *)param_1[0xe];
    uVar3 = local_40;
    if (puVar7 != (undefined8 *)param_1[0xf]) {
      do {
        uVar2 = *puVar7;
        if (*(code **)(*param_1 + 0x18) == FUN_00185200) {
          lVar6 = param_1[6];
        }
        else {
          lVar6 = (**(code **)(*param_1 + 0x18))(param_1);
        }
        puVar7 = puVar7 + 1;
        uVar3 = FUN_002a7d40(uVar2,uVar3,lVar6,param_1);
      } while ((undefined8 *)param_1[0xf] != puVar7);
    }
    for (plVar4 = (long *)param_1[0xb]; plVar4 != param_1 + 9;
        plVar4 = (long *)thunk_FUN_002dc030(plVar4)) {
      lVar6 = plVar4[4];
      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {
        lVar5 = param_1[6];
      }
      else {
        lVar5 = (**(code **)(*param_1 + 0x18))(param_1);
      }
      uVar3 = FUN_002a7d40(lVar6,uVar3,lVar5,param_1);
    }
    *(undefined1 *)(param_1 + 0x11) = 1;
    param_1[0x12] = uVar3 - local_40;
    if (*(code **)(*param_1 + 0x18) == FUN_00185200) {
      lVar6 = param_1[6];
    }
    else {
      lVar6 = (**(code **)(*param_1 + 0x18))(param_1);
    }
    if ((lVar6 - 1U & uVar3) != 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/ehframe.cc",0x4df,"set_final_data_size");
    }
  }
  bVar1 = *(byte *)(param_1 + 4);
  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {
    param_1[2] = param_1[0x12];
    *(byte *)(param_1 + 4) = bVar1 | 2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/output.h",0x218,"set_data_size");
}

