
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Output_section * choose_output_section(Layout * this, Relobj * relobj,
   char * name, Elf_Word type, Elf_Xword flags, bool is_input_section, Output_section_order order,
   bool is_relro, bool is_reloc, bool match_input_spec) */

Output_section * __thiscall
gold::Layout::choose_output_section
          (Layout *this,Relobj *relobj,char *name,Elf_Word type,Elf_Xword flags,
          bool is_input_section,Output_section_order order,bool is_relro,bool is_reloc,
          bool match_input_spec)

{
  bool bVar1;
  Target *pTVar2;
  Errors *this_00;
  _Alloc_hider _Var3;
  undefined8 uVar4;
  char *pcVar5;
  Output_section *pOVar6;
  byte *pbVar7;
  long lVar8;
  pointer file_name;
  byte *pbVar9;
  uint uVar10;
  undefined1 uVar11;
  undefined1 uVar12;
  byte bVar13;
  undefined8 uStack_d0;
  byte *local_b0;
  size_t len;
  string uncompressed_name;
  Section_type script_section_type;
  char local_68 [16];
  Output_section **output_section_slot;
  size_t local_50;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  local_48;
  Elf_Xword flags_00;
  
  bVar13 = 0;
  if ((is_input_section) && (this->sections_are_attached_ != false)) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/layout.cc",0x3b8,"choose_output_section");
  }
  if (parameters->options_ == (General_options *)0x0) {
                    /* WARNING: Subroutine does not return */
    Target::abi_pagesize((Target *)this);
  }
  uVar10 = (uint)flags & 0xfffff50f;
  if ((parameters->options_->relocatable_).value != false) {
    uVar10 = (uint)flags & 0xfffff58f;
  }
  flags_00 = (Elf_Xword)uVar10;
  bVar1 = (this->script_options_->script_sections_).saw_sections_clause_;
  uVar11 = bVar1 == false;
  uVar12 = bVar1 == true;
  local_b0 = (byte *)name;
  if ((bool)uVar12) {
    uVar11 = false;
    uVar12 = !is_reloc;
    if ((bool)uVar12) {
      file_name = (char *)0x0;
      if (relobj != (Relobj *)0x0) {
        file_name = (relobj->super_Object).name_._M_dataplus._M_p;
      }
      local_b0 = (byte *)Script_sections::output_section_name
                                   (&this->script_options_->script_sections_,file_name,name,
                                    &output_section_slot,&script_section_type,
                                    (bool *)&uncompressed_name,match_input_spec);
      if (local_b0 == (byte *)0x0) {
        if (parameters->options_ == (General_options *)0x0) {
          return (Output_section *)0x0;
        }
        if ((parameters->debug_ & 2) == 0) {
          return (Output_section *)0x0;
        }
        this_00 = parameters->errors_;
        pcVar5 = (char *)gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"
                                 ,uStack_d0);
        Errors::debug(this_00,pcVar5,name);
        return (Output_section *)0x0;
      }
      if (script_section_type != ST_NONE) {
        if (script_section_type != ST_NOLOAD) {
                    /* WARNING: Subroutine does not return */
          do_gold_unreachable("../../gold/layout.cc",0x3de,"choose_output_section");
        }
        flags_00 = (Elf_Xword)(uVar10 & 2);
      }
      uVar11 = false;
      uVar12 = output_section_slot == (Output_section **)0x0;
      if (!(bool)uVar12) {
        if (*output_section_slot != (Output_section *)0x0) {
          Output_section::update_flags_for_input_section(*output_section_slot,flags_00);
          return *output_section_slot;
        }
        pcVar5 = Stringpool_template<char>::add(&this->namepool_,(char *)local_b0,false,(Key *)0x0);
        pOVar6 = make_output_section(this,pcVar5,type,flags_00,order,is_relro);
        pOVar6->field_0xc8 = pOVar6->field_0xc8 | 0x40;
        if (((script_section_type == ST_NOLOAD) &&
            (pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0)) &&
           (bVar13 = (pOVar6->super_Output_data).field_0x20, (bVar13 & 1) != 0)) {
          if ((((pOVar6->super_Output_data).address_ != 0) || ((bVar13 & 4) != 0)) ||
             ((bVar13 & 2) != 0)) {
                    /* WARNING: Subroutine does not return */
            do_gold_unreachable("../../gold/layout.cc",0x406,"choose_output_section");
          }
          (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xfa;
          if ((bVar13 & 8) == 0) {
            (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xf8;
          }
          (*(pOVar6->super_Output_data)._vptr_Output_data[0xf])(pOVar6);
        }
        *output_section_slot = pOVar6;
        return pOVar6;
      }
    }
  }
  len = strlen((char *)local_b0);
  uncompressed_name._M_dataplus._M_p = (pointer)&uncompressed_name.field_2;
  uncompressed_name.field_2._M_allocated_capacity =
       uncompressed_name.field_2._M_allocated_capacity & 0xffffffffffffff00;
  lVar8 = 7;
  uncompressed_name._M_string_length = 0;
  pbVar7 = (byte *)".zdebug";
  pbVar9 = local_b0;
  do {
    if (lVar8 == 0) break;
    lVar8 = lVar8 + -1;
    uVar11 = *pbVar7 < *pbVar9;
    uVar12 = *pbVar7 == *pbVar9;
    pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;
    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;
  } while ((bool)uVar12);
  if ((!(bool)uVar11 && !(bool)uVar12) != (bool)uVar11) goto LAB_001ad012;
  _script_section_type = local_68;
                    /* try { // try from 001ad1f1 to 001ad1f5 has its CatchHandler @ 001ad503 */
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>
            ((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)
             &script_section_type,local_b0,local_b0 + len);
                    /* try { // try from 001ad20b to 001ad20f has its CatchHandler @ 001ad4fb */
  corresponding_uncompressed_section_name
            ((string *)&output_section_slot,
             (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)
             &script_section_type);
  uVar4 = uncompressed_name.field_2._M_allocated_capacity;
  _Var3 = uncompressed_name._M_dataplus;
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)output_section_slot == &local_48) {
    if (local_50 != 0) {
      if (local_50 == 1) {
        *uncompressed_name._M_dataplus._M_p = local_48._M_local_buf[0];
      }
      else {
        memcpy(uncompressed_name._M_dataplus._M_p,output_section_slot,local_50);
      }
    }
    uncompressed_name._M_dataplus._M_p[local_50] = '\0';
    uncompressed_name._M_string_length = local_50;
  }
  else {
    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
         *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2) {
      uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot;
      uncompressed_name._M_string_length = local_50;
      uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity;
      if (_Var3._M_p != (pointer)0x0) {
        output_section_slot = (Output_section **)_Var3._M_p;
        local_48._M_allocated_capacity = uVar4;
        goto LAB_001ad26b;
      }
    }
    uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity;
    uncompressed_name._M_string_length = local_50;
    uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot;
    output_section_slot = (Output_section **)&local_48;
  }
LAB_001ad26b:
  local_50 = 0;
  *(undefined1 *)output_section_slot = 0;
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)output_section_slot != &local_48) {
    operator_delete(output_section_slot);
  }
  if (_script_section_type != local_68) {
    operator_delete(_script_section_type);
  }
  local_b0 = (byte *)uncompressed_name._M_dataplus._M_p;
  len = uncompressed_name._M_string_length;
LAB_001ad012:
  pbVar7 = local_b0;
  if ((is_input_section) &&
     ((this->script_options_->script_sections_).saw_sections_clause_ == false)) {
    if (parameters->options_ == (General_options *)0x0) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
    }
    if ((parameters->options_->relocatable_).value == false) {
      pTVar2 = parameters->target_;
      if (pTVar2 == (Target *)0x0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */
        do_gold_unreachable("../../gold/parameters.h",0x69,"target");
      }
                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */
      if ((*(code **)(*(long *)pTVar2 + 0x110) == Target::do_output_section_name) ||
         (pbVar7 = (byte *)(**(code **)(*(long *)pTVar2 + 0x110))(pTVar2,relobj,local_b0,&len),
         pbVar7 == (byte *)0x0)) {
        pbVar7 = (byte *)output_section_name(relobj,(char *)local_b0,&len);
      }
    }
  }
  local_b0 = pbVar7;
                    /* try { // try from 001ad045 to 001ad124 has its CatchHandler @ 001ad503 */
  pcVar5 = Stringpool_template<char>::add_with_length
                     (&this->namepool_,(char *)local_b0,len,true,(Key *)&script_section_type);
  pOVar6 = get_output_section(this,pcVar5,(Key)_script_section_type,type,flags_00,order,is_relro);
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2) {
    operator_delete(uncompressed_name._M_dataplus._M_p);
  }
  return pOVar6;
}



long * FUN_001acf30(long param_1,long param_2,ulong *param_3,undefined4 param_4,uint param_5,
                   char param_6,undefined4 param_7,undefined1 param_8,char param_9,
                   undefined1 param_10)

{
  char cVar1;
  ulong uVar2;
  undefined8 uVar3;
  long *plVar4;
  ulong *puVar5;
  undefined8 uVar6;
  long lVar7;
  byte *pbVar8;
  uint uVar9;
  undefined1 uVar10;
  undefined1 uVar11;
  byte bVar12;
  undefined8 uStack_d0;
  ulong *local_b0;
  size_t local_a0;
  ulong *local_98;
  size_t local_90;
  ulong local_88 [2];
  undefined1 *local_78 [2];
  undefined1 local_68 [16];
  ulong *local_58;
  size_t local_50;
  ulong local_48 [3];
  
  bVar12 = 0;
  if ((param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0')) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");
  }
  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_001a4340();
  }
  uVar9 = param_5 & 0xfffff50f;
  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {
    uVar9 = param_5 & 0xfffff58f;
  }
  cVar1 = *(char *)(*(long *)(param_1 + 8) + 0x148);
  uVar10 = cVar1 == '\0';
  uVar11 = cVar1 == '\x01';
  local_b0 = param_3;
  if ((bool)uVar11) {
    uVar10 = false;
    uVar11 = param_9 == '\0';
    if ((bool)uVar11) {
      uVar3 = 0;
      if (param_2 != 0) {
        uVar3 = *(undefined8 *)(param_2 + 8);
      }
      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,
                                       local_78,&local_98,param_10);
      if (local_b0 == (ulong *)0x0) {
        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {
          return (long *)0x0;
        }
        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {
          return (long *)0x0;
        }
        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;
        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"
                        ,uStack_d0);
        FUN_00178100(uVar3,uVar6,param_3);
        return (long *)0x0;
      }
      if ((int)local_78[0] != 0) {
        if ((int)local_78[0] != 1) {
                    /* WARNING: Subroutine does not return */
          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");
        }
        uVar9 = uVar9 & 2;
      }
      uVar10 = false;
      uVar11 = local_58 == (ulong *)0x0;
      if (!(bool)uVar11) {
        if (*local_58 != 0) {
          FUN_001f5d70(*local_58,uVar9);
          return (long *)*local_58;
        }
        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);
        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);
        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;
        if ((((int)local_78[0] == 1) &&
            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,
            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&
           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {
          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {
                    /* WARNING: Subroutine does not return */
            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");
          }
          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;
          if ((bVar12 & 8) == 0) {
            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;
          }
          (**(code **)(*plVar4 + 0x78))(plVar4);
        }
        *local_58 = (ulong)plVar4;
        return plVar4;
      }
    }
  }
  local_a0 = strlen((char *)local_b0);
  local_98 = local_88;
  local_88[0] = local_88[0] & 0xffffffffffffff00;
  lVar7 = 7;
  local_90 = 0;
  pbVar8 = (byte *)".zdebug";
  puVar5 = local_b0;
  do {
    if (lVar7 == 0) break;
    lVar7 = lVar7 + -1;
    uVar10 = *pbVar8 < (byte)*puVar5;
    uVar11 = *pbVar8 == (byte)*puVar5;
    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;
    puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);
  } while ((bool)uVar11);
  if ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10) goto LAB_001ad012;
  local_78[0] = local_68;
                    /* try { // try from 001ad1f1 to 001ad1f5 has its CatchHandler @ 001ad503 */
  FUN_001665c0(local_78,local_b0,(byte *)((long)local_b0 + local_a0));
                    /* try { // try from 001ad20b to 001ad20f has its CatchHandler @ 001ad4fb */
  FUN_001ab710(&local_58,local_78);
  uVar2 = local_88[0];
  puVar5 = local_98;
  if (local_58 == local_48) {
    if (local_50 != 0) {
      if (local_50 == 1) {
        *(byte *)local_98 = (byte)local_48[0];
      }
      else {
        memcpy(local_98,local_58,local_50);
      }
    }
    *(byte *)((long)local_98 + local_50) = 0;
    local_90 = local_50;
  }
  else {
    if (local_98 != local_88) {
      local_98 = local_58;
      local_90 = local_50;
      local_88[0] = local_48[0];
      if (puVar5 != (ulong *)0x0) {
        local_58 = puVar5;
        local_48[0] = uVar2;
        goto LAB_001ad26b;
      }
    }
    local_88[0] = local_48[0];
    local_90 = local_50;
    local_98 = local_58;
    local_58 = local_48;
  }
LAB_001ad26b:
  local_50 = 0;
  *(byte *)local_58 = 0;
  if (local_58 != local_48) {
    FUN_002dac70();
  }
  if (local_78[0] != local_68) {
    FUN_002dac70();
  }
  local_b0 = local_98;
  local_a0 = local_90;
LAB_001ad012:
  puVar5 = local_b0;
  if ((param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')) {
    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/parameters.h",0x5c,"options");
    }
    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {
      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);
      if (plVar4 == (long *)0x0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */
        FUN_0017c650("../../gold/parameters.h",0x69,"target");
      }
                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */
      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||
         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),
         puVar5 == (ulong *)0x0)) {
        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);
      }
    }
  }
  local_b0 = puVar5;
                    /* try { // try from 001ad045 to 001ad124 has its CatchHandler @ 001ad503 */
  uVar3 = FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78);
  plVar4 = (long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8);
  if (local_98 != local_88) {
    FUN_002dac70();
  }
  return plVar4;
}


PUSH RBP
MOV RBP,RSP
PUSH R15
PUSH R14
MOV R14D,R9D
PUSH R13
PUSH R12
MOV R12,RDI
PUSH RBX
SUB RSP,0x98
MOV qword ptr [RBP + -0xa8],RDX
MOV R13D,dword ptr [RBP + 0x18]
MOV dword ptr [RBP + -0xb0],ECX
MOV EDX,dword ptr [RBP + 0x28]
MOV qword ptr [RBP + -0xb8],RSI
MOV ECX,dword ptr [RBP + 0x20]
TEST R9B,R9B
JZ 0x001acf7a
CMP byte ptr [RDI + 0x369],0x0
JNZ 0x001ad3e6
MOV RAX,qword ptr [0x0043e6b0]
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JZ 0x001ad496
MOV R15,R8
AND R15D,0xfffff50f
CMP byte ptr [RAX + 0x5051],0x0
JNZ 0x001ad0b0
MOV RDI,qword ptr [R12 + 0x8]
LEA RBX,[RBP + -0x90]
CMP byte ptr [RDI + 0x148],0x1
JNZ 0x001acfc2
TEST CL,CL
JZ 0x001ad138
MOV RDI,qword ptr [RBP + -0xa8]
CALL 0x00147490
LEA RDX,[RBX + 0x10]
MOV byte ptr [RBP + -0x80],0x0
MOV RDI,qword ptr [RBP + -0xa8]
MOV qword ptr [RBP + -0x98],RAX
MOV ECX,0x7
LEA RSI,[0x3761bb]
MOV qword ptr [RBP + -0x90],RDX
MOV qword ptr [RBP + -0x88],0x0
CMPSB.REPE RDI,RSI
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x001ad1d0
TEST R14B,R14B
JZ 0x001ad029
MOV RAX,qword ptr [R12 + 0x8]
CMP byte ptr [RAX + 0x148],0x0
JZ 0x001ad0c0
MOV RDX,qword ptr [RBP + -0x98]
MOV RSI,qword ptr [RBP + -0xa8]
LEA RDI,[R12 + 0x10]
LEA R8,[RBP + -0x70]
MOV ECX,0x1
CALL 0x0026e510
SUB RSP,0x8
MOVZX R13D,R13B
MOV R9D,dword ptr [RBP + 0x10]
MOV RDX,qword ptr [RBP + -0x70]
PUSH R13
MOV ECX,dword ptr [RBP + -0xb0]
MOV R8,R15
MOV RSI,RAX
MOV RDI,R12
CALL 0x001acd20
MOV RDI,qword ptr [RBP + -0x90]
ADD RBX,0x10
MOV R8,RAX
POP RAX
POP RDX
CMP RDI,RBX
JZ 0x001ad098
MOV qword ptr [RBP + -0xa8],R8
CALL 0x002dac70
MOV R8,qword ptr [RBP + -0xa8]
LEA RSP,[RBP + -0x28]
MOV RAX,R8
POP RBX
POP R12
POP R13
POP R14
POP R15
POP RBP
RET
MOV R15,R8
AND R15D,0xfffff58f
JMP 0x001acfa5
MOV RDX,qword ptr [0x0043e6b0]
MOV RAX,qword ptr [RDX + 0x10]
TEST RAX,RAX
JZ 0x001ad4b3
CMP byte ptr [RAX + 0x5051],0x0
JNZ 0x001ad029
MOV RDI,qword ptr [RDX + 0x18]
TEST RDI,RDI
JZ 0x001ad49b
MOV RAX,qword ptr [RDI]
LEA RDX,[0x1b0f60]
LEA R14,[RBP + -0x98]
MOV RAX,qword ptr [RAX + 0x110]
CMP RAX,RDX
JNZ 0x001ad458
MOV RSI,qword ptr [RBP + -0xa8]
MOV RDI,qword ptr [RBP + -0xb8]
MOV RDX,R14
CALL 0x001a6e90
MOV qword ptr [RBP + -0xa8],RAX
JMP 0x001ad029
MOV RAX,qword ptr [RBP + -0xb8]
ADD RDI,0x148
XOR ESI,ESI
TEST RAX,RAX
JZ 0x001ad151
MOV RSI,qword ptr [RAX + 0x8]
SUB RSP,0x8
LEA RCX,[RBP + -0x50]
LEA R8,[RBP + -0x70]
MOVZX EDX,DL
PUSH RDX
LEA RBX,[RBP + -0x90]
MOV RDX,qword ptr [RBP + -0xa8]
MOV R9,RBX
CALL 0x00257f70
POP RCX
POP RSI
MOV R8,RAX
TEST RAX,RAX
JZ 0x001ad400
MOV EAX,dword ptr [RBP + -0x70]
TEST EAX,EAX
JZ 0x001ad199
CMP EAX,0x1
JNZ 0x001ad4cb
AND R15D,0x2
MOV RAX,qword ptr [RBP + -0x50]
TEST RAX,RAX
JZ 0x001ad308
MOV RDI,qword ptr [RAX]
TEST RDI,RDI
JZ 0x001ad318
MOV RSI,R15
CALL 0x001f5d70
MOV RAX,qword ptr [RBP + -0x50]
MOV R8,qword ptr [RAX]
JMP 0x001ad098
LEA RCX,[RBP + -0x70]
MOV RSI,qword ptr [RBP + -0xa8]
LEA RDX,[RCX + 0x10]
MOV RDI,RCX
MOV qword ptr [RBP + -0xc0],RCX
MOV qword ptr [RBP + -0x70],RDX
LEA RDX,[RSI + RAX*0x1]
CALL 0x001665c0
LEA RAX,[RBP + -0x50]
MOV RSI,qword ptr [RBP + -0xc0]
MOV RDI,RAX
MOV qword ptr [RBP + -0xa8],RAX
CALL 0x001ab710
MOV RAX,qword ptr [RBP + -0xa8]
MOV RSI,qword ptr [RBP + -0x50]
MOV RDI,qword ptr [RBP + -0x90]
MOV RDX,qword ptr [RBP + -0x48]
ADD RAX,0x10
CMP RSI,RAX
JZ 0x001ad2d0
LEA RCX,[RBX + 0x10]
MOV RAX,qword ptr [RBP + -0x40]
CMP RDI,RCX
JZ 0x001ad3c0
MOV RCX,qword ptr [RBP + -0x80]
MOV qword ptr [RBP + -0x90],RSI
MOV qword ptr [RBP + -0x88],RDX
MOV qword ptr [RBP + -0x80],RAX
TEST RDI,RDI
JZ 0x001ad3d2
MOV qword ptr [RBP + -0x50],RDI
MOV qword ptr [RBP + -0x40],RCX
MOV RAX,qword ptr [RBP + -0xa8]
MOV qword ptr [RBP + -0x48],0x0
MOV byte ptr [RDI],0x0
MOV RDI,qword ptr [RBP + -0x50]
ADD RAX,0x10
CMP RDI,RAX
JZ 0x001ad28f
CALL 0x002dac70
MOV RAX,qword ptr [RBP + -0xc0]
MOV RDI,qword ptr [RBP + -0x70]
ADD RAX,0x10
CMP RDI,RAX
JZ 0x001ad2a8
CALL 0x002dac70
MOV RAX,qword ptr [RBP + -0x90]
MOV qword ptr [RBP + -0xa8],RAX
MOV RAX,qword ptr [RBP + -0x88]
MOV qword ptr [RBP + -0x98],RAX
JMP 0x001ad012
TEST RDX,RDX
JZ 0x001ad2ef
CMP RDX,0x1
JZ 0x001ad480
CALL 0x00147aa0
MOV RDX,qword ptr [RBP + -0x48]
MOV RDI,qword ptr [RBP + -0x90]
MOV qword ptr [RBP + -0x88],RDX
MOV byte ptr [RDI + RDX*0x1],0x0
MOV RDI,qword ptr [RBP + -0x50]
JMP 0x001ad26b
MOV qword ptr [RBP + -0xa8],R8
JMP 0x001acfc2
XOR ECX,ECX
XOR EDX,EDX
LEA RDI,[R12 + 0x10]
MOV RSI,R8
CALL 0x0026e6a0
MOV R8D,dword ptr [RBP + 0x10]
MOVZX R9D,R13B
MOV RCX,R15
MOV EDX,dword ptr [RBP + -0xb0]
MOV RSI,RAX
MOV RDI,R12
CALL 0x001a8f30
OR byte ptr [RAX + 0xc8],0x40
CMP dword ptr [RBP + -0x70],0x1
MOV R8,RAX
JNZ 0x001ad3b1
OR byte ptr [RAX + 0xca],0x8
TEST byte ptr [RAX + 0x70],0x2
JNZ 0x001ad3b1
MOVZX EAX,byte ptr [RAX + 0x20]
TEST AL,0x1
JZ 0x001ad3b1
CMP qword ptr [R8 + 0x8],0x0
JNZ 0x001ad4e3
TEST AL,0x4
JNZ 0x001ad4e3
TEST AL,0x2
JNZ 0x001ad4e3
MOV EDX,EAX
AND EDX,0xfffffffa
MOV byte ptr [R8 + 0x20],DL
AND EDX,0x8
JNZ 0x001ad39a
AND EAX,0xfffffff8
MOV byte ptr [R8 + 0x20],AL
MOV RAX,qword ptr [R8]
MOV RDI,R8
MOV qword ptr [RBP + -0xa8],R8
CALL qword ptr [RAX + 0x78]
MOV R8,qword ptr [RBP + -0xa8]
MOV RAX,qword ptr [RBP + -0x50]
MOV qword ptr [RAX],R8
JMP 0x001ad098
MOV qword ptr [RBP + -0x90],RSI
MOV qword ptr [RBP + -0x88],RDX
MOV qword ptr [RBP + -0x80],RAX
MOV RAX,qword ptr [RBP + -0xa8]
LEA RDI,[RAX + 0x10]
MOV qword ptr [RBP + -0x50],RDI
JMP 0x001ad26b
LEA RDX,[0x377860]
MOV ESI,0x3b8
LEA RDI,[0x37612f]
CALL 0x0017c650
MOV RAX,qword ptr [0x0043e6b0]
CMP qword ptr [RAX + 0x10],0x0
JZ 0x001ad098
TEST byte ptr [RAX + 0x24],0x2
JZ 0x001ad098
MOV RBX,qword ptr [RAX]
LEA RDI,[0x376cb8]
MOV qword ptr [RBP + -0xb0],R8
CALL 0x00147320
MOV RDX,qword ptr [RBP + -0xa8]
MOV RSI,RAX
MOV RDI,RBX
XOR EAX,EAX
CALL 0x00178100
MOV R8,qword ptr [RBP + -0xb0]
JMP 0x001ad098
MOV RCX,R14
MOV RDX,qword ptr [RBP + -0xa8]
MOV RSI,qword ptr [RBP + -0xb8]
CALL RAX
TEST RAX,RAX
JNZ 0x001ad125
JMP 0x001ad10f
MOVZX EAX,byte ptr [RBP + -0x40]
MOV byte ptr [RDI],AL
MOV RDX,qword ptr [RBP + -0x48]
MOV RDI,qword ptr [RBP + -0x90]
JMP 0x001ad2ef
CALL 0x001a4340
LEA RDX,[0x37784b]
MOV ESI,0x69
LEA RDI,[0x3726d0]
CALL 0x0017c650
LEA RDX,[0x3778a8]
MOV ESI,0x5c
LEA RDI,[0x3726d0]
CALL 0x0017c650
LEA RDX,[0x377860]
MOV ESI,0x3de
LEA RDI,[0x37612f]
CALL 0x0017c650
LEA RDX,[0x377860]
MOV ESI,0x406
LEA RDI,[0x37612f]
CALL 0x0017c650
(translation_unit "long * FUN_001acf30(long param_1,long param_2,ulong *param_3,undefined4 param_4,uint param_5,\n                   char param_6,undefined4 param_7,undefined1 param_8,char param_9,\n                   undefined1 param_10)\n\n{\n  char cVar1;\n  ulong uVar2;\n  undefined8 uVar3;\n  long *plVar4;\n  ulong *puVar5;\n  undefined8 uVar6;\n  long lVar7;\n  byte *pbVar8;\n  uint uVar9;\n  undefined1 uVar10;\n  undefined1 uVar11;\n  byte bVar12;\n  undefined8 uStack_d0;\n  ulong *local_b0;\n  size_t local_a0;\n  ulong *local_98;\n  size_t local_90;\n  ulong local_88 [2];\n  undefined1 *local_78 [2];\n  undefined1 local_68 [16];\n  ulong *local_58;\n  size_t local_50;\n  ulong local_48 [3];\n  \n  bVar12 = 0;\n  if ((param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0')) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001a4340();\n  }\n  uVar9 = param_5 & 0xfffff50f;\n  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n    uVar9 = param_5 & 0xfffff58f;\n  }\n  cVar1 = *(char *)(*(long *)(param_1 + 8) + 0x148);\n  uVar10 = cVar1 == '\0';\n  uVar11 = cVar1 == '\x01';\n  local_b0 = param_3;\n  if ((bool)uVar11) {\n    uVar10 = false;\n    uVar11 = param_9 == '\0';\n    if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }\n  }\n  local_a0 = strlen((char *)local_b0);\n  local_98 = local_88;\n  local_88[0] = local_88[0] & 0xffffffffffffff00;\n  lVar7 = 7;\n  local_90 = 0;\n  pbVar8 = (byte *)".zdebug";\n  puVar5 = local_b0;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar10 = *pbVar8 < (byte)*puVar5;\n    uVar11 = *pbVar8 == (byte)*puVar5;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);\n  } while ((bool)uVar11);\n  if ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10) goto LAB_001ad012;\n  local_78[0] = local_68;\n                    /* try { // try from 001ad1f1 to 001ad1f5 has its CatchHandler @ 001ad503 */\n  FUN_001665c0(local_78,local_b0,(byte *)((long)local_b0 + local_a0));\n                    /* try { // try from 001ad20b to 001ad20f has its CatchHandler @ 001ad4fb */\n  FUN_001ab710(&local_58,local_78);\n  uVar2 = local_88[0];\n  puVar5 = local_98;\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }\n    *(byte *)((long)local_98 + local_50) = 0;\n    local_90 = local_50;\n  }\n  else {\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }\nLAB_001ad26b:\n  local_50 = 0;\n  *(byte *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_002dac70();\n  }\n  if (local_78[0] != local_68) {\n    FUN_002dac70();\n  }\n  local_b0 = local_98;\n  local_a0 = local_90;\nLAB_001ad012:\n  puVar5 = local_b0;\n  if ((param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */\n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }\n  }\n  local_b0 = puVar5;\n                    /* try { // try from 001ad045 to 001ad124 has its CatchHandler @ 001ad503 */\n  uVar3 = FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78);\n  plVar4 = (long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8);\n  if (local_98 != local_88) {\n    FUN_002dac70();\n  }\n  return plVar4;\n}\n\n" (function_definition "long * FUN_001acf30(long param_1,long param_2,ulong *param_3,undefined4 param_4,uint param_5,\n                   char param_6,undefined4 param_7,undefined1 param_8,char param_9,\n                   undefined1 param_10)\n\n{\n  char cVar1;\n  ulong uVar2;\n  undefined8 uVar3;\n  long *plVar4;\n  ulong *puVar5;\n  undefined8 uVar6;\n  long lVar7;\n  byte *pbVar8;\n  uint uVar9;\n  undefined1 uVar10;\n  undefined1 uVar11;\n  byte bVar12;\n  undefined8 uStack_d0;\n  ulong *local_b0;\n  size_t local_a0;\n  ulong *local_98;\n  size_t local_90;\n  ulong local_88 [2];\n  undefined1 *local_78 [2];\n  undefined1 local_68 [16];\n  ulong *local_58;\n  size_t local_50;\n  ulong local_48 [3];\n  \n  bVar12 = 0;\n  if ((param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0')) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001a4340();\n  }\n  uVar9 = param_5 & 0xfffff50f;\n  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n    uVar9 = param_5 & 0xfffff58f;\n  }\n  cVar1 = *(char *)(*(long *)(param_1 + 8) + 0x148);\n  uVar10 = cVar1 == '\0';\n  uVar11 = cVar1 == '\x01';\n  local_b0 = param_3;\n  if ((bool)uVar11) {\n    uVar10 = false;\n    uVar11 = param_9 == '\0';\n    if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }\n  }\n  local_a0 = strlen((char *)local_b0);\n  local_98 = local_88;\n  local_88[0] = local_88[0] & 0xffffffffffffff00;\n  lVar7 = 7;\n  local_90 = 0;\n  pbVar8 = (byte *)".zdebug";\n  puVar5 = local_b0;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar10 = *pbVar8 < (byte)*puVar5;\n    uVar11 = *pbVar8 == (byte)*puVar5;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);\n  } while ((bool)uVar11);\n  if ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10) goto LAB_001ad012;\n  local_78[0] = local_68;\n                    /* try { // try from 001ad1f1 to 001ad1f5 has its CatchHandler @ 001ad503 */\n  FUN_001665c0(local_78,local_b0,(byte *)((long)local_b0 + local_a0));\n                    /* try { // try from 001ad20b to 001ad20f has its CatchHandler @ 001ad4fb */\n  FUN_001ab710(&local_58,local_78);\n  uVar2 = local_88[0];\n  puVar5 = local_98;\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }\n    *(byte *)((long)local_98 + local_50) = 0;\n    local_90 = local_50;\n  }\n  else {\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }\nLAB_001ad26b:\n  local_50 = 0;\n  *(byte *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_002dac70();\n  }\n  if (local_78[0] != local_68) {\n    FUN_002dac70();\n  }\n  local_b0 = local_98;\n  local_a0 = local_90;\nLAB_001ad012:\n  puVar5 = local_b0;\n  if ((param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */\n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }\n  }\n  local_b0 = puVar5;\n                    /* try { // try from 001ad045 to 001ad124 has its CatchHandler @ 001ad503 */\n  uVar3 = FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78);\n  plVar4 = (long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8);\n  if (local_98 != local_88) {\n    FUN_002dac70();\n  }\n  return plVar4;\n}" (sized_type_specifier "long" long) (pointer_declarator "* FUN_001acf30(long param_1,long param_2,ulong *param_3,undefined4 param_4,uint param_5,\n                   char param_6,undefined4 param_7,undefined1 param_8,char param_9,\n                   undefined1 param_10)" * (function_declarator "FUN_001acf30(long param_1,long param_2,ulong *param_3,undefined4 param_4,uint param_5,\n                   char param_6,undefined4 param_7,undefined1 param_8,char param_9,\n                   undefined1 param_10)" identifier (parameter_list "(long param_1,long param_2,ulong *param_3,undefined4 param_4,uint param_5,\n                   char param_6,undefined4 param_7,undefined1 param_8,char param_9,\n                   undefined1 param_10)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "char param_6" primitive_type identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined1 param_8" type_identifier identifier) , (parameter_declaration "char param_9" primitive_type identifier) , (parameter_declaration "undefined1 param_10" type_identifier identifier) )))) (compound_statement "{\n  char cVar1;\n  ulong uVar2;\n  undefined8 uVar3;\n  long *plVar4;\n  ulong *puVar5;\n  undefined8 uVar6;\n  long lVar7;\n  byte *pbVar8;\n  uint uVar9;\n  undefined1 uVar10;\n  undefined1 uVar11;\n  byte bVar12;\n  undefined8 uStack_d0;\n  ulong *local_b0;\n  size_t local_a0;\n  ulong *local_98;\n  size_t local_90;\n  ulong local_88 [2];\n  undefined1 *local_78 [2];\n  undefined1 local_68 [16];\n  ulong *local_58;\n  size_t local_50;\n  ulong local_48 [3];\n  \n  bVar12 = 0;\n  if ((param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0')) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001a4340();\n  }\n  uVar9 = param_5 & 0xfffff50f;\n  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n    uVar9 = param_5 & 0xfffff58f;\n  }\n  cVar1 = *(char *)(*(long *)(param_1 + 8) + 0x148);\n  uVar10 = cVar1 == '\0';\n  uVar11 = cVar1 == '\x01';\n  local_b0 = param_3;\n  if ((bool)uVar11) {\n    uVar10 = false;\n    uVar11 = param_9 == '\0';\n    if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }\n  }\n  local_a0 = strlen((char *)local_b0);\n  local_98 = local_88;\n  local_88[0] = local_88[0] & 0xffffffffffffff00;\n  lVar7 = 7;\n  local_90 = 0;\n  pbVar8 = (byte *)".zdebug";\n  puVar5 = local_b0;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar10 = *pbVar8 < (byte)*puVar5;\n    uVar11 = *pbVar8 == (byte)*puVar5;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);\n  } while ((bool)uVar11);\n  if ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10) goto LAB_001ad012;\n  local_78[0] = local_68;\n                    /* try { // try from 001ad1f1 to 001ad1f5 has its CatchHandler @ 001ad503 */\n  FUN_001665c0(local_78,local_b0,(byte *)((long)local_b0 + local_a0));\n                    /* try { // try from 001ad20b to 001ad20f has its CatchHandler @ 001ad4fb */\n  FUN_001ab710(&local_58,local_78);\n  uVar2 = local_88[0];\n  puVar5 = local_98;\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }\n    *(byte *)((long)local_98 + local_50) = 0;\n    local_90 = local_50;\n  }\n  else {\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }\nLAB_001ad26b:\n  local_50 = 0;\n  *(byte *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_002dac70();\n  }\n  if (local_78[0] != local_68) {\n    FUN_002dac70();\n  }\n  local_b0 = local_98;\n  local_a0 = local_90;\nLAB_001ad012:\n  puVar5 = local_b0;\n  if ((param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */\n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }\n  }\n  local_b0 = puVar5;\n                    /* try { // try from 001ad045 to 001ad124 has its CatchHandler @ 001ad503 */\n  uVar3 = FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78);\n  plVar4 = (long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8);\n  if (local_98 != local_88) {\n    FUN_002dac70();\n  }\n  return plVar4;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "ulong *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined1 uVar10;" type_identifier identifier ;) (declaration "undefined1 uVar11;" type_identifier identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "undefined8 uStack_d0;" type_identifier identifier ;) (declaration "ulong *local_b0;" type_identifier (pointer_declarator "*local_b0" * identifier) ;) (declaration "size_t local_a0;" primitive_type identifier ;) (declaration "ulong *local_98;" type_identifier (pointer_declarator "*local_98" * identifier) ;) (declaration "size_t local_90;" primitive_type identifier ;) (declaration "ulong local_88 [2];" type_identifier (array_declarator "local_88 [2]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_78 [2];" type_identifier (pointer_declarator "*local_78 [2]" * (array_declarator "local_78 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_68 [16];" type_identifier (array_declarator "local_68 [16]" identifier [ number_literal ]) ;) (declaration "ulong *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "size_t local_50;" primitive_type identifier ;) (declaration "ulong local_48 [3];" type_identifier (array_declarator "local_48 [3]" identifier [ number_literal ]) ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (if_statement "if ((param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0')) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }" if (parenthesized_expression "((param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0'))" ( (binary_expression "(param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0')" (parenthesized_expression "(param_6 != '\0')" ( (binary_expression "param_6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(param_1 + 0x369) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x369) != '\0'" (pointer_expression "*(char *)(param_1 + 0x369)" * (cast_expression "(char *)(param_1 + 0x369)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x369)" ( (binary_expression "param_1 + 0x369" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }" { comment (expression_statement "FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section")" identifier (argument_list "("../../gold/layout.cc",0x3b8,"choose_output_section")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""choose_output_section"" " string_content ") ))) ;) })) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001a4340();\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_001a4340();\n  }" { comment (expression_statement "FUN_001a4340();" (call_expression "FUN_001a4340()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar9 = param_5 & 0xfffff50f;" (assignment_expression "uVar9 = param_5 & 0xfffff50f" identifier = (binary_expression "param_5 & 0xfffff50f" identifier & number_literal)) ;) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n    uVar9 = param_5 & 0xfffff58f;\n  }" if (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0')" ( (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar9 = param_5 & 0xfffff58f;\n  }" { (expression_statement "uVar9 = param_5 & 0xfffff58f;" (assignment_expression "uVar9 = param_5 & 0xfffff58f" identifier = (binary_expression "param_5 & 0xfffff58f" identifier & number_literal)) ;) })) (expression_statement "cVar1 = *(char *)(*(long *)(param_1 + 8) + 0x148);" (assignment_expression "cVar1 = *(char *)(*(long *)(param_1 + 8) + 0x148)" identifier = (pointer_expression "*(char *)(*(long *)(param_1 + 8) + 0x148)" * (cast_expression "(char *)(*(long *)(param_1 + 8) + 0x148)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 8) + 0x148)" ( (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar10 = cVar1 == '\0';" (assignment_expression "uVar10 = cVar1 == '\0'" identifier = (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "uVar11 = cVar1 == '\x01';" (assignment_expression "uVar11 = cVar1 == '\x01'" identifier = (binary_expression "cVar1 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "local_b0 = param_3;" (assignment_expression "local_b0 = param_3" identifier = identifier) ;) (if_statement "if ((bool)uVar11) {\n    uVar10 = false;\n    uVar11 = param_9 == '\0';\n    if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }\n  }" if (parenthesized_expression "((bool)uVar11)" ( (cast_expression "(bool)uVar11" ( (type_descriptor "bool" primitive_type) ) identifier) )) (compound_statement "{\n    uVar10 = false;\n    uVar11 = param_9 == '\0';\n    if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }\n  }" { (expression_statement "uVar10 = false;" (assignment_expression "uVar10 = false" identifier = false) ;) (expression_statement "uVar11 = param_9 == '\0';" (assignment_expression "uVar11 = param_9 == '\0'" identifier = (binary_expression "param_9 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }" if (parenthesized_expression "((bool)uVar11)" ( (cast_expression "(bool)uVar11" ( (type_descriptor "bool" primitive_type) ) identifier) )) (compound_statement "{\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }" { (expression_statement "uVar3 = *(undefined8 *)(param_2 + 8);" (assignment_expression "uVar3 = *(undefined8 *)(param_2 + 8)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 8)" * (cast_expression "(undefined8 *)(param_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);" (assignment_expression "local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10)" identifier = (cast_expression "(ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10)" identifier (argument_list "(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10)" ( (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) , identifier , identifier , (pointer_expression "&local_58" & identifier) , identifier , (pointer_expression "&local_98" & identifier) , identifier ))))) ;) (if_statement "if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }" if (parenthesized_expression "(local_b0 == (ulong *)0x0)" ( (binary_expression "local_b0 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }" { (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          return (long *)0x0;\n        }" { (return_statement "return (long *)0x0;" return (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }" if (parenthesized_expression "((PTR_DAT_0043e6b0[0x24] & 2) == 0)" ( (binary_expression "(PTR_DAT_0043e6b0[0x24] & 2) == 0" (parenthesized_expression "(PTR_DAT_0043e6b0[0x24] & 2)" ( (binary_expression "PTR_DAT_0043e6b0[0x24] & 2" (subscript_expression "PTR_DAT_0043e6b0[0x24]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n          return (long *)0x0;\n        }" { (return_statement "return (long *)0x0;" return (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;" (assignment_expression "uVar3 = *(undefined8 *)PTR_DAT_0043e6b0" identifier = (pointer_expression "*(undefined8 *)PTR_DAT_0043e6b0" * (cast_expression "(undefined8 *)PTR_DAT_0043e6b0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);" (assignment_expression "uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0)" identifier = (call_expression "gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0)" identifier (argument_list "("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0)" ( (string_literal ""Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"" " string_content escape_sequence string_content escape_sequence string_content ") , identifier )))) ;) (expression_statement "FUN_00178100(uVar3,uVar6,param_3);" (call_expression "FUN_00178100(uVar3,uVar6,param_3)" identifier (argument_list "(uVar3,uVar6,param_3)" ( identifier , identifier , identifier ))) ;) (return_statement "return (long *)0x0;" return (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }" if (parenthesized_expression "((int)local_78[0] != 0)" ( (binary_expression "(int)local_78[0] != 0" (cast_expression "(int)local_78[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_78[0]" identifier [ number_literal ])) != number_literal) )) (compound_statement "{\n        if ((int)local_78[0] != 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }" { (if_statement "if ((int)local_78[0] != 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }" if (parenthesized_expression "((int)local_78[0] != 1)" ( (binary_expression "(int)local_78[0] != 1" (cast_expression "(int)local_78[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_78[0]" identifier [ number_literal ])) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }" { comment (expression_statement "FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section")" identifier (argument_list "("../../gold/layout.cc",0x3de,"choose_output_section")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""choose_output_section"" " string_content ") ))) ;) })) (expression_statement "uVar9 = uVar9 & 2;" (assignment_expression "uVar9 = uVar9 & 2" identifier = (binary_expression "uVar9 & 2" identifier & number_literal)) ;) })) (expression_statement "uVar10 = false;" (assignment_expression "uVar10 = false" identifier = false) ;) (expression_statement "uVar11 = local_58 == (ulong *)0x0;" (assignment_expression "uVar11 = local_58 == (ulong *)0x0" identifier = (binary_expression "local_58 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }" if (parenthesized_expression "(!(bool)uVar11)" ( (unary_expression "!(bool)uVar11" ! (cast_expression "(bool)uVar11" ( (type_descriptor "bool" primitive_type) ) identifier)) )) (compound_statement "{\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }" { (if_statement "if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }" if (parenthesized_expression "(*local_58 != 0)" ( (binary_expression "*local_58 != 0" (pointer_expression "*local_58" * identifier) != number_literal) )) (compound_statement "{\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }" { (expression_statement "FUN_001f5d70(*local_58,uVar9);" (call_expression "FUN_001f5d70(*local_58,uVar9)" identifier (argument_list "(*local_58,uVar9)" ( (pointer_expression "*local_58" * identifier) , identifier ))) ;) (return_statement "return (long *)*local_58;" return (cast_expression "(long *)*local_58" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_58" * identifier)) ;) })) (expression_statement "uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);" (assignment_expression "uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0)" identifier = (call_expression "FUN_0026e6a0(param_1 + 0x10,local_b0,0,0)" identifier (argument_list "(param_1 + 0x10,local_b0,0,0)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , identifier , number_literal , number_literal )))) ;) (expression_statement "plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);" (assignment_expression "plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8)" identifier = (cast_expression "(long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8)" identifier (argument_list "(param_1,uVar3,param_4,uVar9,param_7,param_8)" ( identifier , identifier , identifier , identifier , identifier , identifier ))))) ;) (expression_statement "*(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;" (assignment_expression "*(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40" (pointer_expression "*(byte *)(plVar4 + 0x19)" * (cast_expression "(byte *)(plVar4 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 0x19)" ( (binary_expression "plVar4 + 0x19" identifier + number_literal) )))) = (binary_expression "*(byte *)(plVar4 + 0x19) | 0x40" (pointer_expression "*(byte *)(plVar4 + 0x19)" * (cast_expression "(byte *)(plVar4 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 0x19)" ( (binary_expression "plVar4 + 0x19" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }" if (parenthesized_expression "((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0))" ( (binary_expression "(((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)" (parenthesized_expression "(((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0))" ( (binary_expression "((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)" (parenthesized_expression "((int)local_78[0] == 1)" ( (binary_expression "(int)local_78[0] == 1" (cast_expression "(int)local_78[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_78[0]" identifier [ number_literal ])) == number_literal) )) && (parenthesized_expression "(*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)" ( (comma_expression "*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0" (assignment_expression "*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8" (pointer_expression "*(byte *)((long)plVar4 + 0xca)" * (cast_expression "(byte *)((long)plVar4 + 0xca)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + 0xca)" ( (binary_expression "(long)plVar4 + 0xca" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)plVar4 + 0xca) | 8" (pointer_expression "*(byte *)((long)plVar4 + 0xca)" * (cast_expression "(byte *)((long)plVar4 + 0xca)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + 0xca)" ( (binary_expression "(long)plVar4 + 0xca" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | number_literal)) , (binary_expression "(*(byte *)(plVar4 + 0xe) & 2) == 0" (parenthesized_expression "(*(byte *)(plVar4 + 0xe) & 2)" ( (binary_expression "*(byte *)(plVar4 + 0xe) & 2" (pointer_expression "*(byte *)(plVar4 + 0xe)" * (cast_expression "(byte *)(plVar4 + 0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 0xe)" ( (binary_expression "plVar4 + 0xe" identifier + number_literal) )))) & number_literal) )) == number_literal)) ))) )) && (parenthesized_expression "(bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)" ( (comma_expression "bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0" (assignment_expression "bVar12 = *(byte *)(plVar4 + 4)" identifier = (pointer_expression "*(byte *)(plVar4 + 4)" * (cast_expression "(byte *)(plVar4 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 4)" ( (binary_expression "plVar4 + 4" identifier + number_literal) ))))) , (binary_expression "(bVar12 & 1) != 0" (parenthesized_expression "(bVar12 & 1)" ( (binary_expression "bVar12 & 1" identifier & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }" { (if_statement "if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }" if (parenthesized_expression "(((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0))" ( (binary_expression "((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)" (parenthesized_expression "((plVar4[1] != 0) || ((bVar12 & 4) != 0))" ( (binary_expression "(plVar4[1] != 0) || ((bVar12 & 4) != 0)" (parenthesized_expression "(plVar4[1] != 0)" ( (binary_expression "plVar4[1] != 0" (subscript_expression "plVar4[1]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "((bVar12 & 4) != 0)" ( (binary_expression "(bVar12 & 4) != 0" (parenthesized_expression "(bVar12 & 4)" ( (binary_expression "bVar12 & 4" identifier & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "((bVar12 & 2) != 0)" ( (binary_expression "(bVar12 & 2) != 0" (parenthesized_expression "(bVar12 & 2)" ( (binary_expression "bVar12 & 2" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }" { comment (expression_statement "FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section")" identifier (argument_list "("../../gold/layout.cc",0x406,"choose_output_section")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""choose_output_section"" " string_content ") ))) ;) })) (expression_statement "*(byte *)(plVar4 + 4) = bVar12 & 0xfa;" (assignment_expression "*(byte *)(plVar4 + 4) = bVar12 & 0xfa" (pointer_expression "*(byte *)(plVar4 + 4)" * (cast_expression "(byte *)(plVar4 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 4)" ( (binary_expression "plVar4 + 4" identifier + number_literal) )))) = (binary_expression "bVar12 & 0xfa" identifier & number_literal)) ;) (if_statement "if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }" if (parenthesized_expression "((bVar12 & 8) == 0)" ( (binary_expression "(bVar12 & 8) == 0" (parenthesized_expression "(bVar12 & 8)" ( (binary_expression "bVar12 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }" { (expression_statement "*(byte *)(plVar4 + 4) = bVar12 & 0xf8;" (assignment_expression "*(byte *)(plVar4 + 4) = bVar12 & 0xf8" (pointer_expression "*(byte *)(plVar4 + 4)" * (cast_expression "(byte *)(plVar4 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 4)" ( (binary_expression "plVar4 + 4" identifier + number_literal) )))) = (binary_expression "bVar12 & 0xf8" identifier & number_literal)) ;) })) (expression_statement "(**(code **)(*plVar4 + 0x78))(plVar4);" (call_expression "(**(code **)(*plVar4 + 0x78))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x78))" ( (pointer_expression "**(code **)(*plVar4 + 0x78)" * (pointer_expression "*(code **)(*plVar4 + 0x78)" * (cast_expression "(code **)(*plVar4 + 0x78)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x78)" ( (binary_expression "*plVar4 + 0x78" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(plVar4)" ( identifier ))) ;) })) (expression_statement "*local_58 = (ulong)plVar4;" (assignment_expression "*local_58 = (ulong)plVar4" (pointer_expression "*local_58" * identifier) = (cast_expression "(ulong)plVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (return_statement "return plVar4;" return identifier ;) })) })) })) (expression_statement "local_a0 = strlen((char *)local_b0);" (assignment_expression "local_a0 = strlen((char *)local_b0)" identifier = (call_expression "strlen((char *)local_b0)" identifier (argument_list "((char *)local_b0)" ( (cast_expression "(char *)local_b0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "local_98 = local_88;" (assignment_expression "local_98 = local_88" identifier = identifier) ;) (expression_statement "local_88[0] = local_88[0] & 0xffffffffffffff00;" (assignment_expression "local_88[0] = local_88[0] & 0xffffffffffffff00" (subscript_expression "local_88[0]" identifier [ number_literal ]) = (binary_expression "local_88[0] & 0xffffffffffffff00" (subscript_expression "local_88[0]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "lVar7 = 7;" (assignment_expression "lVar7 = 7" identifier = number_literal) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (expression_statement "pbVar8 = (byte *)".zdebug";" (assignment_expression "pbVar8 = (byte *)".zdebug"" identifier = (cast_expression "(byte *)".zdebug"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".zdebug"" " string_content "))) ;) (expression_statement "puVar5 = local_b0;" (assignment_expression "puVar5 = local_b0" identifier = identifier) ;) (do_statement "do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar10 = *pbVar8 < (byte)*puVar5;\n    uVar11 = *pbVar8 == (byte)*puVar5;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);\n  } while ((bool)uVar11);" do (compound_statement "{\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar10 = *pbVar8 < (byte)*puVar5;\n    uVar11 = *pbVar8 == (byte)*puVar5;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);\n  }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "uVar10 = *pbVar8 < (byte)*puVar5;" (assignment_expression "uVar10 = *pbVar8 < (byte)*puVar5" identifier = (binary_expression "*pbVar8 < (byte)*puVar5" (pointer_expression "*pbVar8" * identifier) < (binary_expression "(byte)*puVar5" (parenthesized_expression "(byte)" ( identifier )) * identifier))) ;) (expression_statement "uVar11 = *pbVar8 == (byte)*puVar5;" (assignment_expression "uVar11 = *pbVar8 == (byte)*puVar5" identifier = (binary_expression "*pbVar8 == (byte)*puVar5" (pointer_expression "*pbVar8" * identifier) == (binary_expression "(byte)*puVar5" (parenthesized_expression "(byte)" ( identifier )) * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar8 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);" (assignment_expression "puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1)" identifier = (cast_expression "(ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + (ulong)bVar12 * -2 + 1)" ( (binary_expression "(long)puVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "(long)puVar5 + (ulong)bVar12 * -2" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) }) while (parenthesized_expression "((bool)uVar11)" ( (cast_expression "(bool)uVar11" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (if_statement "if ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10) goto LAB_001ad012;" if (parenthesized_expression "((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)" ( (binary_expression "(!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10" (parenthesized_expression "(!(bool)uVar10 && !(bool)uVar11)" ( (binary_expression "!(bool)uVar10 && !(bool)uVar11" (unary_expression "!(bool)uVar10" ! (cast_expression "(bool)uVar10" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar11" ! (cast_expression "(bool)uVar11" ( (type_descriptor "bool" primitive_type) ) identifier))) )) != (cast_expression "(bool)uVar10" ( (type_descriptor "bool" primitive_type) ) identifier)) )) (goto_statement "goto LAB_001ad012;" goto statement_identifier ;)) (expression_statement "local_78[0] = local_68;" (assignment_expression "local_78[0] = local_68" (subscript_expression "local_78[0]" identifier [ number_literal ]) = identifier) ;) comment (expression_statement "FUN_001665c0(local_78,local_b0,(byte *)((long)local_b0 + local_a0));" (call_expression "FUN_001665c0(local_78,local_b0,(byte *)((long)local_b0 + local_a0))" identifier (argument_list "(local_78,local_b0,(byte *)((long)local_b0 + local_a0))" ( identifier , identifier , (cast_expression "(byte *)((long)local_b0 + local_a0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_b0 + local_a0)" ( (binary_expression "(long)local_b0 + local_a0" (cast_expression "(long)local_b0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) ))) ;) comment (expression_statement "FUN_001ab710(&local_58,local_78);" (call_expression "FUN_001ab710(&local_58,local_78)" identifier (argument_list "(&local_58,local_78)" ( (pointer_expression "&local_58" & identifier) , identifier ))) ;) (expression_statement "uVar2 = local_88[0];" (assignment_expression "uVar2 = local_88[0]" identifier = (subscript_expression "local_88[0]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = local_98;" (assignment_expression "puVar5 = local_98" identifier = identifier) ;) (if_statement "if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }\n    *(byte *)((long)local_98 + local_50) = 0;\n    local_90 = local_50;\n  }\n  else {\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }" if (parenthesized_expression "(local_58 == local_48)" ( (binary_expression "local_58 == local_48" identifier == identifier) )) (compound_statement "{\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }\n    *(byte *)((long)local_98 + local_50) = 0;\n    local_90 = local_50;\n  }" { (if_statement "if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (compound_statement "{\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }" { (if_statement "if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }" if (parenthesized_expression "(local_50 == 1)" ( (binary_expression "local_50 == 1" identifier == number_literal) )) (compound_statement "{\n        *(byte *)local_98 = (byte)local_48[0];\n      }" { (expression_statement "*(byte *)local_98 = (byte)local_48[0];" (assignment_expression "*(byte *)local_98 = (byte)local_48[0]" (pointer_expression "*(byte *)local_98" * (cast_expression "(byte *)local_98" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(byte)local_48[0]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "local_48[0]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        memcpy(local_98,local_58,local_50);\n      }" else (compound_statement "{\n        memcpy(local_98,local_58,local_50);\n      }" { (expression_statement "memcpy(local_98,local_58,local_50);" (call_expression "memcpy(local_98,local_58,local_50)" identifier (argument_list "(local_98,local_58,local_50)" ( identifier , identifier , identifier ))) ;) }))) })) (expression_statement "*(byte *)((long)local_98 + local_50) = 0;" (assignment_expression "*(byte *)((long)local_98 + local_50) = 0" (pointer_expression "*(byte *)((long)local_98 + local_50)" * (cast_expression "(byte *)((long)local_98 + local_50)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_98 + local_50)" ( (binary_expression "(long)local_98 + local_50" (cast_expression "(long)local_98" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "local_90 = local_50;" (assignment_expression "local_90 = local_50" identifier = identifier) ;) }) (else_clause "else {\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }" else (compound_statement "{\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }" { (if_statement "if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }" if (parenthesized_expression "(local_98 != local_88)" ( (binary_expression "local_98 != local_88" identifier != identifier) )) (compound_statement "{\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }" { (expression_statement "local_98 = local_58;" (assignment_expression "local_98 = local_58" identifier = identifier) ;) (expression_statement "local_90 = local_50;" (assignment_expression "local_90 = local_50" identifier = identifier) ;) (expression_statement "local_88[0] = local_48[0];" (assignment_expression "local_88[0] = local_48[0]" (subscript_expression "local_88[0]" identifier [ number_literal ]) = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) (if_statement "if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }" if (parenthesized_expression "(puVar5 != (ulong *)0x0)" ( (binary_expression "puVar5 != (ulong *)0x0" identifier != (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }" { (expression_statement "local_58 = puVar5;" (assignment_expression "local_58 = puVar5" identifier = identifier) ;) (expression_statement "local_48[0] = uVar2;" (assignment_expression "local_48[0] = uVar2" (subscript_expression "local_48[0]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_001ad26b;" goto statement_identifier ;) })) })) (expression_statement "local_88[0] = local_48[0];" (assignment_expression "local_88[0] = local_48[0]" (subscript_expression "local_88[0]" identifier [ number_literal ]) = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) (expression_statement "local_90 = local_50;" (assignment_expression "local_90 = local_50" identifier = identifier) ;) (expression_statement "local_98 = local_58;" (assignment_expression "local_98 = local_58" identifier = identifier) ;) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) }))) (labeled_statement "LAB_001ad26b:\n  local_50 = 0;" statement_identifier : (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;)) (expression_statement "*(byte *)local_58 = 0;" (assignment_expression "*(byte *)local_58 = 0" (pointer_expression "*(byte *)local_58" * (cast_expression "(byte *)local_58" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if (local_58 != local_48) {\n    FUN_002dac70();\n  }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n    FUN_002dac70();\n  }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_78[0] != local_68) {\n    FUN_002dac70();\n  }" if (parenthesized_expression "(local_78[0] != local_68)" ( (binary_expression "local_78[0] != local_68" (subscript_expression "local_78[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    FUN_002dac70();\n  }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_b0 = local_98;" (assignment_expression "local_b0 = local_98" identifier = identifier) ;) (expression_statement "local_a0 = local_90;" (assignment_expression "local_a0 = local_90" identifier = identifier) ;) (labeled_statement "LAB_001ad012:\n  puVar5 = local_b0;" statement_identifier : (expression_statement "puVar5 = local_b0;" (assignment_expression "puVar5 = local_b0" identifier = identifier) ;)) (if_statement "if ((param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */\n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }\n  }" if (parenthesized_expression "((param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0'))" ( (binary_expression "(param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')" (parenthesized_expression "(param_6 != '\0')" ( (binary_expression "param_6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')" ( (binary_expression "*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0'" (pointer_expression "*(char *)(*(long *)(param_1 + 8) + 0x148)" * (cast_expression "(char *)(*(long *)(param_1 + 8) + 0x148)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 8) + 0x148)" ( (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */\n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }\n  }" { (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" { comment (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */\n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }" if (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0')" ( (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */\n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }" { (expression_statement "plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);" (assignment_expression "plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18)" identifier = (pointer_expression "*(long **)(PTR_DAT_0043e6b0 + 0x18)" * (cast_expression "(long **)(PTR_DAT_0043e6b0 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x18)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (plVar4 == (long *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }" if (parenthesized_expression "(plVar4 == (long *)0x0)" ( (binary_expression "plVar4 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }" { comment comment (expression_statement "FUN_0017c650("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) comment (if_statement "if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }" if (parenthesized_expression "((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0))" ( (binary_expression "(*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)" (parenthesized_expression "(*(code **)(*plVar4 + 0x110) == FUN_001b0f60)" ( (binary_expression "*(code **)(*plVar4 + 0x110) == FUN_001b0f60" (pointer_expression "*(code **)(*plVar4 + 0x110)" * (cast_expression "(code **)(*plVar4 + 0x110)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x110)" ( (binary_expression "*plVar4 + 0x110" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == identifier) )) || (parenthesized_expression "(puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)" ( (comma_expression "puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0" (assignment_expression "puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0)" identifier = (cast_expression "(ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0)" (parenthesized_expression "(**(code **)(*plVar4 + 0x110))" ( (pointer_expression "**(code **)(*plVar4 + 0x110)" * (pointer_expression "*(code **)(*plVar4 + 0x110)" * (cast_expression "(code **)(*plVar4 + 0x110)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x110)" ( (binary_expression "*plVar4 + 0x110" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(plVar4,param_2,local_b0,&local_a0)" ( identifier , identifier , identifier , (pointer_expression "&local_a0" & identifier) ))))) , (binary_expression "puVar5 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }" { (expression_statement "puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);" (assignment_expression "puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0)" identifier = (cast_expression "(ulong *)FUN_001a6e90(param_2,local_b0,&local_a0)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001a6e90(param_2,local_b0,&local_a0)" identifier (argument_list "(param_2,local_b0,&local_a0)" ( identifier , identifier , (pointer_expression "&local_a0" & identifier) ))))) ;) })) })) })) (expression_statement "local_b0 = puVar5;" (assignment_expression "local_b0 = puVar5" identifier = identifier) ;) comment (expression_statement "uVar3 = FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78);" (assignment_expression "uVar3 = FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78)" identifier = (call_expression "FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78)" identifier (argument_list "(param_1 + 0x10,local_b0,local_a0,1,local_78)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , identifier , identifier , number_literal , identifier )))) ;) (expression_statement "plVar4 = (long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8);" (assignment_expression "plVar4 = (long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8)" identifier = (cast_expression "(long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8)" identifier (argument_list "(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8)" ( identifier , identifier , (subscript_expression "local_78[0]" identifier [ number_literal ]) , identifier , identifier , identifier , identifier ))))) ;) (if_statement "if (local_98 != local_88) {\n    FUN_002dac70();\n  }" if (parenthesized_expression "(local_98 != local_88)" ( (binary_expression "local_98 != local_88" identifier != identifier) )) (compound_statement "{\n    FUN_002dac70();\n  }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return plVar4;" return identifier ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: Output_section * choose_output_section(Layout * this, Relobj * relobj,\n   char * name, Elf_Word type, Elf_Xword flags, bool is_input_section, Output_section_order order,\n   bool is_relro, bool is_reloc, bool match_input_spec) */\n\nOutput_section * __thiscall\ngold::Layout::choose_output_section\n          (Layout *this,Relobj *relobj,char *name,Elf_Word type,Elf_Xword flags,\n          bool is_input_section,Output_section_order order,bool is_relro,bool is_reloc,\n          bool match_input_spec)\n\n{\n  bool bVar1;\n  Target *pTVar2;\n  Errors *this_00;\n  _Alloc_hider _Var3;\n  undefined8 uVar4;\n  char *pcVar5;\n  Output_section *pOVar6;\n  byte *pbVar7;\n  long lVar8;\n  pointer file_name;\n  byte *pbVar9;\n  uint uVar10;\n  undefined1 uVar11;\n  undefined1 uVar12;\n  byte bVar13;\n  undefined8 uStack_d0;\n  byte *local_b0;\n  size_t len;\n  string uncompressed_name;\n  Section_type script_section_type;\n  char local_68 [16];\n  Output_section **output_section_slot;\n  size_t local_50;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  local_48;\n  Elf_Xword flags_00;\n  \n  bVar13 = 0;\n  if ((is_input_section) && (this->sections_are_attached_ != false)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }\n  if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    Target::abi_pagesize((Target *)this);\n  }\n  uVar10 = (uint)flags & 0xfffff50f;\n  if ((parameters->options_->relocatable_).value != false) {\n    uVar10 = (uint)flags & 0xfffff58f;\n  }\n  flags_00 = (Elf_Xword)uVar10;\n  bVar1 = (this->script_options_->script_sections_).saw_sections_clause_;\n  uVar11 = bVar1 == false;\n  uVar12 = bVar1 == true;\n  local_b0 = (byte *)name;\n  if ((bool)uVar12) {\n    uVar11 = false;\n    uVar12 = !is_reloc;\n    if ((bool)uVar12) {\n      file_name = (char *)0x0;\n      if (relobj != (Relobj *)0x0) {\n        file_name = (relobj->super_Object).name_._M_dataplus._M_p;\n      }\n      local_b0 = (byte *)Script_sections::output_section_name\n                                   (&this->script_options_->script_sections_,file_name,name,\n                                    &output_section_slot,&script_section_type,\n                                    (bool *)&uncompressed_name,match_input_spec);\n      if (local_b0 == (byte *)0x0) {\n        if (parameters->options_ == (General_options *)0x0) {\n          return (Output_section *)0x0;\n        }\n        if ((parameters->debug_ & 2) == 0) {\n          return (Output_section *)0x0;\n        }\n        this_00 = parameters->errors_;\n        pcVar5 = (char *)gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                                 ,uStack_d0);\n        Errors::debug(this_00,pcVar5,name);\n        return (Output_section *)0x0;\n      }\n      if (script_section_type != ST_NONE) {\n        if (script_section_type != ST_NOLOAD) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        flags_00 = (Elf_Xword)(uVar10 & 2);\n      }\n      uVar11 = false;\n      uVar12 = output_section_slot == (Output_section **)0x0;\n      if (!(bool)uVar12) {\n        if (*output_section_slot != (Output_section *)0x0) {\n          Output_section::update_flags_for_input_section(*output_section_slot,flags_00);\n          return *output_section_slot;\n        }\n        pcVar5 = Stringpool_template<char>::add(&this->namepool_,(char *)local_b0,false,(Key *)0x0);\n        pOVar6 = make_output_section(this,pcVar5,type,flags_00,order,is_relro);\n        pOVar6->field_0xc8 = pOVar6->field_0xc8 | 0x40;\n        if (((script_section_type == ST_NOLOAD) &&\n            (pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0)) &&\n           (bVar13 = (pOVar6->super_Output_data).field_0x20, (bVar13 & 1) != 0)) {\n          if ((((pOVar6->super_Output_data).address_ != 0) || ((bVar13 & 4) != 0)) ||\n             ((bVar13 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xfa;\n          if ((bVar13 & 8) == 0) {\n            (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xf8;\n          }\n          (*(pOVar6->super_Output_data)._vptr_Output_data[0xf])(pOVar6);\n        }\n        *output_section_slot = pOVar6;\n        return pOVar6;\n      }\n    }\n  }\n  len = strlen((char *)local_b0);\n  uncompressed_name._M_dataplus._M_p = (pointer)&uncompressed_name.field_2;\n  uncompressed_name.field_2._M_allocated_capacity =\n       uncompressed_name.field_2._M_allocated_capacity & 0xffffffffffffff00;\n  lVar8 = 7;\n  uncompressed_name._M_string_length = 0;\n  pbVar7 = (byte *)".zdebug";\n  pbVar9 = local_b0;\n  do {\n    if (lVar8 == 0) break;\n    lVar8 = lVar8 + -1;\n    uVar11 = *pbVar7 < *pbVar9;\n    uVar12 = *pbVar7 == *pbVar9;\n    pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n  } while ((bool)uVar12);\n  if ((!(bool)uVar11 && !(bool)uVar12) != (bool)uVar11) goto LAB_001ad012;\n  _script_section_type = local_68;\n                    /* try { // try from 001ad1f1 to 001ad1f5 has its CatchHandler @ 001ad503 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>\n            ((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n             &script_section_type,local_b0,local_b0 + len);\n                    /* try { // try from 001ad20b to 001ad20f has its CatchHandler @ 001ad4fb */\n  corresponding_uncompressed_section_name\n            ((string *)&output_section_slot,\n             (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n             &script_section_type);\n  uVar4 = uncompressed_name.field_2._M_allocated_capacity;\n  _Var3 = uncompressed_name._M_dataplus;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)output_section_slot == &local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *uncompressed_name._M_dataplus._M_p = local_48._M_local_buf[0];\n      }\n      else {\n        memcpy(uncompressed_name._M_dataplus._M_p,output_section_slot,local_50);\n      }\n    }\n    uncompressed_name._M_dataplus._M_p[local_50] = '\0';\n    uncompressed_name._M_string_length = local_50;\n  }\n  else {\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2) {\n      uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot;\n      uncompressed_name._M_string_length = local_50;\n      uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity;\n      if (_Var3._M_p != (pointer)0x0) {\n        output_section_slot = (Output_section **)_Var3._M_p;\n        local_48._M_allocated_capacity = uVar4;\n        goto LAB_001ad26b;\n      }\n    }\n    uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity;\n    uncompressed_name._M_string_length = local_50;\n    uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot;\n    output_section_slot = (Output_section **)&local_48;\n  }\nLAB_001ad26b:\n  local_50 = 0;\n  *(undefined1 *)output_section_slot = 0;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)output_section_slot != &local_48) {\n    operator_delete(output_section_slot);\n  }\n  if (_script_section_type != local_68) {\n    operator_delete(_script_section_type);\n  }\n  local_b0 = (byte *)uncompressed_name._M_dataplus._M_p;\n  len = uncompressed_name._M_string_length;\nLAB_001ad012:\n  pbVar7 = local_b0;\n  if ((is_input_section) &&\n     ((this->script_options_->script_sections_).saw_sections_clause_ == false)) {\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    if ((parameters->options_->relocatable_).value == false) {\n      pTVar2 = parameters->target_;\n      if (pTVar2 == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }\n                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */\n      if ((*(code **)(*(long *)pTVar2 + 0x110) == Target::do_output_section_name) ||\n         (pbVar7 = (byte *)(**(code **)(*(long *)pTVar2 + 0x110))(pTVar2,relobj,local_b0,&len),\n         pbVar7 == (byte *)0x0)) {\n        pbVar7 = (byte *)output_section_name(relobj,(char *)local_b0,&len);\n      }\n    }\n  }\n  local_b0 = pbVar7;\n                    /* try { // try from 001ad045 to 001ad124 has its CatchHandler @ 001ad503 */\n  pcVar5 = Stringpool_template<char>::add_with_length\n                     (&this->namepool_,(char *)local_b0,len,true,(Key *)&script_section_type);\n  pOVar6 = get_output_section(this,pcVar5,(Key)_script_section_type,type,flags_00,order,is_relro);\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2) {\n    operator_delete(uncompressed_name._M_dataplus._M_p);\n  }\n  return pOVar6;\n}\n\n" comment comment (ERROR "Output_section * __thiscall\ngold::Layout::choose_output_section\n          (Layout *this,Relobj *relobj,char *name,Elf_Word type,Elf_Xword flags,\n          bool is_input_section,Output_section_order order,bool is_relro,bool is_reloc,\n          bool match_input_spec)" (binary_expression "Output_section * __thiscall\ngold::Layout::choose_output_section\n          (Layout *this,Relobj *relobj,char *name,Elf_Word type,Elf_Xword flags,\n          bool is_input_section,Output_section_order order,bool is_relro,bool is_reloc,\n          bool match_input_spec)" identifier * (call_expression "__thiscall\ngold::Layout::choose_output_section\n          (Layout *this,Relobj *relobj,char *name,Elf_Word type,Elf_Xword flags,\n          bool is_input_section,Output_section_order order,bool is_relro,bool is_reloc,\n          bool match_input_spec)" identifier (ERROR "gold::Layout::choose_output_section" identifier : : identifier : : identifier) (argument_list "(Layout *this,Relobj *relobj,char *name,Elf_Word type,Elf_Xword flags,\n          bool is_input_section,Output_section_order order,bool is_relro,bool is_reloc,\n          bool match_input_spec)" ( (binary_expression "Layout *this" identifier * identifier) , (binary_expression "Relobj *relobj" identifier * identifier) , (binary_expression "char *name" identifier * identifier) , identifier (ERROR "type" identifier) , identifier (ERROR "flags" identifier) , (ERROR "bool" identifier) identifier , identifier (ERROR "order" identifier) , (ERROR "bool" identifier) identifier , (ERROR "bool" identifier) identifier , (ERROR "bool" identifier) identifier ))))) (compound_statement "{\n  bool bVar1;\n  Target *pTVar2;\n  Errors *this_00;\n  _Alloc_hider _Var3;\n  undefined8 uVar4;\n  char *pcVar5;\n  Output_section *pOVar6;\n  byte *pbVar7;\n  long lVar8;\n  pointer file_name;\n  byte *pbVar9;\n  uint uVar10;\n  undefined1 uVar11;\n  undefined1 uVar12;\n  byte bVar13;\n  undefined8 uStack_d0;\n  byte *local_b0;\n  size_t len;\n  string uncompressed_name;\n  Section_type script_section_type;\n  char local_68 [16];\n  Output_section **output_section_slot;\n  size_t local_50;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  local_48;\n  Elf_Xword flags_00;\n  \n  bVar13 = 0;\n  if ((is_input_section) && (this->sections_are_attached_ != false)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }\n  if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    Target::abi_pagesize((Target *)this);\n  }\n  uVar10 = (uint)flags & 0xfffff50f;\n  if ((parameters->options_->relocatable_).value != false) {\n    uVar10 = (uint)flags & 0xfffff58f;\n  }\n  flags_00 = (Elf_Xword)uVar10;\n  bVar1 = (this->script_options_->script_sections_).saw_sections_clause_;\n  uVar11 = bVar1 == false;\n  uVar12 = bVar1 == true;\n  local_b0 = (byte *)name;\n  if ((bool)uVar12) {\n    uVar11 = false;\n    uVar12 = !is_reloc;\n    if ((bool)uVar12) {\n      file_name = (char *)0x0;\n      if (relobj != (Relobj *)0x0) {\n        file_name = (relobj->super_Object).name_._M_dataplus._M_p;\n      }\n      local_b0 = (byte *)Script_sections::output_section_name\n                                   (&this->script_options_->script_sections_,file_name,name,\n                                    &output_section_slot,&script_section_type,\n                                    (bool *)&uncompressed_name,match_input_spec);\n      if (local_b0 == (byte *)0x0) {\n        if (parameters->options_ == (General_options *)0x0) {\n          return (Output_section *)0x0;\n        }\n        if ((parameters->debug_ & 2) == 0) {\n          return (Output_section *)0x0;\n        }\n        this_00 = parameters->errors_;\n        pcVar5 = (char *)gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                                 ,uStack_d0);\n        Errors::debug(this_00,pcVar5,name);\n        return (Output_section *)0x0;\n      }\n      if (script_section_type != ST_NONE) {\n        if (script_section_type != ST_NOLOAD) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        flags_00 = (Elf_Xword)(uVar10 & 2);\n      }\n      uVar11 = false;\n      uVar12 = output_section_slot == (Output_section **)0x0;\n      if (!(bool)uVar12) {\n        if (*output_section_slot != (Output_section *)0x0) {\n          Output_section::update_flags_for_input_section(*output_section_slot,flags_00);\n          return *output_section_slot;\n        }\n        pcVar5 = Stringpool_template<char>::add(&this->namepool_,(char *)local_b0,false,(Key *)0x0);\n        pOVar6 = make_output_section(this,pcVar5,type,flags_00,order,is_relro);\n        pOVar6->field_0xc8 = pOVar6->field_0xc8 | 0x40;\n        if (((script_section_type == ST_NOLOAD) &&\n            (pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0)) &&\n           (bVar13 = (pOVar6->super_Output_data).field_0x20, (bVar13 & 1) != 0)) {\n          if ((((pOVar6->super_Output_data).address_ != 0) || ((bVar13 & 4) != 0)) ||\n             ((bVar13 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xfa;\n          if ((bVar13 & 8) == 0) {\n            (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xf8;\n          }\n          (*(pOVar6->super_Output_data)._vptr_Output_data[0xf])(pOVar6);\n        }\n        *output_section_slot = pOVar6;\n        return pOVar6;\n      }\n    }\n  }\n  len = strlen((char *)local_b0);\n  uncompressed_name._M_dataplus._M_p = (pointer)&uncompressed_name.field_2;\n  uncompressed_name.field_2._M_allocated_capacity =\n       uncompressed_name.field_2._M_allocated_capacity & 0xffffffffffffff00;\n  lVar8 = 7;\n  uncompressed_name._M_string_length = 0;\n  pbVar7 = (byte *)".zdebug";\n  pbVar9 = local_b0;\n  do {\n    if (lVar8 == 0) break;\n    lVar8 = lVar8 + -1;\n    uVar11 = *pbVar7 < *pbVar9;\n    uVar12 = *pbVar7 == *pbVar9;\n    pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n  } while ((bool)uVar12);\n  if ((!(bool)uVar11 && !(bool)uVar12) != (bool)uVar11) goto LAB_001ad012;\n  _script_section_type = local_68;\n                    /* try { // try from 001ad1f1 to 001ad1f5 has its CatchHandler @ 001ad503 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>\n            ((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n             &script_section_type,local_b0,local_b0 + len);\n                    /* try { // try from 001ad20b to 001ad20f has its CatchHandler @ 001ad4fb */\n  corresponding_uncompressed_section_name\n            ((string *)&output_section_slot,\n             (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n             &script_section_type);\n  uVar4 = uncompressed_name.field_2._M_allocated_capacity;\n  _Var3 = uncompressed_name._M_dataplus;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)output_section_slot == &local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *uncompressed_name._M_dataplus._M_p = local_48._M_local_buf[0];\n      }\n      else {\n        memcpy(uncompressed_name._M_dataplus._M_p,output_section_slot,local_50);\n      }\n    }\n    uncompressed_name._M_dataplus._M_p[local_50] = '\0';\n    uncompressed_name._M_string_length = local_50;\n  }\n  else {\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2) {\n      uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot;\n      uncompressed_name._M_string_length = local_50;\n      uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity;\n      if (_Var3._M_p != (pointer)0x0) {\n        output_section_slot = (Output_section **)_Var3._M_p;\n        local_48._M_allocated_capacity = uVar4;\n        goto LAB_001ad26b;\n      }\n    }\n    uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity;\n    uncompressed_name._M_string_length = local_50;\n    uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot;\n    output_section_slot = (Output_section **)&local_48;\n  }\nLAB_001ad26b:\n  local_50 = 0;\n  *(undefined1 *)output_section_slot = 0;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)output_section_slot != &local_48) {\n    operator_delete(output_section_slot);\n  }\n  if (_script_section_type != local_68) {\n    operator_delete(_script_section_type);\n  }\n  local_b0 = (byte *)uncompressed_name._M_dataplus._M_p;\n  len = uncompressed_name._M_string_length;\nLAB_001ad012:\n  pbVar7 = local_b0;\n  if ((is_input_section) &&\n     ((this->script_options_->script_sections_).saw_sections_clause_ == false)) {\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    if ((parameters->options_->relocatable_).value == false) {\n      pTVar2 = parameters->target_;\n      if (pTVar2 == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }\n                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */\n      if ((*(code **)(*(long *)pTVar2 + 0x110) == Target::do_output_section_name) ||\n         (pbVar7 = (byte *)(**(code **)(*(long *)pTVar2 + 0x110))(pTVar2,relobj,local_b0,&len),\n         pbVar7 == (byte *)0x0)) {\n        pbVar7 = (byte *)output_section_name(relobj,(char *)local_b0,&len);\n      }\n    }\n  }\n  local_b0 = pbVar7;\n                    /* try { // try from 001ad045 to 001ad124 has its CatchHandler @ 001ad503 */\n  pcVar5 = Stringpool_template<char>::add_with_length\n                     (&this->namepool_,(char *)local_b0,len,true,(Key *)&script_section_type);\n  pOVar6 = get_output_section(this,pcVar5,(Key)_script_section_type,type,flags_00,order,is_relro);\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2) {\n    operator_delete(uncompressed_name._M_dataplus._M_p);\n  }\n  return pOVar6;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "Target *pTVar2;" type_identifier (pointer_declarator "*pTVar2" * identifier) ;) (declaration "Errors *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "_Alloc_hider _Var3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "Output_section *pOVar6;" type_identifier (pointer_declarator "*pOVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "pointer file_name;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined1 uVar11;" type_identifier identifier ;) (declaration "undefined1 uVar12;" type_identifier identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "undefined8 uStack_d0;" type_identifier identifier ;) (declaration "byte *local_b0;" type_identifier (pointer_declarator "*local_b0" * identifier) ;) (declaration "size_t len;" primitive_type identifier ;) (declaration "string uncompressed_name;" type_identifier identifier ;) (declaration "Section_type script_section_type;" type_identifier identifier ;) (declaration "char local_68 [16];" primitive_type (array_declarator "local_68 [16]" identifier [ number_literal ]) ;) (declaration "Output_section **output_section_slot;" type_identifier (pointer_declarator "**output_section_slot" * (pointer_declarator "*output_section_slot" * identifier)) ;) (declaration "size_t local_50;" primitive_type identifier ;) (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_>_9\n  local_48;" (binary_expression "allocator<char>_>_9\n  local_48" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "_9" identifier) identifier) ;) (declaration "Elf_Xword flags_00;" type_identifier identifier ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (if_statement "if ((is_input_section) && (this->sections_are_attached_ != false)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }" if (parenthesized_expression "((is_input_section) && (this->sections_are_attached_ != false))" ( (binary_expression "(is_input_section) && (this->sections_are_attached_ != false)" (parenthesized_expression "(is_input_section)" ( identifier )) && (parenthesized_expression "(this->sections_are_attached_ != false)" ( (binary_expression "this->sections_are_attached_ != false" (field_expression "this->sections_are_attached_" identifier -> field_identifier) != false) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/layout.cc",0x3b8,"choose_output_section");" (call_expression "do_gold_unreachable("../../gold/layout.cc",0x3b8,"choose_output_section")" identifier (argument_list "("../../gold/layout.cc",0x3b8,"choose_output_section")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""choose_output_section"" " string_content ") ))) ;) })) (if_statement "if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    Target::abi_pagesize((Target *)this);\n  }" if (parenthesized_expression "(parameters->options_ == (General_options *)0x0)" ( (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    Target::abi_pagesize((Target *)this);\n  }" { comment (labeled_statement "Target::abi_pagesize((Target *)this);" statement_identifier : (ERROR ":" :) (expression_statement "abi_pagesize((Target *)this);" (call_expression "abi_pagesize((Target *)this)" identifier (argument_list "((Target *)this)" ( (cast_expression "(Target *)this" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) })) (expression_statement "uVar10 = (uint)flags & 0xfffff50f;" (assignment_expression "uVar10 = (uint)flags & 0xfffff50f" identifier = (binary_expression "(uint)flags & 0xfffff50f" (cast_expression "(uint)flags" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if ((parameters->options_->relocatable_).value != false) {\n    uVar10 = (uint)flags & 0xfffff58f;\n  }" if (parenthesized_expression "((parameters->options_->relocatable_).value != false)" ( (binary_expression "(parameters->options_->relocatable_).value != false" (field_expression "(parameters->options_->relocatable_).value" (parenthesized_expression "(parameters->options_->relocatable_)" ( (field_expression "parameters->options_->relocatable_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\n    uVar10 = (uint)flags & 0xfffff58f;\n  }" { (expression_statement "uVar10 = (uint)flags & 0xfffff58f;" (assignment_expression "uVar10 = (uint)flags & 0xfffff58f" identifier = (binary_expression "(uint)flags & 0xfffff58f" (cast_expression "(uint)flags" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) })) (expression_statement "flags_00 = (Elf_Xword)uVar10;" (assignment_expression "flags_00 = (Elf_Xword)uVar10" identifier = (cast_expression "(Elf_Xword)uVar10" ( (type_descriptor "Elf_Xword" type_identifier) ) identifier)) ;) (expression_statement "bVar1 = (this->script_options_->script_sections_).saw_sections_clause_;" (assignment_expression "bVar1 = (this->script_options_->script_sections_).saw_sections_clause_" identifier = (field_expression "(this->script_options_->script_sections_).saw_sections_clause_" (parenthesized_expression "(this->script_options_->script_sections_)" ( (field_expression "this->script_options_->script_sections_" (field_expression "this->script_options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar11 = bVar1 == false;" (assignment_expression "uVar11 = bVar1 == false" identifier = (binary_expression "bVar1 == false" identifier == false)) ;) (expression_statement "uVar12 = bVar1 == true;" (assignment_expression "uVar12 = bVar1 == true" identifier = (binary_expression "bVar1 == true" identifier == true)) ;) (expression_statement "local_b0 = (byte *)name;" (assignment_expression "local_b0 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if ((bool)uVar12) {\n    uVar11 = false;\n    uVar12 = !is_reloc;\n    if ((bool)uVar12) {\n      file_name = (char *)0x0;\n      if (relobj != (Relobj *)0x0) {\n        file_name = (relobj->super_Object).name_._M_dataplus._M_p;\n      }\n      local_b0 = (byte *)Script_sections::output_section_name\n                                   (&this->script_options_->script_sections_,file_name,name,\n                                    &output_section_slot,&script_section_type,\n                                    (bool *)&uncompressed_name,match_input_spec);\n      if (local_b0 == (byte *)0x0) {\n        if (parameters->options_ == (General_options *)0x0) {\n          return (Output_section *)0x0;\n        }\n        if ((parameters->debug_ & 2) == 0) {\n          return (Output_section *)0x0;\n        }\n        this_00 = parameters->errors_;\n        pcVar5 = (char *)gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                                 ,uStack_d0);\n        Errors::debug(this_00,pcVar5,name);\n        return (Output_section *)0x0;\n      }\n      if (script_section_type != ST_NONE) {\n        if (script_section_type != ST_NOLOAD) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        flags_00 = (Elf_Xword)(uVar10 & 2);\n      }\n      uVar11 = false;\n      uVar12 = output_section_slot == (Output_section **)0x0;\n      if (!(bool)uVar12) {\n        if (*output_section_slot != (Output_section *)0x0) {\n          Output_section::update_flags_for_input_section(*output_section_slot,flags_00);\n          return *output_section_slot;\n        }\n        pcVar5 = Stringpool_template<char>::add(&this->namepool_,(char *)local_b0,false,(Key *)0x0);\n        pOVar6 = make_output_section(this,pcVar5,type,flags_00,order,is_relro);\n        pOVar6->field_0xc8 = pOVar6->field_0xc8 | 0x40;\n        if (((script_section_type == ST_NOLOAD) &&\n            (pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0)) &&\n           (bVar13 = (pOVar6->super_Output_data).field_0x20, (bVar13 & 1) != 0)) {\n          if ((((pOVar6->super_Output_data).address_ != 0) || ((bVar13 & 4) != 0)) ||\n             ((bVar13 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xfa;\n          if ((bVar13 & 8) == 0) {\n            (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xf8;\n          }\n          (*(pOVar6->super_Output_data)._vptr_Output_data[0xf])(pOVar6);\n        }\n        *output_section_slot = pOVar6;\n        return pOVar6;\n      }\n    }\n  }" if (parenthesized_expression "((bool)uVar12)" ( (cast_expression "(bool)uVar12" ( (type_descriptor "bool" primitive_type) ) identifier) )) (compound_statement "{\n    uVar11 = false;\n    uVar12 = !is_reloc;\n    if ((bool)uVar12) {\n      file_name = (char *)0x0;\n      if (relobj != (Relobj *)0x0) {\n        file_name = (relobj->super_Object).name_._M_dataplus._M_p;\n      }\n      local_b0 = (byte *)Script_sections::output_section_name\n                                   (&this->script_options_->script_sections_,file_name,name,\n                                    &output_section_slot,&script_section_type,\n                                    (bool *)&uncompressed_name,match_input_spec);\n      if (local_b0 == (byte *)0x0) {\n        if (parameters->options_ == (General_options *)0x0) {\n          return (Output_section *)0x0;\n        }\n        if ((parameters->debug_ & 2) == 0) {\n          return (Output_section *)0x0;\n        }\n        this_00 = parameters->errors_;\n        pcVar5 = (char *)gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                                 ,uStack_d0);\n        Errors::debug(this_00,pcVar5,name);\n        return (Output_section *)0x0;\n      }\n      if (script_section_type != ST_NONE) {\n        if (script_section_type != ST_NOLOAD) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        flags_00 = (Elf_Xword)(uVar10 & 2);\n      }\n      uVar11 = false;\n      uVar12 = output_section_slot == (Output_section **)0x0;\n      if (!(bool)uVar12) {\n        if (*output_section_slot != (Output_section *)0x0) {\n          Output_section::update_flags_for_input_section(*output_section_slot,flags_00);\n          return *output_section_slot;\n        }\n        pcVar5 = Stringpool_template<char>::add(&this->namepool_,(char *)local_b0,false,(Key *)0x0);\n        pOVar6 = make_output_section(this,pcVar5,type,flags_00,order,is_relro);\n        pOVar6->field_0xc8 = pOVar6->field_0xc8 | 0x40;\n        if (((script_section_type == ST_NOLOAD) &&\n            (pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0)) &&\n           (bVar13 = (pOVar6->super_Output_data).field_0x20, (bVar13 & 1) != 0)) {\n          if ((((pOVar6->super_Output_data).address_ != 0) || ((bVar13 & 4) != 0)) ||\n             ((bVar13 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xfa;\n          if ((bVar13 & 8) == 0) {\n            (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xf8;\n          }\n          (*(pOVar6->super_Output_data)._vptr_Output_data[0xf])(pOVar6);\n        }\n        *output_section_slot = pOVar6;\n        return pOVar6;\n      }\n    }\n  }" { (expression_statement "uVar11 = false;" (assignment_expression "uVar11 = false" identifier = false) ;) (expression_statement "uVar12 = !is_reloc;" (assignment_expression "uVar12 = !is_reloc" identifier = (unary_expression "!is_reloc" ! identifier)) ;) (if_statement "if ((bool)uVar12) {\n      file_name = (char *)0x0;\n      if (relobj != (Relobj *)0x0) {\n        file_name = (relobj->super_Object).name_._M_dataplus._M_p;\n      }\n      local_b0 = (byte *)Script_sections::output_section_name\n                                   (&this->script_options_->script_sections_,file_name,name,\n                                    &output_section_slot,&script_section_type,\n                                    (bool *)&uncompressed_name,match_input_spec);\n      if (local_b0 == (byte *)0x0) {\n        if (parameters->options_ == (General_options *)0x0) {\n          return (Output_section *)0x0;\n        }\n        if ((parameters->debug_ & 2) == 0) {\n          return (Output_section *)0x0;\n        }\n        this_00 = parameters->errors_;\n        pcVar5 = (char *)gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                                 ,uStack_d0);\n        Errors::debug(this_00,pcVar5,name);\n        return (Output_section *)0x0;\n      }\n      if (script_section_type != ST_NONE) {\n        if (script_section_type != ST_NOLOAD) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        flags_00 = (Elf_Xword)(uVar10 & 2);\n      }\n      uVar11 = false;\n      uVar12 = output_section_slot == (Output_section **)0x0;\n      if (!(bool)uVar12) {\n        if (*output_section_slot != (Output_section *)0x0) {\n          Output_section::update_flags_for_input_section(*output_section_slot,flags_00);\n          return *output_section_slot;\n        }\n        pcVar5 = Stringpool_template<char>::add(&this->namepool_,(char *)local_b0,false,(Key *)0x0);\n        pOVar6 = make_output_section(this,pcVar5,type,flags_00,order,is_relro);\n        pOVar6->field_0xc8 = pOVar6->field_0xc8 | 0x40;\n        if (((script_section_type == ST_NOLOAD) &&\n            (pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0)) &&\n           (bVar13 = (pOVar6->super_Output_data).field_0x20, (bVar13 & 1) != 0)) {\n          if ((((pOVar6->super_Output_data).address_ != 0) || ((bVar13 & 4) != 0)) ||\n             ((bVar13 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xfa;\n          if ((bVar13 & 8) == 0) {\n            (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xf8;\n          }\n          (*(pOVar6->super_Output_data)._vptr_Output_data[0xf])(pOVar6);\n        }\n        *output_section_slot = pOVar6;\n        return pOVar6;\n      }\n    }" if (parenthesized_expression "((bool)uVar12)" ( (cast_expression "(bool)uVar12" ( (type_descriptor "bool" primitive_type) ) identifier) )) (compound_statement "{\n      file_name = (char *)0x0;\n      if (relobj != (Relobj *)0x0) {\n        file_name = (relobj->super_Object).name_._M_dataplus._M_p;\n      }\n      local_b0 = (byte *)Script_sections::output_section_name\n                                   (&this->script_options_->script_sections_,file_name,name,\n                                    &output_section_slot,&script_section_type,\n                                    (bool *)&uncompressed_name,match_input_spec);\n      if (local_b0 == (byte *)0x0) {\n        if (parameters->options_ == (General_options *)0x0) {\n          return (Output_section *)0x0;\n        }\n        if ((parameters->debug_ & 2) == 0) {\n          return (Output_section *)0x0;\n        }\n        this_00 = parameters->errors_;\n        pcVar5 = (char *)gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                                 ,uStack_d0);\n        Errors::debug(this_00,pcVar5,name);\n        return (Output_section *)0x0;\n      }\n      if (script_section_type != ST_NONE) {\n        if (script_section_type != ST_NOLOAD) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        flags_00 = (Elf_Xword)(uVar10 & 2);\n      }\n      uVar11 = false;\n      uVar12 = output_section_slot == (Output_section **)0x0;\n      if (!(bool)uVar12) {\n        if (*output_section_slot != (Output_section *)0x0) {\n          Output_section::update_flags_for_input_section(*output_section_slot,flags_00);\n          return *output_section_slot;\n        }\n        pcVar5 = Stringpool_template<char>::add(&this->namepool_,(char *)local_b0,false,(Key *)0x0);\n        pOVar6 = make_output_section(this,pcVar5,type,flags_00,order,is_relro);\n        pOVar6->field_0xc8 = pOVar6->field_0xc8 | 0x40;\n        if (((script_section_type == ST_NOLOAD) &&\n            (pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0)) &&\n           (bVar13 = (pOVar6->super_Output_data).field_0x20, (bVar13 & 1) != 0)) {\n          if ((((pOVar6->super_Output_data).address_ != 0) || ((bVar13 & 4) != 0)) ||\n             ((bVar13 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xfa;\n          if ((bVar13 & 8) == 0) {\n            (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xf8;\n          }\n          (*(pOVar6->super_Output_data)._vptr_Output_data[0xf])(pOVar6);\n        }\n        *output_section_slot = pOVar6;\n        return pOVar6;\n      }\n    }" { (expression_statement "file_name = (char *)0x0;" (assignment_expression "file_name = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (relobj != (Relobj *)0x0) {\n        file_name = (relobj->super_Object).name_._M_dataplus._M_p;\n      }" if (parenthesized_expression "(relobj != (Relobj *)0x0)" ( (binary_expression "relobj != (Relobj *)0x0" identifier != (cast_expression "(Relobj *)0x0" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        file_name = (relobj->super_Object).name_._M_dataplus._M_p;\n      }" { (expression_statement "file_name = (relobj->super_Object).name_._M_dataplus._M_p;" (assignment_expression "file_name = (relobj->super_Object).name_._M_dataplus._M_p" identifier = (field_expression "(relobj->super_Object).name_._M_dataplus._M_p" (field_expression "(relobj->super_Object).name_._M_dataplus" (field_expression "(relobj->super_Object).name_" (parenthesized_expression "(relobj->super_Object)" ( (field_expression "relobj->super_Object" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) })) (ERROR "local_b0 = (byte *)Script_sections::" (assignment_expression "local_b0 = (byte *)Script_sections" identifier = (cast_expression "(byte *)Script_sections" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (expression_statement "output_section_name\n                                   (&this->script_options_->script_sections_,file_name,name,\n                                    &output_section_slot,&script_section_type,\n                                    (bool *)&uncompressed_name,match_input_spec);" (call_expression "output_section_name\n                                   (&this->script_options_->script_sections_,file_name,name,\n                                    &output_section_slot,&script_section_type,\n                                    (bool *)&uncompressed_name,match_input_spec)" identifier (argument_list "(&this->script_options_->script_sections_,file_name,name,\n                                    &output_section_slot,&script_section_type,\n                                    (bool *)&uncompressed_name,match_input_spec)" ( (pointer_expression "&this->script_options_->script_sections_" & (field_expression "this->script_options_->script_sections_" (field_expression "this->script_options_" identifier -> field_identifier) -> field_identifier)) , identifier , identifier , (pointer_expression "&output_section_slot" & identifier) , (pointer_expression "&script_section_type" & identifier) , (cast_expression "(bool *)&uncompressed_name" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&uncompressed_name" & identifier)) , identifier ))) ;) (if_statement "if (local_b0 == (byte *)0x0) {\n        if (parameters->options_ == (General_options *)0x0) {\n          return (Output_section *)0x0;\n        }\n        if ((parameters->debug_ & 2) == 0) {\n          return (Output_section *)0x0;\n        }\n        this_00 = parameters->errors_;\n        pcVar5 = (char *)gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                                 ,uStack_d0);\n        Errors::debug(this_00,pcVar5,name);\n        return (Output_section *)0x0;\n      }" if (parenthesized_expression "(local_b0 == (byte *)0x0)" ( (binary_expression "local_b0 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (parameters->options_ == (General_options *)0x0) {\n          return (Output_section *)0x0;\n        }\n        if ((parameters->debug_ & 2) == 0) {\n          return (Output_section *)0x0;\n        }\n        this_00 = parameters->errors_;\n        pcVar5 = (char *)gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                                 ,uStack_d0);\n        Errors::debug(this_00,pcVar5,name);\n        return (Output_section *)0x0;\n      }" { (if_statement "if (parameters->options_ == (General_options *)0x0) {\n          return (Output_section *)0x0;\n        }" if (parenthesized_expression "(parameters->options_ == (General_options *)0x0)" ( (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          return (Output_section *)0x0;\n        }" { (return_statement "return (Output_section *)0x0;" return (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((parameters->debug_ & 2) == 0) {\n          return (Output_section *)0x0;\n        }" if (parenthesized_expression "((parameters->debug_ & 2) == 0)" ( (binary_expression "(parameters->debug_ & 2) == 0" (parenthesized_expression "(parameters->debug_ & 2)" ( (binary_expression "parameters->debug_ & 2" (field_expression "parameters->debug_" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n          return (Output_section *)0x0;\n        }" { (return_statement "return (Output_section *)0x0;" return (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "this_00 = parameters->errors_;" (assignment_expression "this_00 = parameters->errors_" identifier = (field_expression "parameters->errors_" identifier -> field_identifier)) ;) (expression_statement "pcVar5 = (char *)gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                                 ,uStack_d0);" (assignment_expression "pcVar5 = (char *)gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                                 ,uStack_d0)" identifier = (cast_expression "(char *)gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                                 ,uStack_d0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                                 ,uStack_d0)" identifier (argument_list "("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                                 ,uStack_d0)" ( (string_literal ""Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"" " string_content escape_sequence string_content escape_sequence string_content ") , identifier ))))) ;) (labeled_statement "Errors::debug(this_00,pcVar5,name);" statement_identifier : (ERROR ":" :) (expression_statement "debug(this_00,pcVar5,name);" (call_expression "debug(this_00,pcVar5,name)" identifier (argument_list "(this_00,pcVar5,name)" ( identifier , identifier , identifier ))) ;)) (return_statement "return (Output_section *)0x0;" return (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (script_section_type != ST_NONE) {\n        if (script_section_type != ST_NOLOAD) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        flags_00 = (Elf_Xword)(uVar10 & 2);\n      }" if (parenthesized_expression "(script_section_type != ST_NONE)" ( (binary_expression "script_section_type != ST_NONE" identifier != identifier) )) (compound_statement "{\n        if (script_section_type != ST_NOLOAD) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        flags_00 = (Elf_Xword)(uVar10 & 2);\n      }" { (if_statement "if (script_section_type != ST_NOLOAD) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x3de,"choose_output_section");\n        }" if (parenthesized_expression "(script_section_type != ST_NOLOAD)" ( (binary_expression "script_section_type != ST_NOLOAD" identifier != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x3de,"choose_output_section");\n        }" { comment (expression_statement "do_gold_unreachable("../../gold/layout.cc",0x3de,"choose_output_section");" (call_expression "do_gold_unreachable("../../gold/layout.cc",0x3de,"choose_output_section")" identifier (argument_list "("../../gold/layout.cc",0x3de,"choose_output_section")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""choose_output_section"" " string_content ") ))) ;) })) (expression_statement "flags_00 = (Elf_Xword)(uVar10 & 2);" (assignment_expression "flags_00 = (Elf_Xword)(uVar10 & 2)" identifier = (call_expression "(Elf_Xword)(uVar10 & 2)" (parenthesized_expression "(Elf_Xword)" ( identifier )) (argument_list "(uVar10 & 2)" ( (binary_expression "uVar10 & 2" identifier & number_literal) )))) ;) })) (expression_statement "uVar11 = false;" (assignment_expression "uVar11 = false" identifier = false) ;) (expression_statement "uVar12 = output_section_slot == (Output_section **)0x0;" (assignment_expression "uVar12 = output_section_slot == (Output_section **)0x0" identifier = (binary_expression "output_section_slot == (Output_section **)0x0" identifier == (cast_expression "(Output_section **)0x0" ( (type_descriptor "Output_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal))) ;) (if_statement "if (!(bool)uVar12) {\n        if (*output_section_slot != (Output_section *)0x0) {\n          Output_section::update_flags_for_input_section(*output_section_slot,flags_00);\n          return *output_section_slot;\n        }\n        pcVar5 = Stringpool_template<char>::add(&this->namepool_,(char *)local_b0,false,(Key *)0x0);\n        pOVar6 = make_output_section(this,pcVar5,type,flags_00,order,is_relro);\n        pOVar6->field_0xc8 = pOVar6->field_0xc8 | 0x40;\n        if (((script_section_type == ST_NOLOAD) &&\n            (pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0)) &&\n           (bVar13 = (pOVar6->super_Output_data).field_0x20, (bVar13 & 1) != 0)) {\n          if ((((pOVar6->super_Output_data).address_ != 0) || ((bVar13 & 4) != 0)) ||\n             ((bVar13 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xfa;\n          if ((bVar13 & 8) == 0) {\n            (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xf8;\n          }\n          (*(pOVar6->super_Output_data)._vptr_Output_data[0xf])(pOVar6);\n        }\n        *output_section_slot = pOVar6;\n        return pOVar6;\n      }" if (parenthesized_expression "(!(bool)uVar12)" ( (unary_expression "!(bool)uVar12" ! (cast_expression "(bool)uVar12" ( (type_descriptor "bool" primitive_type) ) identifier)) )) (compound_statement "{\n        if (*output_section_slot != (Output_section *)0x0) {\n          Output_section::update_flags_for_input_section(*output_section_slot,flags_00);\n          return *output_section_slot;\n        }\n        pcVar5 = Stringpool_template<char>::add(&this->namepool_,(char *)local_b0,false,(Key *)0x0);\n        pOVar6 = make_output_section(this,pcVar5,type,flags_00,order,is_relro);\n        pOVar6->field_0xc8 = pOVar6->field_0xc8 | 0x40;\n        if (((script_section_type == ST_NOLOAD) &&\n            (pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0)) &&\n           (bVar13 = (pOVar6->super_Output_data).field_0x20, (bVar13 & 1) != 0)) {\n          if ((((pOVar6->super_Output_data).address_ != 0) || ((bVar13 & 4) != 0)) ||\n             ((bVar13 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xfa;\n          if ((bVar13 & 8) == 0) {\n            (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xf8;\n          }\n          (*(pOVar6->super_Output_data)._vptr_Output_data[0xf])(pOVar6);\n        }\n        *output_section_slot = pOVar6;\n        return pOVar6;\n      }" { (if_statement "if (*output_section_slot != (Output_section *)0x0) {\n          Output_section::update_flags_for_input_section(*output_section_slot,flags_00);\n          return *output_section_slot;\n        }" if (parenthesized_expression "(*output_section_slot != (Output_section *)0x0)" ( (binary_expression "*output_section_slot != (Output_section *)0x0" (pointer_expression "*output_section_slot" * identifier) != (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          Output_section::update_flags_for_input_section(*output_section_slot,flags_00);\n          return *output_section_slot;\n        }" { (labeled_statement "Output_section::update_flags_for_input_section(*output_section_slot,flags_00);" statement_identifier : (ERROR ":" :) (expression_statement "update_flags_for_input_section(*output_section_slot,flags_00);" (call_expression "update_flags_for_input_section(*output_section_slot,flags_00)" identifier (argument_list "(*output_section_slot,flags_00)" ( (pointer_expression "*output_section_slot" * identifier) , identifier ))) ;)) (return_statement "return *output_section_slot;" return (pointer_expression "*output_section_slot" * identifier) ;) })) (expression_statement "pcVar5 = Stringpool_template<char>::add(&this->namepool_,(char *)local_b0,false,(Key *)0x0);" (assignment_expression "pcVar5 = Stringpool_template<char>::add(&this->namepool_,(char *)local_b0,false,(Key *)0x0)" identifier = (binary_expression "Stringpool_template<char>::add(&this->namepool_,(char *)local_b0,false,(Key *)0x0)" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) (call_expression "add(&this->namepool_,(char *)local_b0,false,(Key *)0x0)" identifier (argument_list "(&this->namepool_,(char *)local_b0,false,(Key *)0x0)" ( (pointer_expression "&this->namepool_" & (field_expression "this->namepool_" identifier -> field_identifier)) , (cast_expression "(char *)local_b0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , false , (cast_expression "(Key *)0x0" ( (type_descriptor "Key *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))))) ;) (expression_statement "pOVar6 = make_output_section(this,pcVar5,type,flags_00,order,is_relro);" (assignment_expression "pOVar6 = make_output_section(this,pcVar5,type,flags_00,order,is_relro)" identifier = (call_expression "make_output_section(this,pcVar5,type,flags_00,order,is_relro)" identifier (argument_list "(this,pcVar5,type,flags_00,order,is_relro)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "pOVar6->field_0xc8 = pOVar6->field_0xc8 | 0x40;" (assignment_expression "pOVar6->field_0xc8 = pOVar6->field_0xc8 | 0x40" (field_expression "pOVar6->field_0xc8" identifier -> field_identifier) = (binary_expression "pOVar6->field_0xc8 | 0x40" (field_expression "pOVar6->field_0xc8" identifier -> field_identifier) | number_literal)) ;) (if_statement "if (((script_section_type == ST_NOLOAD) &&\n            (pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0)) &&\n           (bVar13 = (pOVar6->super_Output_data).field_0x20, (bVar13 & 1) != 0)) {\n          if ((((pOVar6->super_Output_data).address_ != 0) || ((bVar13 & 4) != 0)) ||\n             ((bVar13 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xfa;\n          if ((bVar13 & 8) == 0) {\n            (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xf8;\n          }\n          (*(pOVar6->super_Output_data)._vptr_Output_data[0xf])(pOVar6);\n        }" if (parenthesized_expression "(((script_section_type == ST_NOLOAD) &&\n            (pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0)) &&\n           (bVar13 = (pOVar6->super_Output_data).field_0x20, (bVar13 & 1) != 0))" ( (binary_expression "((script_section_type == ST_NOLOAD) &&\n            (pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0)) &&\n           (bVar13 = (pOVar6->super_Output_data).field_0x20, (bVar13 & 1) != 0)" (parenthesized_expression "((script_section_type == ST_NOLOAD) &&\n            (pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0))" ( (binary_expression "(script_section_type == ST_NOLOAD) &&\n            (pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0)" (parenthesized_expression "(script_section_type == ST_NOLOAD)" ( (binary_expression "script_section_type == ST_NOLOAD" identifier == identifier) )) && (parenthesized_expression "(pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0)" ( (comma_expression "pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0" (assignment_expression "pOVar6->field_0xca = pOVar6->field_0xca | 8" (field_expression "pOVar6->field_0xca" identifier -> field_identifier) = (binary_expression "pOVar6->field_0xca | 8" (field_expression "pOVar6->field_0xca" identifier -> field_identifier) | number_literal)) , (binary_expression "(pOVar6->flags_ & 2) == 0" (parenthesized_expression "(pOVar6->flags_ & 2)" ( (binary_expression "pOVar6->flags_ & 2" (field_expression "pOVar6->flags_" identifier -> field_identifier) & number_literal) )) == number_literal)) ))) )) && (parenthesized_expression "(bVar13 = (pOVar6->super_Output_data).field_0x20, (bVar13 & 1) != 0)" ( (comma_expression "bVar13 = (pOVar6->super_Output_data).field_0x20, (bVar13 & 1) != 0" (assignment_expression "bVar13 = (pOVar6->super_Output_data).field_0x20" identifier = (field_expression "(pOVar6->super_Output_data).field_0x20" (parenthesized_expression "(pOVar6->super_Output_data)" ( (field_expression "pOVar6->super_Output_data" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "(bVar13 & 1) != 0" (parenthesized_expression "(bVar13 & 1)" ( (binary_expression "bVar13 & 1" identifier & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n          if ((((pOVar6->super_Output_data).address_ != 0) || ((bVar13 & 4) != 0)) ||\n             ((bVar13 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xfa;\n          if ((bVar13 & 8) == 0) {\n            (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xf8;\n          }\n          (*(pOVar6->super_Output_data)._vptr_Output_data[0xf])(pOVar6);\n        }" { (if_statement "if ((((pOVar6->super_Output_data).address_ != 0) || ((bVar13 & 4) != 0)) ||\n             ((bVar13 & 2) != 0)) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/layout.cc",0x406,"choose_output_section");\n          }" if (parenthesized_expression "((((pOVar6->super_Output_data).address_ != 0) || ((bVar13 & 4) != 0)) ||\n             ((bVar13 & 2) != 0))" ( (binary_expression "(((pOVar6->super_Output_data).address_ != 0) || ((bVar13 & 4) != 0)) ||\n             ((bVar13 & 2) != 0)" (parenthesized_expression "(((pOVar6->super_Output_data).address_ != 0) || ((bVar13 & 4) != 0))" ( (binary_expression "((pOVar6->super_Output_data).address_ != 0) || ((bVar13 & 4) != 0)" (parenthesized_expression "((pOVar6->super_Output_data).address_ != 0)" ( (binary_expression "(pOVar6->super_Output_data).address_ != 0" (field_expression "(pOVar6->super_Output_data).address_" (parenthesized_expression "(pOVar6->super_Output_data)" ( (field_expression "pOVar6->super_Output_data" identifier -> field_identifier) )) . field_identifier) != number_literal) )) || (parenthesized_expression "((bVar13 & 4) != 0)" ( (binary_expression "(bVar13 & 4) != 0" (parenthesized_expression "(bVar13 & 4)" ( (binary_expression "bVar13 & 4" identifier & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "((bVar13 & 2) != 0)" ( (binary_expression "(bVar13 & 2) != 0" (parenthesized_expression "(bVar13 & 2)" ( (binary_expression "bVar13 & 2" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/layout.cc",0x406,"choose_output_section");\n          }" { comment (expression_statement "do_gold_unreachable("../../gold/layout.cc",0x406,"choose_output_section");" (call_expression "do_gold_unreachable("../../gold/layout.cc",0x406,"choose_output_section")" identifier (argument_list "("../../gold/layout.cc",0x406,"choose_output_section")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""choose_output_section"" " string_content ") ))) ;) })) (expression_statement "(pOVar6->super_Output_data).field_0x20 = bVar13 & 0xfa;" (assignment_expression "(pOVar6->super_Output_data).field_0x20 = bVar13 & 0xfa" (field_expression "(pOVar6->super_Output_data).field_0x20" (parenthesized_expression "(pOVar6->super_Output_data)" ( (field_expression "pOVar6->super_Output_data" identifier -> field_identifier) )) . field_identifier) = (binary_expression "bVar13 & 0xfa" identifier & number_literal)) ;) (if_statement "if ((bVar13 & 8) == 0) {\n            (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xf8;\n          }" if (parenthesized_expression "((bVar13 & 8) == 0)" ( (binary_expression "(bVar13 & 8) == 0" (parenthesized_expression "(bVar13 & 8)" ( (binary_expression "bVar13 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            (pOVar6->super_Output_data).field_0x20 = bVar13 & 0xf8;\n          }" { (expression_statement "(pOVar6->super_Output_data).field_0x20 = bVar13 & 0xf8;" (assignment_expression "(pOVar6->super_Output_data).field_0x20 = bVar13 & 0xf8" (field_expression "(pOVar6->super_Output_data).field_0x20" (parenthesized_expression "(pOVar6->super_Output_data)" ( (field_expression "pOVar6->super_Output_data" identifier -> field_identifier) )) . field_identifier) = (binary_expression "bVar13 & 0xf8" identifier & number_literal)) ;) })) (expression_statement "(*(pOVar6->super_Output_data)._vptr_Output_data[0xf])(pOVar6);" (call_expression "(*(pOVar6->super_Output_data)._vptr_Output_data[0xf])(pOVar6)" (parenthesized_expression "(*(pOVar6->super_Output_data)._vptr_Output_data[0xf])" ( (pointer_expression "*(pOVar6->super_Output_data)._vptr_Output_data[0xf]" * (subscript_expression "(pOVar6->super_Output_data)._vptr_Output_data[0xf]" (field_expression "(pOVar6->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar6->super_Output_data)" ( (field_expression "pOVar6->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(pOVar6)" ( identifier ))) ;) })) (expression_statement "*output_section_slot = pOVar6;" (assignment_expression "*output_section_slot = pOVar6" (pointer_expression "*output_section_slot" * identifier) = identifier) ;) (return_statement "return pOVar6;" return identifier ;) })) })) })) (expression_statement "len = strlen((char *)local_b0);" (assignment_expression "len = strlen((char *)local_b0)" identifier = (call_expression "strlen((char *)local_b0)" identifier (argument_list "((char *)local_b0)" ( (cast_expression "(char *)local_b0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "uncompressed_name._M_dataplus._M_p = (pointer)&uncompressed_name.field_2;" (assignment_expression "uncompressed_name._M_dataplus._M_p = (pointer)&uncompressed_name.field_2" (field_expression "uncompressed_name._M_dataplus._M_p" (field_expression "uncompressed_name._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&uncompressed_name.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "uncompressed_name.field_2" identifier . field_identifier))) ;) (expression_statement "uncompressed_name.field_2._M_allocated_capacity =\n       uncompressed_name.field_2._M_allocated_capacity & 0xffffffffffffff00;" (assignment_expression "uncompressed_name.field_2._M_allocated_capacity =\n       uncompressed_name.field_2._M_allocated_capacity & 0xffffffffffffff00" (field_expression "uncompressed_name.field_2._M_allocated_capacity" (field_expression "uncompressed_name.field_2" identifier . field_identifier) . field_identifier) = (binary_expression "uncompressed_name.field_2._M_allocated_capacity & 0xffffffffffffff00" (field_expression "uncompressed_name.field_2._M_allocated_capacity" (field_expression "uncompressed_name.field_2" identifier . field_identifier) . field_identifier) & number_literal)) ;) (expression_statement "lVar8 = 7;" (assignment_expression "lVar8 = 7" identifier = number_literal) ;) (expression_statement "uncompressed_name._M_string_length = 0;" (assignment_expression "uncompressed_name._M_string_length = 0" (field_expression "uncompressed_name._M_string_length" identifier . field_identifier) = number_literal) ;) (expression_statement "pbVar7 = (byte *)".zdebug";" (assignment_expression "pbVar7 = (byte *)".zdebug"" identifier = (cast_expression "(byte *)".zdebug"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".zdebug"" " string_content "))) ;) (expression_statement "pbVar9 = local_b0;" (assignment_expression "pbVar9 = local_b0" identifier = identifier) ;) (do_statement "do {\n    if (lVar8 == 0) break;\n    lVar8 = lVar8 + -1;\n    uVar11 = *pbVar7 < *pbVar9;\n    uVar12 = *pbVar7 == *pbVar9;\n    pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n  } while ((bool)uVar12);" do (compound_statement "{\n    if (lVar8 == 0) break;\n    lVar8 = lVar8 + -1;\n    uVar11 = *pbVar7 < *pbVar9;\n    uVar12 = *pbVar7 == *pbVar9;\n    pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n  }" { (if_statement "if (lVar8 == 0) break;" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (expression_statement "uVar11 = *pbVar7 < *pbVar9;" (assignment_expression "uVar11 = *pbVar7 < *pbVar9" identifier = (binary_expression "*pbVar7 < *pbVar9" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "uVar12 = *pbVar7 == *pbVar9;" (assignment_expression "uVar12 = *pbVar7 == *pbVar9" identifier = (binary_expression "*pbVar7 == *pbVar9" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "((bool)uVar12)" ( (cast_expression "(bool)uVar12" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (if_statement "if ((!(bool)uVar11 && !(bool)uVar12) != (bool)uVar11) goto LAB_001ad012;" if (parenthesized_expression "((!(bool)uVar11 && !(bool)uVar12) != (bool)uVar11)" ( (binary_expression "(!(bool)uVar11 && !(bool)uVar12) != (bool)uVar11" (parenthesized_expression "(!(bool)uVar11 && !(bool)uVar12)" ( (binary_expression "!(bool)uVar11 && !(bool)uVar12" (unary_expression "!(bool)uVar11" ! (cast_expression "(bool)uVar11" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar12" ! (cast_expression "(bool)uVar12" ( (type_descriptor "bool" primitive_type) ) identifier))) )) != (cast_expression "(bool)uVar11" ( (type_descriptor "bool" primitive_type) ) identifier)) )) (goto_statement "goto LAB_001ad012;" goto statement_identifier ;)) (expression_statement "_script_section_type = local_68;" (assignment_expression "_script_section_type = local_68" identifier = identifier) ;) comment (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>\n            ((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n             &script_section_type,local_b0,local_b0 + len);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>\n            ((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n             &script_section_type,local_b0,local_b0 + len);" (binary_expression "_M_construct<char_const*>\n            ((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n             &script_section_type,local_b0,local_b0 + len)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n             &script_section_type,local_b0,local_b0 + len)" ( (comma_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n             &script_section_type,local_b0,local_b0 + len" (binary_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n             &script_section_type" (parenthesized_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)" ( (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_> *" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*" * identifier)) )) & identifier) , (comma_expression "local_b0,local_b0 + len" identifier , (binary_expression "local_b0 + len" identifier + identifier))) ))) ;)) comment (expression_statement "corresponding_uncompressed_section_name\n            ((string *)&output_section_slot,\n             (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n             &script_section_type);" (call_expression "corresponding_uncompressed_section_name\n            ((string *)&output_section_slot,\n             (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n             &script_section_type)" identifier (argument_list "((string *)&output_section_slot,\n             (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n             &script_section_type)" ( (cast_expression "(string *)&output_section_slot" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&output_section_slot" & identifier)) , (binary_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n             &script_section_type" (parenthesized_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)" ( (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_> *" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*" * identifier)) )) & identifier) ))) ;) (expression_statement "uVar4 = uncompressed_name.field_2._M_allocated_capacity;" (assignment_expression "uVar4 = uncompressed_name.field_2._M_allocated_capacity" identifier = (field_expression "uncompressed_name.field_2._M_allocated_capacity" (field_expression "uncompressed_name.field_2" identifier . field_identifier) . field_identifier)) ;) (expression_statement "_Var3 = uncompressed_name._M_dataplus;" (assignment_expression "_Var3 = uncompressed_name._M_dataplus" identifier = (field_expression "uncompressed_name._M_dataplus" identifier . field_identifier)) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)output_section_slot == &local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *uncompressed_name._M_dataplus._M_p = local_48._M_local_buf[0];\n      }\n      else {\n        memcpy(uncompressed_name._M_dataplus._M_p,output_section_slot,local_50);\n      }\n    }\n    uncompressed_name._M_dataplus._M_p[local_50] = '\0';\n    uncompressed_name._M_string_length = local_50;\n  }\n  else {\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2) {\n      uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot;\n      uncompressed_name._M_string_length = local_50;\n      uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity;\n      if (_Var3._M_p != (pointer)0x0) {\n        output_section_slot = (Output_section **)_Var3._M_p;\n        local_48._M_allocated_capacity = uVar4;\n        goto LAB_001ad26b;\n      }\n    }\n    uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity;\n    uncompressed_name._M_string_length = local_50;\n    uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot;\n    output_section_slot = (Output_section **)&local_48;\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)output_section_slot == &local_48)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)output_section_slot == &local_48)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)output_section_slot == &local_48" (binary_expression "allocator<char>_>_9\n       *)output_section_slot" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)output_section_slot" identifier * (ERROR ")" )) identifier)) == (pointer_expression "&local_48" & identifier)) )) )) (compound_statement "{\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *uncompressed_name._M_dataplus._M_p = local_48._M_local_buf[0];\n      }\n      else {\n        memcpy(uncompressed_name._M_dataplus._M_p,output_section_slot,local_50);\n      }\n    }\n    uncompressed_name._M_dataplus._M_p[local_50] = '\0';\n    uncompressed_name._M_string_length = local_50;\n  }" { (if_statement "if (local_50 != 0) {\n      if (local_50 == 1) {\n        *uncompressed_name._M_dataplus._M_p = local_48._M_local_buf[0];\n      }\n      else {\n        memcpy(uncompressed_name._M_dataplus._M_p,output_section_slot,local_50);\n      }\n    }" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (compound_statement "{\n      if (local_50 == 1) {\n        *uncompressed_name._M_dataplus._M_p = local_48._M_local_buf[0];\n      }\n      else {\n        memcpy(uncompressed_name._M_dataplus._M_p,output_section_slot,local_50);\n      }\n    }" { (if_statement "if (local_50 == 1) {\n        *uncompressed_name._M_dataplus._M_p = local_48._M_local_buf[0];\n      }\n      else {\n        memcpy(uncompressed_name._M_dataplus._M_p,output_section_slot,local_50);\n      }" if (parenthesized_expression "(local_50 == 1)" ( (binary_expression "local_50 == 1" identifier == number_literal) )) (compound_statement "{\n        *uncompressed_name._M_dataplus._M_p = local_48._M_local_buf[0];\n      }" { (expression_statement "*uncompressed_name._M_dataplus._M_p = local_48._M_local_buf[0];" (assignment_expression "*uncompressed_name._M_dataplus._M_p = local_48._M_local_buf[0]" (pointer_expression "*uncompressed_name._M_dataplus._M_p" * (field_expression "uncompressed_name._M_dataplus._M_p" (field_expression "uncompressed_name._M_dataplus" identifier . field_identifier) . field_identifier)) = (subscript_expression "local_48._M_local_buf[0]" (field_expression "local_48._M_local_buf" identifier . field_identifier) [ number_literal ])) ;) }) (else_clause "else {\n        memcpy(uncompressed_name._M_dataplus._M_p,output_section_slot,local_50);\n      }" else (compound_statement "{\n        memcpy(uncompressed_name._M_dataplus._M_p,output_section_slot,local_50);\n      }" { (expression_statement "memcpy(uncompressed_name._M_dataplus._M_p,output_section_slot,local_50);" (call_expression "memcpy(uncompressed_name._M_dataplus._M_p,output_section_slot,local_50)" identifier (argument_list "(uncompressed_name._M_dataplus._M_p,output_section_slot,local_50)" ( (field_expression "uncompressed_name._M_dataplus._M_p" (field_expression "uncompressed_name._M_dataplus" identifier . field_identifier) . field_identifier) , identifier , identifier ))) ;) }))) })) (expression_statement "uncompressed_name._M_dataplus._M_p[local_50] = '\0';" (assignment_expression "uncompressed_name._M_dataplus._M_p[local_50] = '\0'" (subscript_expression "uncompressed_name._M_dataplus._M_p[local_50]" (field_expression "uncompressed_name._M_dataplus._M_p" (field_expression "uncompressed_name._M_dataplus" identifier . field_identifier) . field_identifier) [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uncompressed_name._M_string_length = local_50;" (assignment_expression "uncompressed_name._M_string_length = local_50" (field_expression "uncompressed_name._M_string_length" identifier . field_identifier) = identifier) ;) }) (else_clause "else {\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2) {\n      uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot;\n      uncompressed_name._M_string_length = local_50;\n      uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity;\n      if (_Var3._M_p != (pointer)0x0) {\n        output_section_slot = (Output_section **)_Var3._M_p;\n        local_48._M_allocated_capacity = uVar4;\n        goto LAB_001ad26b;\n      }\n    }\n    uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity;\n    uncompressed_name._M_string_length = local_50;\n    uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot;\n    output_section_slot = (Output_section **)&local_48;\n  }" else (compound_statement "{\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2) {\n      uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot;\n      uncompressed_name._M_string_length = local_50;\n      uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity;\n      if (_Var3._M_p != (pointer)0x0) {\n        output_section_slot = (Output_section **)_Var3._M_p;\n        local_48._M_allocated_capacity = uVar4;\n        goto LAB_001ad26b;\n      }\n    }\n    uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity;\n    uncompressed_name._M_string_length = local_50;\n    uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot;\n    output_section_slot = (Output_section **)&local_48;\n  }" { (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2) {\n      uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot;\n      uncompressed_name._M_string_length = local_50;\n      uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity;\n      if (_Var3._M_p != (pointer)0x0) {\n        output_section_slot = (Output_section **)_Var3._M_p;\n        local_48._M_allocated_capacity = uVar4;\n        goto LAB_001ad26b;\n      }\n    }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n         *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2" (binary_expression "allocator<char>_>_9\n         *)uncompressed_name._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n         *)uncompressed_name._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "uncompressed_name._M_dataplus._M_p" (field_expression "uncompressed_name._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&uncompressed_name.field_2" & (field_expression "uncompressed_name.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n      uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot;\n      uncompressed_name._M_string_length = local_50;\n      uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity;\n      if (_Var3._M_p != (pointer)0x0) {\n        output_section_slot = (Output_section **)_Var3._M_p;\n        local_48._M_allocated_capacity = uVar4;\n        goto LAB_001ad26b;\n      }\n    }" { (expression_statement "uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot;" (assignment_expression "uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot" (field_expression "uncompressed_name._M_dataplus._M_p" (field_expression "uncompressed_name._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)output_section_slot" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "uncompressed_name._M_string_length = local_50;" (assignment_expression "uncompressed_name._M_string_length = local_50" (field_expression "uncompressed_name._M_string_length" identifier . field_identifier) = identifier) ;) (expression_statement "uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity;" (assignment_expression "uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity" (field_expression "uncompressed_name.field_2._M_allocated_capacity" (field_expression "uncompressed_name.field_2" identifier . field_identifier) . field_identifier) = (field_expression "local_48._M_allocated_capacity" identifier . field_identifier)) ;) (if_statement "if (_Var3._M_p != (pointer)0x0) {\n        output_section_slot = (Output_section **)_Var3._M_p;\n        local_48._M_allocated_capacity = uVar4;\n        goto LAB_001ad26b;\n      }" if (parenthesized_expression "(_Var3._M_p != (pointer)0x0)" ( (binary_expression "_Var3._M_p != (pointer)0x0" (field_expression "_Var3._M_p" identifier . field_identifier) != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) (compound_statement "{\n        output_section_slot = (Output_section **)_Var3._M_p;\n        local_48._M_allocated_capacity = uVar4;\n        goto LAB_001ad26b;\n      }" { (expression_statement "output_section_slot = (Output_section **)_Var3._M_p;" (assignment_expression "output_section_slot = (Output_section **)_Var3._M_p" identifier = (cast_expression "(Output_section **)_Var3._M_p" ( (type_descriptor "Output_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "_Var3._M_p" identifier . field_identifier))) ;) (expression_statement "local_48._M_allocated_capacity = uVar4;" (assignment_expression "local_48._M_allocated_capacity = uVar4" (field_expression "local_48._M_allocated_capacity" identifier . field_identifier) = identifier) ;) (goto_statement "goto LAB_001ad26b;" goto statement_identifier ;) })) })) (expression_statement "uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity;" (assignment_expression "uncompressed_name.field_2._M_allocated_capacity = local_48._M_allocated_capacity" (field_expression "uncompressed_name.field_2._M_allocated_capacity" (field_expression "uncompressed_name.field_2" identifier . field_identifier) . field_identifier) = (field_expression "local_48._M_allocated_capacity" identifier . field_identifier)) ;) (expression_statement "uncompressed_name._M_string_length = local_50;" (assignment_expression "uncompressed_name._M_string_length = local_50" (field_expression "uncompressed_name._M_string_length" identifier . field_identifier) = identifier) ;) (expression_statement "uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot;" (assignment_expression "uncompressed_name._M_dataplus._M_p = (pointer)output_section_slot" (field_expression "uncompressed_name._M_dataplus._M_p" (field_expression "uncompressed_name._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)output_section_slot" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "output_section_slot = (Output_section **)&local_48;" (assignment_expression "output_section_slot = (Output_section **)&local_48" identifier = (cast_expression "(Output_section **)&local_48" ( (type_descriptor "Output_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&local_48" & identifier))) ;) }))) (labeled_statement "LAB_001ad26b:\n  local_50 = 0;" statement_identifier : (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;)) (expression_statement "*(undefined1 *)output_section_slot = 0;" (assignment_expression "*(undefined1 *)output_section_slot = 0" (pointer_expression "*(undefined1 *)output_section_slot" * (cast_expression "(undefined1 *)output_section_slot" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)output_section_slot != &local_48) {\n    operator_delete(output_section_slot);\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)output_section_slot != &local_48)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)output_section_slot != &local_48)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)output_section_slot != &local_48" (binary_expression "allocator<char>_>_9\n       *)output_section_slot" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)output_section_slot" identifier * (ERROR ")" )) identifier)) != (pointer_expression "&local_48" & identifier)) )) )) (compound_statement "{\n    operator_delete(output_section_slot);\n  }" { (expression_statement "operator_delete(output_section_slot);" (call_expression "operator_delete(output_section_slot)" identifier (argument_list "(output_section_slot)" ( identifier ))) ;) })) (if_statement "if (_script_section_type != local_68) {\n    operator_delete(_script_section_type);\n  }" if (parenthesized_expression "(_script_section_type != local_68)" ( (binary_expression "_script_section_type != local_68" identifier != identifier) )) (compound_statement "{\n    operator_delete(_script_section_type);\n  }" { (expression_statement "operator_delete(_script_section_type);" (call_expression "operator_delete(_script_section_type)" identifier (argument_list "(_script_section_type)" ( identifier ))) ;) })) (expression_statement "local_b0 = (byte *)uncompressed_name._M_dataplus._M_p;" (assignment_expression "local_b0 = (byte *)uncompressed_name._M_dataplus._M_p" identifier = (cast_expression "(byte *)uncompressed_name._M_dataplus._M_p" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "uncompressed_name._M_dataplus._M_p" (field_expression "uncompressed_name._M_dataplus" identifier . field_identifier) . field_identifier))) ;) (expression_statement "len = uncompressed_name._M_string_length;" (assignment_expression "len = uncompressed_name._M_string_length" identifier = (field_expression "uncompressed_name._M_string_length" identifier . field_identifier)) ;) (labeled_statement "LAB_001ad012:\n  pbVar7 = local_b0;" statement_identifier : (expression_statement "pbVar7 = local_b0;" (assignment_expression "pbVar7 = local_b0" identifier = identifier) ;)) (if_statement "if ((is_input_section) &&\n     ((this->script_options_->script_sections_).saw_sections_clause_ == false)) {\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    if ((parameters->options_->relocatable_).value == false) {\n      pTVar2 = parameters->target_;\n      if (pTVar2 == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }\n                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */\n      if ((*(code **)(*(long *)pTVar2 + 0x110) == Target::do_output_section_name) ||\n         (pbVar7 = (byte *)(**(code **)(*(long *)pTVar2 + 0x110))(pTVar2,relobj,local_b0,&len),\n         pbVar7 == (byte *)0x0)) {\n        pbVar7 = (byte *)output_section_name(relobj,(char *)local_b0,&len);\n      }\n    }\n  }" if (parenthesized_expression "((is_input_section) &&\n     ((this->script_options_->script_sections_).saw_sections_clause_ == false))" ( (binary_expression "(is_input_section) &&\n     ((this->script_options_->script_sections_).saw_sections_clause_ == false)" (parenthesized_expression "(is_input_section)" ( identifier )) && (parenthesized_expression "((this->script_options_->script_sections_).saw_sections_clause_ == false)" ( (binary_expression "(this->script_options_->script_sections_).saw_sections_clause_ == false" (field_expression "(this->script_options_->script_sections_).saw_sections_clause_" (parenthesized_expression "(this->script_options_->script_sections_)" ( (field_expression "this->script_options_->script_sections_" (field_expression "this->script_options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) == false) ))) )) (compound_statement "{\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    if ((parameters->options_->relocatable_).value == false) {\n      pTVar2 = parameters->target_;\n      if (pTVar2 == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }\n                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */\n      if ((*(code **)(*(long *)pTVar2 + 0x110) == Target::do_output_section_name) ||\n         (pbVar7 = (byte *)(**(code **)(*(long *)pTVar2 + 0x110))(pTVar2,relobj,local_b0,&len),\n         pbVar7 == (byte *)0x0)) {\n        pbVar7 = (byte *)output_section_name(relobj,(char *)local_b0,&len);\n      }\n    }\n  }" { (if_statement "if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }" if (parenthesized_expression "(parameters->options_ == (General_options *)0x0)" ( (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if ((parameters->options_->relocatable_).value == false) {\n      pTVar2 = parameters->target_;\n      if (pTVar2 == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }\n                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */\n      if ((*(code **)(*(long *)pTVar2 + 0x110) == Target::do_output_section_name) ||\n         (pbVar7 = (byte *)(**(code **)(*(long *)pTVar2 + 0x110))(pTVar2,relobj,local_b0,&len),\n         pbVar7 == (byte *)0x0)) {\n        pbVar7 = (byte *)output_section_name(relobj,(char *)local_b0,&len);\n      }\n    }" if (parenthesized_expression "((parameters->options_->relocatable_).value == false)" ( (binary_expression "(parameters->options_->relocatable_).value == false" (field_expression "(parameters->options_->relocatable_).value" (parenthesized_expression "(parameters->options_->relocatable_)" ( (field_expression "parameters->options_->relocatable_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n      pTVar2 = parameters->target_;\n      if (pTVar2 == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }\n                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */\n      if ((*(code **)(*(long *)pTVar2 + 0x110) == Target::do_output_section_name) ||\n         (pbVar7 = (byte *)(**(code **)(*(long *)pTVar2 + 0x110))(pTVar2,relobj,local_b0,&len),\n         pbVar7 == (byte *)0x0)) {\n        pbVar7 = (byte *)output_section_name(relobj,(char *)local_b0,&len);\n      }\n    }" { (expression_statement "pTVar2 = parameters->target_;" (assignment_expression "pTVar2 = parameters->target_" identifier = (field_expression "parameters->target_" identifier -> field_identifier)) ;) (if_statement "if (pTVar2 == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }" if (parenthesized_expression "(pTVar2 == (Target *)0x0)" ( (binary_expression "pTVar2 == (Target *)0x0" identifier == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */\n        do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n      }" { comment comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x69,"target");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) comment (if_statement "if ((*(code **)(*(long *)pTVar2 + 0x110) == Target::do_output_section_name) ||\n         (pbVar7 = (byte *)(**(code **)(*(long *)pTVar2 + 0x110))(pTVar2,relobj,local_b0,&len),\n         pbVar7 == (byte *)0x0)) {\n        pbVar7 = (byte *)output_section_name(relobj,(char *)local_b0,&len);\n      }" if (parenthesized_expression "((*(code **)(*(long *)pTVar2 + 0x110) == Target::do_output_section_name) ||\n         (pbVar7 = (byte *)(**(code **)(*(long *)pTVar2 + 0x110))(pTVar2,relobj,local_b0,&len),\n         pbVar7 == (byte *)0x0))" ( (binary_expression "(*(code **)(*(long *)pTVar2 + 0x110) == Target::do_output_section_name) ||\n         (pbVar7 = (byte *)(**(code **)(*(long *)pTVar2 + 0x110))(pTVar2,relobj,local_b0,&len),\n         pbVar7 == (byte *)0x0)" (parenthesized_expression "(*(code **)(*(long *)pTVar2 + 0x110) == Target::do_output_section_name)" ( (binary_expression "*(code **)(*(long *)pTVar2 + 0x110) == Target" (pointer_expression "*(code **)(*(long *)pTVar2 + 0x110)" * (cast_expression "(code **)(*(long *)pTVar2 + 0x110)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pTVar2 + 0x110)" ( (binary_expression "*(long *)pTVar2 + 0x110" (pointer_expression "*(long *)pTVar2" * (cast_expression "(long *)pTVar2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == identifier) (ERROR "::do_output_section_name" : : identifier) )) || (parenthesized_expression "(pbVar7 = (byte *)(**(code **)(*(long *)pTVar2 + 0x110))(pTVar2,relobj,local_b0,&len),\n         pbVar7 == (byte *)0x0)" ( (comma_expression "pbVar7 = (byte *)(**(code **)(*(long *)pTVar2 + 0x110))(pTVar2,relobj,local_b0,&len),\n         pbVar7 == (byte *)0x0" (assignment_expression "pbVar7 = (byte *)(**(code **)(*(long *)pTVar2 + 0x110))(pTVar2,relobj,local_b0,&len)" identifier = (cast_expression "(byte *)(**(code **)(*(long *)pTVar2 + 0x110))(pTVar2,relobj,local_b0,&len)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(long *)pTVar2 + 0x110))(pTVar2,relobj,local_b0,&len)" (parenthesized_expression "(**(code **)(*(long *)pTVar2 + 0x110))" ( (pointer_expression "**(code **)(*(long *)pTVar2 + 0x110)" * (pointer_expression "*(code **)(*(long *)pTVar2 + 0x110)" * (cast_expression "(code **)(*(long *)pTVar2 + 0x110)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pTVar2 + 0x110)" ( (binary_expression "*(long *)pTVar2 + 0x110" (pointer_expression "*(long *)pTVar2" * (cast_expression "(long *)pTVar2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(pTVar2,relobj,local_b0,&len)" ( identifier , identifier , identifier , (pointer_expression "&len" & identifier) ))))) , (binary_expression "pbVar7 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        pbVar7 = (byte *)output_section_name(relobj,(char *)local_b0,&len);\n      }" { (expression_statement "pbVar7 = (byte *)output_section_name(relobj,(char *)local_b0,&len);" (assignment_expression "pbVar7 = (byte *)output_section_name(relobj,(char *)local_b0,&len)" identifier = (cast_expression "(byte *)output_section_name(relobj,(char *)local_b0,&len)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "output_section_name(relobj,(char *)local_b0,&len)" identifier (argument_list "(relobj,(char *)local_b0,&len)" ( identifier , (cast_expression "(char *)local_b0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&len" & identifier) ))))) ;) })) })) })) (expression_statement "local_b0 = pbVar7;" (assignment_expression "local_b0 = pbVar7" identifier = identifier) ;) comment (expression_statement "pcVar5 = Stringpool_template<char>::add_with_length\n                     (&this->namepool_,(char *)local_b0,len,true,(Key *)&script_section_type);" (assignment_expression "pcVar5 = Stringpool_template<char>::add_with_length\n                     (&this->namepool_,(char *)local_b0,len,true,(Key *)&script_section_type)" identifier = (binary_expression "Stringpool_template<char>::add_with_length\n                     (&this->namepool_,(char *)local_b0,len,true,(Key *)&script_section_type)" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) (call_expression "add_with_length\n                     (&this->namepool_,(char *)local_b0,len,true,(Key *)&script_section_type)" identifier (argument_list "(&this->namepool_,(char *)local_b0,len,true,(Key *)&script_section_type)" ( (pointer_expression "&this->namepool_" & (field_expression "this->namepool_" identifier -> field_identifier)) , (cast_expression "(char *)local_b0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , true , (cast_expression "(Key *)&script_section_type" ( (type_descriptor "Key *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&script_section_type" & identifier)) ))))) ;) (expression_statement "pOVar6 = get_output_section(this,pcVar5,(Key)_script_section_type,type,flags_00,order,is_relro);" (assignment_expression "pOVar6 = get_output_section(this,pcVar5,(Key)_script_section_type,type,flags_00,order,is_relro)" identifier = (call_expression "get_output_section(this,pcVar5,(Key)_script_section_type,type,flags_00,order,is_relro)" identifier (argument_list "(this,pcVar5,(Key)_script_section_type,type,flags_00,order,is_relro)" ( identifier , identifier , (cast_expression "(Key)_script_section_type" ( (type_descriptor "Key" type_identifier) ) identifier) , identifier , identifier , identifier , identifier )))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2) {\n    operator_delete(uncompressed_name._M_dataplus._M_p);\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2" (binary_expression "allocator<char>_>_9\n       *)uncompressed_name._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)uncompressed_name._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "uncompressed_name._M_dataplus._M_p" (field_expression "uncompressed_name._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&uncompressed_name.field_2" & (field_expression "uncompressed_name.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n    operator_delete(uncompressed_name._M_dataplus._M_p);\n  }" { (expression_statement "operator_delete(uncompressed_name._M_dataplus._M_p);" (call_expression "operator_delete(uncompressed_name._M_dataplus._M_p)" identifier (argument_list "(uncompressed_name._M_dataplus._M_p)" ( (field_expression "uncompressed_name._M_dataplus._M_p" (field_expression "uncompressed_name._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) (return_statement "return pOVar6;" return identifier ;) }))
(translation_unit "long * FUN_001acf30(long param_1,long param_2,ulong *param_3,undefined4 param_4,uint param_5,\n                   char param_6,undefined4 param_7,undefined1 param_8,char param_9,\n                   undefined1 param_10)\n\n{\n  char cVar1;\n  ulong uVar2;\n  undefined8 uVar3;\n  long *plVar4;\n  ulong *puVar5;\n  undefined8 uVar6;\n  long lVar7;\n  byte *pbVar8;\n  uint uVar9;\n  undefined1 uVar10;\n  undefined1 uVar11;\n  byte bVar12;\n  undefined8 uStack_d0;\n  ulong *local_b0;\n  size_t local_a0;\n  ulong *local_98;\n  size_t local_90;\n  ulong local_88 [2];\n  undefined1 *local_78 [2];\n  undefined1 local_68 [16];\n  ulong *local_58;\n  size_t local_50;\n  ulong local_48 [3];\n  \n  bVar12 = 0;\n  if ((param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0')) {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_001a4340();\n  }\n  uVar9 = param_5 & 0xfffff50f;\n  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n    uVar9 = param_5 & 0xfffff58f;\n  }\n  cVar1 = *(char *)(*(long *)(param_1 + 8) + 0x148);\n  uVar10 = cVar1 == '\0';\n  uVar11 = cVar1 == '\x01';\n  local_b0 = param_3;\n  if ((bool)uVar11) {\n    uVar10 = false;\n    uVar11 = param_9 == '\0';\n    if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }\n  }\n  local_a0 = strlen((char *)local_b0);\n  local_98 = local_88;\n  local_88[0] = local_88[0] & 0xffffffffffffff00;\n  lVar7 = 7;\n  local_90 = 0;\n  pbVar8 = (byte *)".zdebug";\n  puVar5 = local_b0;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar10 = *pbVar8 < (byte)*puVar5;\n    uVar11 = *pbVar8 == (byte)*puVar5;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);\n  } while ((bool)uVar11);\n  if ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10) goto LAB_001ad012;\n  local_78[0] = local_68;\n                    \n  FUN_001665c0(local_78,local_b0,(byte *)((long)local_b0 + local_a0));\n                    \n  FUN_001ab710(&local_58,local_78);\n  uVar2 = local_88[0];\n  puVar5 = local_98;\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }\n    *(byte *)((long)local_98 + local_50) = 0;\n    local_90 = local_50;\n  }\n  else {\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }\nLAB_001ad26b:\n  local_50 = 0;\n  *(byte *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_002dac70();\n  }\n  if (local_78[0] != local_68) {\n    FUN_002dac70();\n  }\n  local_b0 = local_98;\n  local_a0 = local_90;\nLAB_001ad012:\n  puVar5 = local_b0;\n  if ((param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    \n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }\n  }\n  local_b0 = puVar5;\n                    \n  uVar3 = FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78);\n  plVar4 = (long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8);\n  if (local_98 != local_88) {\n    FUN_002dac70();\n  }\n  return plVar4;\n}\n\n" (function_definition "long * FUN_001acf30(long param_1,long param_2,ulong *param_3,undefined4 param_4,uint param_5,\n                   char param_6,undefined4 param_7,undefined1 param_8,char param_9,\n                   undefined1 param_10)\n\n{\n  char cVar1;\n  ulong uVar2;\n  undefined8 uVar3;\n  long *plVar4;\n  ulong *puVar5;\n  undefined8 uVar6;\n  long lVar7;\n  byte *pbVar8;\n  uint uVar9;\n  undefined1 uVar10;\n  undefined1 uVar11;\n  byte bVar12;\n  undefined8 uStack_d0;\n  ulong *local_b0;\n  size_t local_a0;\n  ulong *local_98;\n  size_t local_90;\n  ulong local_88 [2];\n  undefined1 *local_78 [2];\n  undefined1 local_68 [16];\n  ulong *local_58;\n  size_t local_50;\n  ulong local_48 [3];\n  \n  bVar12 = 0;\n  if ((param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0')) {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_001a4340();\n  }\n  uVar9 = param_5 & 0xfffff50f;\n  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n    uVar9 = param_5 & 0xfffff58f;\n  }\n  cVar1 = *(char *)(*(long *)(param_1 + 8) + 0x148);\n  uVar10 = cVar1 == '\0';\n  uVar11 = cVar1 == '\x01';\n  local_b0 = param_3;\n  if ((bool)uVar11) {\n    uVar10 = false;\n    uVar11 = param_9 == '\0';\n    if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }\n  }\n  local_a0 = strlen((char *)local_b0);\n  local_98 = local_88;\n  local_88[0] = local_88[0] & 0xffffffffffffff00;\n  lVar7 = 7;\n  local_90 = 0;\n  pbVar8 = (byte *)".zdebug";\n  puVar5 = local_b0;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar10 = *pbVar8 < (byte)*puVar5;\n    uVar11 = *pbVar8 == (byte)*puVar5;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);\n  } while ((bool)uVar11);\n  if ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10) goto LAB_001ad012;\n  local_78[0] = local_68;\n                    \n  FUN_001665c0(local_78,local_b0,(byte *)((long)local_b0 + local_a0));\n                    \n  FUN_001ab710(&local_58,local_78);\n  uVar2 = local_88[0];\n  puVar5 = local_98;\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }\n    *(byte *)((long)local_98 + local_50) = 0;\n    local_90 = local_50;\n  }\n  else {\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }\nLAB_001ad26b:\n  local_50 = 0;\n  *(byte *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_002dac70();\n  }\n  if (local_78[0] != local_68) {\n    FUN_002dac70();\n  }\n  local_b0 = local_98;\n  local_a0 = local_90;\nLAB_001ad012:\n  puVar5 = local_b0;\n  if ((param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    \n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }\n  }\n  local_b0 = puVar5;\n                    \n  uVar3 = FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78);\n  plVar4 = (long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8);\n  if (local_98 != local_88) {\n    FUN_002dac70();\n  }\n  return plVar4;\n}" (sized_type_specifier "long" long) (pointer_declarator "* FUN_001acf30(long param_1,long param_2,ulong *param_3,undefined4 param_4,uint param_5,\n                   char param_6,undefined4 param_7,undefined1 param_8,char param_9,\n                   undefined1 param_10)" * (function_declarator "FUN_001acf30(long param_1,long param_2,ulong *param_3,undefined4 param_4,uint param_5,\n                   char param_6,undefined4 param_7,undefined1 param_8,char param_9,\n                   undefined1 param_10)" identifier (parameter_list "(long param_1,long param_2,ulong *param_3,undefined4 param_4,uint param_5,\n                   char param_6,undefined4 param_7,undefined1 param_8,char param_9,\n                   undefined1 param_10)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "char param_6" primitive_type identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined1 param_8" type_identifier identifier) , (parameter_declaration "char param_9" primitive_type identifier) , (parameter_declaration "undefined1 param_10" type_identifier identifier) )))) (compound_statement "{\n  char cVar1;\n  ulong uVar2;\n  undefined8 uVar3;\n  long *plVar4;\n  ulong *puVar5;\n  undefined8 uVar6;\n  long lVar7;\n  byte *pbVar8;\n  uint uVar9;\n  undefined1 uVar10;\n  undefined1 uVar11;\n  byte bVar12;\n  undefined8 uStack_d0;\n  ulong *local_b0;\n  size_t local_a0;\n  ulong *local_98;\n  size_t local_90;\n  ulong local_88 [2];\n  undefined1 *local_78 [2];\n  undefined1 local_68 [16];\n  ulong *local_58;\n  size_t local_50;\n  ulong local_48 [3];\n  \n  bVar12 = 0;\n  if ((param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0')) {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_001a4340();\n  }\n  uVar9 = param_5 & 0xfffff50f;\n  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n    uVar9 = param_5 & 0xfffff58f;\n  }\n  cVar1 = *(char *)(*(long *)(param_1 + 8) + 0x148);\n  uVar10 = cVar1 == '\0';\n  uVar11 = cVar1 == '\x01';\n  local_b0 = param_3;\n  if ((bool)uVar11) {\n    uVar10 = false;\n    uVar11 = param_9 == '\0';\n    if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }\n  }\n  local_a0 = strlen((char *)local_b0);\n  local_98 = local_88;\n  local_88[0] = local_88[0] & 0xffffffffffffff00;\n  lVar7 = 7;\n  local_90 = 0;\n  pbVar8 = (byte *)".zdebug";\n  puVar5 = local_b0;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar10 = *pbVar8 < (byte)*puVar5;\n    uVar11 = *pbVar8 == (byte)*puVar5;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);\n  } while ((bool)uVar11);\n  if ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10) goto LAB_001ad012;\n  local_78[0] = local_68;\n                    \n  FUN_001665c0(local_78,local_b0,(byte *)((long)local_b0 + local_a0));\n                    \n  FUN_001ab710(&local_58,local_78);\n  uVar2 = local_88[0];\n  puVar5 = local_98;\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }\n    *(byte *)((long)local_98 + local_50) = 0;\n    local_90 = local_50;\n  }\n  else {\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }\nLAB_001ad26b:\n  local_50 = 0;\n  *(byte *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_002dac70();\n  }\n  if (local_78[0] != local_68) {\n    FUN_002dac70();\n  }\n  local_b0 = local_98;\n  local_a0 = local_90;\nLAB_001ad012:\n  puVar5 = local_b0;\n  if ((param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    \n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }\n  }\n  local_b0 = puVar5;\n                    \n  uVar3 = FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78);\n  plVar4 = (long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8);\n  if (local_98 != local_88) {\n    FUN_002dac70();\n  }\n  return plVar4;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "ulong *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined1 uVar10;" type_identifier identifier ;) (declaration "undefined1 uVar11;" type_identifier identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "undefined8 uStack_d0;" type_identifier identifier ;) (declaration "ulong *local_b0;" type_identifier (pointer_declarator "*local_b0" * identifier) ;) (declaration "size_t local_a0;" primitive_type identifier ;) (declaration "ulong *local_98;" type_identifier (pointer_declarator "*local_98" * identifier) ;) (declaration "size_t local_90;" primitive_type identifier ;) (declaration "ulong local_88 [2];" type_identifier (array_declarator "local_88 [2]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_78 [2];" type_identifier (pointer_declarator "*local_78 [2]" * (array_declarator "local_78 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_68 [16];" type_identifier (array_declarator "local_68 [16]" identifier [ number_literal ]) ;) (declaration "ulong *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "size_t local_50;" primitive_type identifier ;) (declaration "ulong local_48 [3];" type_identifier (array_declarator "local_48 [3]" identifier [ number_literal ]) ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (if_statement "if ((param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0')) {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }" if (parenthesized_expression "((param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0'))" ( (binary_expression "(param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0')" (parenthesized_expression "(param_6 != '\0')" ( (binary_expression "param_6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(param_1 + 0x369) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x369) != '\0'" (pointer_expression "*(char *)(param_1 + 0x369)" * (cast_expression "(char *)(param_1 + 0x369)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x369)" ( (binary_expression "param_1 + 0x369" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }" { (expression_statement "FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section")" identifier (argument_list "("../../gold/layout.cc",0x3b8,"choose_output_section")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""choose_output_section"" " string_content ") ))) ;) })) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_001a4340();\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_001a4340();\n  }" { (expression_statement "FUN_001a4340();" (call_expression "FUN_001a4340()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar9 = param_5 & 0xfffff50f;" (assignment_expression "uVar9 = param_5 & 0xfffff50f" identifier = (binary_expression "param_5 & 0xfffff50f" identifier & number_literal)) ;) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n    uVar9 = param_5 & 0xfffff58f;\n  }" if (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0')" ( (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar9 = param_5 & 0xfffff58f;\n  }" { (expression_statement "uVar9 = param_5 & 0xfffff58f;" (assignment_expression "uVar9 = param_5 & 0xfffff58f" identifier = (binary_expression "param_5 & 0xfffff58f" identifier & number_literal)) ;) })) (expression_statement "cVar1 = *(char *)(*(long *)(param_1 + 8) + 0x148);" (assignment_expression "cVar1 = *(char *)(*(long *)(param_1 + 8) + 0x148)" identifier = (pointer_expression "*(char *)(*(long *)(param_1 + 8) + 0x148)" * (cast_expression "(char *)(*(long *)(param_1 + 8) + 0x148)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 8) + 0x148)" ( (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar10 = cVar1 == '\0';" (assignment_expression "uVar10 = cVar1 == '\0'" identifier = (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "uVar11 = cVar1 == '\x01';" (assignment_expression "uVar11 = cVar1 == '\x01'" identifier = (binary_expression "cVar1 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "local_b0 = param_3;" (assignment_expression "local_b0 = param_3" identifier = identifier) ;) (if_statement "if ((bool)uVar11) {\n    uVar10 = false;\n    uVar11 = param_9 == '\0';\n    if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }\n  }" if (parenthesized_expression "((bool)uVar11)" ( (cast_expression "(bool)uVar11" ( (type_descriptor "bool" primitive_type) ) identifier) )) (compound_statement "{\n    uVar10 = false;\n    uVar11 = param_9 == '\0';\n    if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }\n  }" { (expression_statement "uVar10 = false;" (assignment_expression "uVar10 = false" identifier = false) ;) (expression_statement "uVar11 = param_9 == '\0';" (assignment_expression "uVar11 = param_9 == '\0'" identifier = (binary_expression "param_9 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }" if (parenthesized_expression "((bool)uVar11)" ( (cast_expression "(bool)uVar11" ( (type_descriptor "bool" primitive_type) ) identifier) )) (compound_statement "{\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }" { (expression_statement "uVar3 = *(undefined8 *)(param_2 + 8);" (assignment_expression "uVar3 = *(undefined8 *)(param_2 + 8)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 8)" * (cast_expression "(undefined8 *)(param_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);" (assignment_expression "local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10)" identifier = (cast_expression "(ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10)" identifier (argument_list "(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10)" ( (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) , identifier , identifier , (pointer_expression "&local_58" & identifier) , identifier , (pointer_expression "&local_98" & identifier) , identifier ))))) ;) (if_statement "if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }" if (parenthesized_expression "(local_b0 == (ulong *)0x0)" ( (binary_expression "local_b0 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }" { (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          return (long *)0x0;\n        }" { (return_statement "return (long *)0x0;" return (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }" if (parenthesized_expression "((PTR_DAT_0043e6b0[0x24] & 2) == 0)" ( (binary_expression "(PTR_DAT_0043e6b0[0x24] & 2) == 0" (parenthesized_expression "(PTR_DAT_0043e6b0[0x24] & 2)" ( (binary_expression "PTR_DAT_0043e6b0[0x24] & 2" (subscript_expression "PTR_DAT_0043e6b0[0x24]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n          return (long *)0x0;\n        }" { (return_statement "return (long *)0x0;" return (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;" (assignment_expression "uVar3 = *(undefined8 *)PTR_DAT_0043e6b0" identifier = (pointer_expression "*(undefined8 *)PTR_DAT_0043e6b0" * (cast_expression "(undefined8 *)PTR_DAT_0043e6b0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);" (assignment_expression "uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0)" identifier = (call_expression "gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0)" identifier (argument_list "("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0)" ( (string_literal ""Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"" " string_content escape_sequence string_content escape_sequence string_content ") , identifier )))) ;) (expression_statement "FUN_00178100(uVar3,uVar6,param_3);" (call_expression "FUN_00178100(uVar3,uVar6,param_3)" identifier (argument_list "(uVar3,uVar6,param_3)" ( identifier , identifier , identifier ))) ;) (return_statement "return (long *)0x0;" return (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }" if (parenthesized_expression "((int)local_78[0] != 0)" ( (binary_expression "(int)local_78[0] != 0" (cast_expression "(int)local_78[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_78[0]" identifier [ number_literal ])) != number_literal) )) (compound_statement "{\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }" { (if_statement "if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }" if (parenthesized_expression "((int)local_78[0] != 1)" ( (binary_expression "(int)local_78[0] != 1" (cast_expression "(int)local_78[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_78[0]" identifier [ number_literal ])) != number_literal) )) (compound_statement "{\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }" { (expression_statement "FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section")" identifier (argument_list "("../../gold/layout.cc",0x3de,"choose_output_section")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""choose_output_section"" " string_content ") ))) ;) })) (expression_statement "uVar9 = uVar9 & 2;" (assignment_expression "uVar9 = uVar9 & 2" identifier = (binary_expression "uVar9 & 2" identifier & number_literal)) ;) })) (expression_statement "uVar10 = false;" (assignment_expression "uVar10 = false" identifier = false) ;) (expression_statement "uVar11 = local_58 == (ulong *)0x0;" (assignment_expression "uVar11 = local_58 == (ulong *)0x0" identifier = (binary_expression "local_58 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }" if (parenthesized_expression "(!(bool)uVar11)" ( (unary_expression "!(bool)uVar11" ! (cast_expression "(bool)uVar11" ( (type_descriptor "bool" primitive_type) ) identifier)) )) (compound_statement "{\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }" { (if_statement "if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }" if (parenthesized_expression "(*local_58 != 0)" ( (binary_expression "*local_58 != 0" (pointer_expression "*local_58" * identifier) != number_literal) )) (compound_statement "{\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }" { (expression_statement "FUN_001f5d70(*local_58,uVar9);" (call_expression "FUN_001f5d70(*local_58,uVar9)" identifier (argument_list "(*local_58,uVar9)" ( (pointer_expression "*local_58" * identifier) , identifier ))) ;) (return_statement "return (long *)*local_58;" return (cast_expression "(long *)*local_58" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_58" * identifier)) ;) })) (expression_statement "uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);" (assignment_expression "uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0)" identifier = (call_expression "FUN_0026e6a0(param_1 + 0x10,local_b0,0,0)" identifier (argument_list "(param_1 + 0x10,local_b0,0,0)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , identifier , number_literal , number_literal )))) ;) (expression_statement "plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);" (assignment_expression "plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8)" identifier = (cast_expression "(long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8)" identifier (argument_list "(param_1,uVar3,param_4,uVar9,param_7,param_8)" ( identifier , identifier , identifier , identifier , identifier , identifier ))))) ;) (expression_statement "*(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;" (assignment_expression "*(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40" (pointer_expression "*(byte *)(plVar4 + 0x19)" * (cast_expression "(byte *)(plVar4 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 0x19)" ( (binary_expression "plVar4 + 0x19" identifier + number_literal) )))) = (binary_expression "*(byte *)(plVar4 + 0x19) | 0x40" (pointer_expression "*(byte *)(plVar4 + 0x19)" * (cast_expression "(byte *)(plVar4 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 0x19)" ( (binary_expression "plVar4 + 0x19" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }" if (parenthesized_expression "((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0))" ( (binary_expression "(((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)" (parenthesized_expression "(((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0))" ( (binary_expression "((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)" (parenthesized_expression "((int)local_78[0] == 1)" ( (binary_expression "(int)local_78[0] == 1" (cast_expression "(int)local_78[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_78[0]" identifier [ number_literal ])) == number_literal) )) && (parenthesized_expression "(*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)" ( (comma_expression "*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0" (assignment_expression "*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8" (pointer_expression "*(byte *)((long)plVar4 + 0xca)" * (cast_expression "(byte *)((long)plVar4 + 0xca)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + 0xca)" ( (binary_expression "(long)plVar4 + 0xca" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)plVar4 + 0xca) | 8" (pointer_expression "*(byte *)((long)plVar4 + 0xca)" * (cast_expression "(byte *)((long)plVar4 + 0xca)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + 0xca)" ( (binary_expression "(long)plVar4 + 0xca" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | number_literal)) , (binary_expression "(*(byte *)(plVar4 + 0xe) & 2) == 0" (parenthesized_expression "(*(byte *)(plVar4 + 0xe) & 2)" ( (binary_expression "*(byte *)(plVar4 + 0xe) & 2" (pointer_expression "*(byte *)(plVar4 + 0xe)" * (cast_expression "(byte *)(plVar4 + 0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 0xe)" ( (binary_expression "plVar4 + 0xe" identifier + number_literal) )))) & number_literal) )) == number_literal)) ))) )) && (parenthesized_expression "(bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)" ( (comma_expression "bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0" (assignment_expression "bVar12 = *(byte *)(plVar4 + 4)" identifier = (pointer_expression "*(byte *)(plVar4 + 4)" * (cast_expression "(byte *)(plVar4 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 4)" ( (binary_expression "plVar4 + 4" identifier + number_literal) ))))) , (binary_expression "(bVar12 & 1) != 0" (parenthesized_expression "(bVar12 & 1)" ( (binary_expression "bVar12 & 1" identifier & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }" { (if_statement "if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }" if (parenthesized_expression "(((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0))" ( (binary_expression "((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)" (parenthesized_expression "((plVar4[1] != 0) || ((bVar12 & 4) != 0))" ( (binary_expression "(plVar4[1] != 0) || ((bVar12 & 4) != 0)" (parenthesized_expression "(plVar4[1] != 0)" ( (binary_expression "plVar4[1] != 0" (subscript_expression "plVar4[1]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "((bVar12 & 4) != 0)" ( (binary_expression "(bVar12 & 4) != 0" (parenthesized_expression "(bVar12 & 4)" ( (binary_expression "bVar12 & 4" identifier & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "((bVar12 & 2) != 0)" ( (binary_expression "(bVar12 & 2) != 0" (parenthesized_expression "(bVar12 & 2)" ( (binary_expression "bVar12 & 2" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }" { (expression_statement "FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section")" identifier (argument_list "("../../gold/layout.cc",0x406,"choose_output_section")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""choose_output_section"" " string_content ") ))) ;) })) (expression_statement "*(byte *)(plVar4 + 4) = bVar12 & 0xfa;" (assignment_expression "*(byte *)(plVar4 + 4) = bVar12 & 0xfa" (pointer_expression "*(byte *)(plVar4 + 4)" * (cast_expression "(byte *)(plVar4 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 4)" ( (binary_expression "plVar4 + 4" identifier + number_literal) )))) = (binary_expression "bVar12 & 0xfa" identifier & number_literal)) ;) (if_statement "if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }" if (parenthesized_expression "((bVar12 & 8) == 0)" ( (binary_expression "(bVar12 & 8) == 0" (parenthesized_expression "(bVar12 & 8)" ( (binary_expression "bVar12 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }" { (expression_statement "*(byte *)(plVar4 + 4) = bVar12 & 0xf8;" (assignment_expression "*(byte *)(plVar4 + 4) = bVar12 & 0xf8" (pointer_expression "*(byte *)(plVar4 + 4)" * (cast_expression "(byte *)(plVar4 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 4)" ( (binary_expression "plVar4 + 4" identifier + number_literal) )))) = (binary_expression "bVar12 & 0xf8" identifier & number_literal)) ;) })) (expression_statement "(**(code **)(*plVar4 + 0x78))(plVar4);" (call_expression "(**(code **)(*plVar4 + 0x78))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x78))" ( (pointer_expression "**(code **)(*plVar4 + 0x78)" * (pointer_expression "*(code **)(*plVar4 + 0x78)" * (cast_expression "(code **)(*plVar4 + 0x78)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x78)" ( (binary_expression "*plVar4 + 0x78" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(plVar4)" ( identifier ))) ;) })) (expression_statement "*local_58 = (ulong)plVar4;" (assignment_expression "*local_58 = (ulong)plVar4" (pointer_expression "*local_58" * identifier) = (cast_expression "(ulong)plVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (return_statement "return plVar4;" return identifier ;) })) })) })) (expression_statement "local_a0 = strlen((char *)local_b0);" (assignment_expression "local_a0 = strlen((char *)local_b0)" identifier = (call_expression "strlen((char *)local_b0)" identifier (argument_list "((char *)local_b0)" ( (cast_expression "(char *)local_b0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "local_98 = local_88;" (assignment_expression "local_98 = local_88" identifier = identifier) ;) (expression_statement "local_88[0] = local_88[0] & 0xffffffffffffff00;" (assignment_expression "local_88[0] = local_88[0] & 0xffffffffffffff00" (subscript_expression "local_88[0]" identifier [ number_literal ]) = (binary_expression "local_88[0] & 0xffffffffffffff00" (subscript_expression "local_88[0]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "lVar7 = 7;" (assignment_expression "lVar7 = 7" identifier = number_literal) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (expression_statement "pbVar8 = (byte *)".zdebug";" (assignment_expression "pbVar8 = (byte *)".zdebug"" identifier = (cast_expression "(byte *)".zdebug"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".zdebug"" " string_content "))) ;) (expression_statement "puVar5 = local_b0;" (assignment_expression "puVar5 = local_b0" identifier = identifier) ;) (do_statement "do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar10 = *pbVar8 < (byte)*puVar5;\n    uVar11 = *pbVar8 == (byte)*puVar5;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);\n  } while ((bool)uVar11);" do (compound_statement "{\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar10 = *pbVar8 < (byte)*puVar5;\n    uVar11 = *pbVar8 == (byte)*puVar5;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);\n  }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "uVar10 = *pbVar8 < (byte)*puVar5;" (assignment_expression "uVar10 = *pbVar8 < (byte)*puVar5" identifier = (binary_expression "*pbVar8 < (byte)*puVar5" (pointer_expression "*pbVar8" * identifier) < (binary_expression "(byte)*puVar5" (parenthesized_expression "(byte)" ( identifier )) * identifier))) ;) (expression_statement "uVar11 = *pbVar8 == (byte)*puVar5;" (assignment_expression "uVar11 = *pbVar8 == (byte)*puVar5" identifier = (binary_expression "*pbVar8 == (byte)*puVar5" (pointer_expression "*pbVar8" * identifier) == (binary_expression "(byte)*puVar5" (parenthesized_expression "(byte)" ( identifier )) * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar8 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);" (assignment_expression "puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1)" identifier = (cast_expression "(ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + (ulong)bVar12 * -2 + 1)" ( (binary_expression "(long)puVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "(long)puVar5 + (ulong)bVar12 * -2" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) }) while (parenthesized_expression "((bool)uVar11)" ( (cast_expression "(bool)uVar11" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (if_statement "if ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10) goto LAB_001ad012;" if (parenthesized_expression "((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)" ( (binary_expression "(!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10" (parenthesized_expression "(!(bool)uVar10 && !(bool)uVar11)" ( (binary_expression "!(bool)uVar10 && !(bool)uVar11" (unary_expression "!(bool)uVar10" ! (cast_expression "(bool)uVar10" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar11" ! (cast_expression "(bool)uVar11" ( (type_descriptor "bool" primitive_type) ) identifier))) )) != (cast_expression "(bool)uVar10" ( (type_descriptor "bool" primitive_type) ) identifier)) )) (goto_statement "goto LAB_001ad012;" goto statement_identifier ;)) (expression_statement "local_78[0] = local_68;" (assignment_expression "local_78[0] = local_68" (subscript_expression "local_78[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_001665c0(local_78,local_b0,(byte *)((long)local_b0 + local_a0));" (call_expression "FUN_001665c0(local_78,local_b0,(byte *)((long)local_b0 + local_a0))" identifier (argument_list "(local_78,local_b0,(byte *)((long)local_b0 + local_a0))" ( identifier , identifier , (cast_expression "(byte *)((long)local_b0 + local_a0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_b0 + local_a0)" ( (binary_expression "(long)local_b0 + local_a0" (cast_expression "(long)local_b0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) ))) ;) (expression_statement "FUN_001ab710(&local_58,local_78);" (call_expression "FUN_001ab710(&local_58,local_78)" identifier (argument_list "(&local_58,local_78)" ( (pointer_expression "&local_58" & identifier) , identifier ))) ;) (expression_statement "uVar2 = local_88[0];" (assignment_expression "uVar2 = local_88[0]" identifier = (subscript_expression "local_88[0]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = local_98;" (assignment_expression "puVar5 = local_98" identifier = identifier) ;) (if_statement "if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }\n    *(byte *)((long)local_98 + local_50) = 0;\n    local_90 = local_50;\n  }\n  else {\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }" if (parenthesized_expression "(local_58 == local_48)" ( (binary_expression "local_58 == local_48" identifier == identifier) )) (compound_statement "{\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }\n    *(byte *)((long)local_98 + local_50) = 0;\n    local_90 = local_50;\n  }" { (if_statement "if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (compound_statement "{\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }" { (if_statement "if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }" if (parenthesized_expression "(local_50 == 1)" ( (binary_expression "local_50 == 1" identifier == number_literal) )) (compound_statement "{\n        *(byte *)local_98 = (byte)local_48[0];\n      }" { (expression_statement "*(byte *)local_98 = (byte)local_48[0];" (assignment_expression "*(byte *)local_98 = (byte)local_48[0]" (pointer_expression "*(byte *)local_98" * (cast_expression "(byte *)local_98" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(byte)local_48[0]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "local_48[0]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        memcpy(local_98,local_58,local_50);\n      }" else (compound_statement "{\n        memcpy(local_98,local_58,local_50);\n      }" { (expression_statement "memcpy(local_98,local_58,local_50);" (call_expression "memcpy(local_98,local_58,local_50)" identifier (argument_list "(local_98,local_58,local_50)" ( identifier , identifier , identifier ))) ;) }))) })) (expression_statement "*(byte *)((long)local_98 + local_50) = 0;" (assignment_expression "*(byte *)((long)local_98 + local_50) = 0" (pointer_expression "*(byte *)((long)local_98 + local_50)" * (cast_expression "(byte *)((long)local_98 + local_50)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_98 + local_50)" ( (binary_expression "(long)local_98 + local_50" (cast_expression "(long)local_98" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "local_90 = local_50;" (assignment_expression "local_90 = local_50" identifier = identifier) ;) }) (else_clause "else {\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }" else (compound_statement "{\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }" { (if_statement "if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }" if (parenthesized_expression "(local_98 != local_88)" ( (binary_expression "local_98 != local_88" identifier != identifier) )) (compound_statement "{\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }" { (expression_statement "local_98 = local_58;" (assignment_expression "local_98 = local_58" identifier = identifier) ;) (expression_statement "local_90 = local_50;" (assignment_expression "local_90 = local_50" identifier = identifier) ;) (expression_statement "local_88[0] = local_48[0];" (assignment_expression "local_88[0] = local_48[0]" (subscript_expression "local_88[0]" identifier [ number_literal ]) = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) (if_statement "if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }" if (parenthesized_expression "(puVar5 != (ulong *)0x0)" ( (binary_expression "puVar5 != (ulong *)0x0" identifier != (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }" { (expression_statement "local_58 = puVar5;" (assignment_expression "local_58 = puVar5" identifier = identifier) ;) (expression_statement "local_48[0] = uVar2;" (assignment_expression "local_48[0] = uVar2" (subscript_expression "local_48[0]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_001ad26b;" goto statement_identifier ;) })) })) (expression_statement "local_88[0] = local_48[0];" (assignment_expression "local_88[0] = local_48[0]" (subscript_expression "local_88[0]" identifier [ number_literal ]) = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) (expression_statement "local_90 = local_50;" (assignment_expression "local_90 = local_50" identifier = identifier) ;) (expression_statement "local_98 = local_58;" (assignment_expression "local_98 = local_58" identifier = identifier) ;) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) }))) (labeled_statement "LAB_001ad26b:\n  local_50 = 0;" statement_identifier : (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;)) (expression_statement "*(byte *)local_58 = 0;" (assignment_expression "*(byte *)local_58 = 0" (pointer_expression "*(byte *)local_58" * (cast_expression "(byte *)local_58" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if (local_58 != local_48) {\n    FUN_002dac70();\n  }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n    FUN_002dac70();\n  }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_78[0] != local_68) {\n    FUN_002dac70();\n  }" if (parenthesized_expression "(local_78[0] != local_68)" ( (binary_expression "local_78[0] != local_68" (subscript_expression "local_78[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    FUN_002dac70();\n  }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_b0 = local_98;" (assignment_expression "local_b0 = local_98" identifier = identifier) ;) (expression_statement "local_a0 = local_90;" (assignment_expression "local_a0 = local_90" identifier = identifier) ;) (labeled_statement "LAB_001ad012:\n  puVar5 = local_b0;" statement_identifier : (expression_statement "puVar5 = local_b0;" (assignment_expression "puVar5 = local_b0" identifier = identifier) ;)) (if_statement "if ((param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    \n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }\n  }" if (parenthesized_expression "((param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0'))" ( (binary_expression "(param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')" (parenthesized_expression "(param_6 != '\0')" ( (binary_expression "param_6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')" ( (binary_expression "*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0'" (pointer_expression "*(char *)(*(long *)(param_1 + 8) + 0x148)" * (cast_expression "(char *)(*(long *)(param_1 + 8) + 0x148)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 8) + 0x148)" ( (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    \n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }\n  }" { (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" { (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    \n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }" if (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0')" ( (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    \n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }" { (expression_statement "plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);" (assignment_expression "plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18)" identifier = (pointer_expression "*(long **)(PTR_DAT_0043e6b0 + 0x18)" * (cast_expression "(long **)(PTR_DAT_0043e6b0 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x18)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (plVar4 == (long *)0x0) {\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }" if (parenthesized_expression "(plVar4 == (long *)0x0)" ( (binary_expression "plVar4 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }" { (expression_statement "FUN_0017c650("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (if_statement "if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }" if (parenthesized_expression "((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0))" ( (binary_expression "(*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)" (parenthesized_expression "(*(code **)(*plVar4 + 0x110) == FUN_001b0f60)" ( (binary_expression "*(code **)(*plVar4 + 0x110) == FUN_001b0f60" (pointer_expression "*(code **)(*plVar4 + 0x110)" * (cast_expression "(code **)(*plVar4 + 0x110)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x110)" ( (binary_expression "*plVar4 + 0x110" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == identifier) )) || (parenthesized_expression "(puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)" ( (comma_expression "puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0" (assignment_expression "puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0)" identifier = (cast_expression "(ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0)" (parenthesized_expression "(**(code **)(*plVar4 + 0x110))" ( (pointer_expression "**(code **)(*plVar4 + 0x110)" * (pointer_expression "*(code **)(*plVar4 + 0x110)" * (cast_expression "(code **)(*plVar4 + 0x110)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x110)" ( (binary_expression "*plVar4 + 0x110" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(plVar4,param_2,local_b0,&local_a0)" ( identifier , identifier , identifier , (pointer_expression "&local_a0" & identifier) ))))) , (binary_expression "puVar5 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }" { (expression_statement "puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);" (assignment_expression "puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0)" identifier = (cast_expression "(ulong *)FUN_001a6e90(param_2,local_b0,&local_a0)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001a6e90(param_2,local_b0,&local_a0)" identifier (argument_list "(param_2,local_b0,&local_a0)" ( identifier , identifier , (pointer_expression "&local_a0" & identifier) ))))) ;) })) })) })) (expression_statement "local_b0 = puVar5;" (assignment_expression "local_b0 = puVar5" identifier = identifier) ;) (expression_statement "uVar3 = FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78);" (assignment_expression "uVar3 = FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78)" identifier = (call_expression "FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78)" identifier (argument_list "(param_1 + 0x10,local_b0,local_a0,1,local_78)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , identifier , identifier , number_literal , identifier )))) ;) (expression_statement "plVar4 = (long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8);" (assignment_expression "plVar4 = (long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8)" identifier = (cast_expression "(long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8)" identifier (argument_list "(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8)" ( identifier , identifier , (subscript_expression "local_78[0]" identifier [ number_literal ]) , identifier , identifier , identifier , identifier ))))) ;) (if_statement "if (local_98 != local_88) {\n    FUN_002dac70();\n  }" if (parenthesized_expression "(local_98 != local_88)" ( (binary_expression "local_98 != local_88" identifier != identifier) )) (compound_statement "{\n    FUN_002dac70();\n  }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return plVar4;" return identifier ;) })))
(translation_unit (function_definition (sized_type_specifier long) (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE) ) IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (char_literal ' escape_sequence '))) ;) (if_statement if (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE) ) IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT , IDENT , (pointer_expression & IDENT) , IDENT , (pointer_expression & IDENT) , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content escape_sequence string_content ") , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ 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 IDENT & LIT)) ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , IDENT ))) ;) (return_statement return (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) | LIT)) , (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (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 (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT & LIT)) ;) })) (expression_statement (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 (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (return_statement return IDENT ;) })) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (binary_expression (parenthesized_expression ( IDENT )) * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (binary_expression (parenthesized_expression ( IDENT )) * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) ;) }) while (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE) ) IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! (cast_expression ( (type_descriptor TYPE) ) IDENT)) && (unary_expression ! (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) != (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) ))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) }))) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (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) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 , IDENT , IDENT , (pointer_expression & IDENT) ))))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) ))))) ;) })) })) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT , IDENT , IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return IDENT ;) })))
(function_definition "long * FUN_001acf30(long param_1,long param_2,ulong *param_3,undefined4 param_4,uint param_5,\n                   char param_6,undefined4 param_7,undefined1 param_8,char param_9,\n                   undefined1 param_10)\n\n{\n  char cVar1;\n  ulong uVar2;\n  undefined8 uVar3;\n  long *plVar4;\n  ulong *puVar5;\n  undefined8 uVar6;\n  long lVar7;\n  byte *pbVar8;\n  uint uVar9;\n  undefined1 uVar10;\n  undefined1 uVar11;\n  byte bVar12;\n  undefined8 uStack_d0;\n  ulong *local_b0;\n  size_t local_a0;\n  ulong *local_98;\n  size_t local_90;\n  ulong local_88 [2];\n  undefined1 *local_78 [2];\n  undefined1 local_68 [16];\n  ulong *local_58;\n  size_t local_50;\n  ulong local_48 [3];\n  \n  bVar12 = 0;\n  if ((param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0')) {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_001a4340();\n  }\n  uVar9 = param_5 & 0xfffff50f;\n  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n    uVar9 = param_5 & 0xfffff58f;\n  }\n  cVar1 = *(char *)(*(long *)(param_1 + 8) + 0x148);\n  uVar10 = cVar1 == '\0';\n  uVar11 = cVar1 == '\x01';\n  local_b0 = param_3;\n  if ((bool)uVar11) {\n    uVar10 = false;\n    uVar11 = param_9 == '\0';\n    if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }\n  }\n  local_a0 = strlen((char *)local_b0);\n  local_98 = local_88;\n  local_88[0] = local_88[0] & 0xffffffffffffff00;\n  lVar7 = 7;\n  local_90 = 0;\n  pbVar8 = (byte *)".zdebug";\n  puVar5 = local_b0;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar10 = *pbVar8 < (byte)*puVar5;\n    uVar11 = *pbVar8 == (byte)*puVar5;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);\n  } while ((bool)uVar11);\n  if ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10) goto LAB_001ad012;\n  local_78[0] = local_68;\n                    \n  FUN_001665c0(local_78,local_b0,(byte *)((long)local_b0 + local_a0));\n                    \n  FUN_001ab710(&local_58,local_78);\n  uVar2 = local_88[0];\n  puVar5 = local_98;\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }\n    *(byte *)((long)local_98 + local_50) = 0;\n    local_90 = local_50;\n  }\n  else {\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }\nLAB_001ad26b:\n  local_50 = 0;\n  *(byte *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_002dac70();\n  }\n  if (local_78[0] != local_68) {\n    FUN_002dac70();\n  }\n  local_b0 = local_98;\n  local_a0 = local_90;\nLAB_001ad012:\n  puVar5 = local_b0;\n  if ((param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    \n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }\n  }\n  local_b0 = puVar5;\n                    \n  uVar3 = FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78);\n  plVar4 = (long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8);\n  if (local_98 != local_88) {\n    FUN_002dac70();\n  }\n  return plVar4;\n}" (sized_type_specifier "long" (long "long")) (pointer_declarator "* FUN_001acf30(long param_1,long param_2,ulong *param_3,undefined4 param_4,uint param_5,\n                   char param_6,undefined4 param_7,undefined1 param_8,char param_9,\n                   undefined1 param_10)" (* "*") (function_declarator "FUN_001acf30(long param_1,long param_2,ulong *param_3,undefined4 param_4,uint param_5,\n                   char param_6,undefined4 param_7,undefined1 param_8,char param_9,\n                   undefined1 param_10)" (identifier "FUN_001acf30") (parameter_list "(long param_1,long param_2,ulong *param_3,undefined4 param_4,uint param_5,\n                   char param_6,undefined4 param_7,undefined1 param_8,char param_9,\n                   undefined1 param_10)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "ulong *param_3" (type_identifier "ulong") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) (, ",") (parameter_declaration "char param_6" (primitive_type "char") (identifier "param_6")) (, ",") (parameter_declaration "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) (, ",") (parameter_declaration "undefined1 param_8" (type_identifier "undefined1") (identifier "param_8")) (, ",") (parameter_declaration "char param_9" (primitive_type "char") (identifier "param_9")) (, ",") (parameter_declaration "undefined1 param_10" (type_identifier "undefined1") (identifier "param_10")) () ")")))) (compound_statement "{\n  char cVar1;\n  ulong uVar2;\n  undefined8 uVar3;\n  long *plVar4;\n  ulong *puVar5;\n  undefined8 uVar6;\n  long lVar7;\n  byte *pbVar8;\n  uint uVar9;\n  undefined1 uVar10;\n  undefined1 uVar11;\n  byte bVar12;\n  undefined8 uStack_d0;\n  ulong *local_b0;\n  size_t local_a0;\n  ulong *local_98;\n  size_t local_90;\n  ulong local_88 [2];\n  undefined1 *local_78 [2];\n  undefined1 local_68 [16];\n  ulong *local_58;\n  size_t local_50;\n  ulong local_48 [3];\n  \n  bVar12 = 0;\n  if ((param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0')) {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_001a4340();\n  }\n  uVar9 = param_5 & 0xfffff50f;\n  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n    uVar9 = param_5 & 0xfffff58f;\n  }\n  cVar1 = *(char *)(*(long *)(param_1 + 8) + 0x148);\n  uVar10 = cVar1 == '\0';\n  uVar11 = cVar1 == '\x01';\n  local_b0 = param_3;\n  if ((bool)uVar11) {\n    uVar10 = false;\n    uVar11 = param_9 == '\0';\n    if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }\n  }\n  local_a0 = strlen((char *)local_b0);\n  local_98 = local_88;\n  local_88[0] = local_88[0] & 0xffffffffffffff00;\n  lVar7 = 7;\n  local_90 = 0;\n  pbVar8 = (byte *)".zdebug";\n  puVar5 = local_b0;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar10 = *pbVar8 < (byte)*puVar5;\n    uVar11 = *pbVar8 == (byte)*puVar5;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);\n  } while ((bool)uVar11);\n  if ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10) goto LAB_001ad012;\n  local_78[0] = local_68;\n                    \n  FUN_001665c0(local_78,local_b0,(byte *)((long)local_b0 + local_a0));\n                    \n  FUN_001ab710(&local_58,local_78);\n  uVar2 = local_88[0];\n  puVar5 = local_98;\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }\n    *(byte *)((long)local_98 + local_50) = 0;\n    local_90 = local_50;\n  }\n  else {\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }\nLAB_001ad26b:\n  local_50 = 0;\n  *(byte *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_002dac70();\n  }\n  if (local_78[0] != local_68) {\n    FUN_002dac70();\n  }\n  local_b0 = local_98;\n  local_a0 = local_90;\nLAB_001ad012:\n  puVar5 = local_b0;\n  if ((param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    \n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }\n  }\n  local_b0 = puVar5;\n                    \n  uVar3 = FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78);\n  plVar4 = (long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8);\n  if (local_98 != local_88) {\n    FUN_002dac70();\n  }\n  return plVar4;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "ulong uVar2;" (type_identifier "ulong") (identifier "uVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "long *plVar4;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar4" (* "*") (identifier "plVar4")) (; ";")) (declaration "ulong *puVar5;" (type_identifier "ulong") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "undefined1 uVar10;" (type_identifier "undefined1") (identifier "uVar10") (; ";")) (declaration "undefined1 uVar11;" (type_identifier "undefined1") (identifier "uVar11") (; ";")) (declaration "byte bVar12;" (type_identifier "byte") (identifier "bVar12") (; ";")) (declaration "undefined8 uStack_d0;" (type_identifier "undefined8") (identifier "uStack_d0") (; ";")) (declaration "ulong *local_b0;" (type_identifier "ulong") (pointer_declarator "*local_b0" (* "*") (identifier "local_b0")) (; ";")) (declaration "size_t local_a0;" (primitive_type "size_t") (identifier "local_a0") (; ";")) (declaration "ulong *local_98;" (type_identifier "ulong") (pointer_declarator "*local_98" (* "*") (identifier "local_98")) (; ";")) (declaration "size_t local_90;" (primitive_type "size_t") (identifier "local_90") (; ";")) (declaration "ulong local_88 [2];" (type_identifier "ulong") (array_declarator "local_88 [2]" (identifier "local_88") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "undefined1 *local_78 [2];" (type_identifier "undefined1") (pointer_declarator "*local_78 [2]" (* "*") (array_declarator "local_78 [2]" (identifier "local_78") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_68 [16];" (type_identifier "undefined1") (array_declarator "local_68 [16]" (identifier "local_68") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "ulong *local_58;" (type_identifier "ulong") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "size_t local_50;" (primitive_type "size_t") (identifier "local_50") (; ";")) (declaration "ulong local_48 [3];" (type_identifier "ulong") (array_declarator "local_48 [3]" (identifier "local_48") ([ "[") (number_literal "3") (] "]")) (; ";")) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" (identifier "bVar12") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0')) {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }" (if "if") (parenthesized_expression "((param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0'))" (( "(") (binary_expression "(param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0')" (parenthesized_expression "(param_6 != '\0')" (( "(") (binary_expression "param_6 != '\0'" (identifier "param_6") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(param_1 + 0x369) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x369) != '\0'" (pointer_expression "*(char *)(param_1 + 0x369)" (* "*") (cast_expression "(char *)(param_1 + 0x369)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x369)" (( "(") (binary_expression "param_1 + 0x369" (identifier "param_1") (+ "+") (number_literal "0x369")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");\n  }" ({ "{") (expression_statement "FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section")" (identifier "FUN_0017c650") (argument_list "("../../gold/layout.cc",0x3b8,"choose_output_section")" (( "(") (string_literal ""../../gold/layout.cc"" (" """) (string_content "../../gold/layout.cc") (" """)) (, ",") (number_literal "0x3b8") (, ",") (string_literal ""choose_output_section"" (" """) (string_content "choose_output_section") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_001a4340();\n  }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_001a4340();\n  }" ({ "{") (expression_statement "FUN_001a4340();" (call_expression "FUN_001a4340()" (identifier "FUN_001a4340") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar9 = param_5 & 0xfffff50f;" (assignment_expression "uVar9 = param_5 & 0xfffff50f" (identifier "uVar9") (= "=") (binary_expression "param_5 & 0xfffff50f" (identifier "param_5") (& "&") (number_literal "0xfffff50f"))) (; ";")) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {\n    uVar9 = param_5 & 0xfffff58f;\n  }" (if "if") (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0')" (( "(") (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" (* "*") (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x5051")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    uVar9 = param_5 & 0xfffff58f;\n  }" ({ "{") (expression_statement "uVar9 = param_5 & 0xfffff58f;" (assignment_expression "uVar9 = param_5 & 0xfffff58f" (identifier "uVar9") (= "=") (binary_expression "param_5 & 0xfffff58f" (identifier "param_5") (& "&") (number_literal "0xfffff58f"))) (; ";")) (} "}"))) (expression_statement "cVar1 = *(char *)(*(long *)(param_1 + 8) + 0x148);" (assignment_expression "cVar1 = *(char *)(*(long *)(param_1 + 8) + 0x148)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(*(long *)(param_1 + 8) + 0x148)" (* "*") (cast_expression "(char *)(*(long *)(param_1 + 8) + 0x148)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 8) + 0x148)" (( "(") (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x148")) () ")"))))) (; ";")) (expression_statement "uVar10 = cVar1 == '\0';" (assignment_expression "uVar10 = cVar1 == '\0'" (identifier "uVar10") (= "=") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (expression_statement "uVar11 = cVar1 == '\x01';" (assignment_expression "uVar11 = cVar1 == '\x01'" (identifier "uVar11") (= "=") (binary_expression "cVar1 == '\x01'" (identifier "cVar1") (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'")))) (; ";")) (expression_statement "local_b0 = param_3;" (assignment_expression "local_b0 = param_3" (identifier "local_b0") (= "=") (identifier "param_3")) (; ";")) (if_statement "if ((bool)uVar11) {\n    uVar10 = false;\n    uVar11 = param_9 == '\0';\n    if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }\n  }" (if "if") (parenthesized_expression "((bool)uVar11)" (( "(") (cast_expression "(bool)uVar11" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar11")) () ")")) (compound_statement "{\n    uVar10 = false;\n    uVar11 = param_9 == '\0';\n    if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }\n  }" ({ "{") (expression_statement "uVar10 = false;" (assignment_expression "uVar10 = false" (identifier "uVar10") (= "=") (false "false")) (; ";")) (expression_statement "uVar11 = param_9 == '\0';" (assignment_expression "uVar11 = param_9 == '\0'" (identifier "uVar11") (= "=") (binary_expression "param_9 == '\0'" (identifier "param_9") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (if_statement "if ((bool)uVar11) {\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }" (if "if") (parenthesized_expression "((bool)uVar11)" (( "(") (cast_expression "(bool)uVar11" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar11")) () ")")) (compound_statement "{\n      uVar3 = 0;\n      if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }\n      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);\n      if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }\n      if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }\n      uVar10 = false;\n      uVar11 = local_58 == (ulong *)0x0;\n      if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }\n    }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_2 != 0) {\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar3 = *(undefined8 *)(param_2 + 8);\n      }" ({ "{") (expression_statement "uVar3 = *(undefined8 *)(param_2 + 8);" (assignment_expression "uVar3 = *(undefined8 *)(param_2 + 8)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(param_2 + 8)" (* "*") (cast_expression "(undefined8 *)(param_2 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10);" (assignment_expression "local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10)" (identifier "local_b0") (= "=") (cast_expression "(ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10)" (identifier "FUN_00257f70") (argument_list "(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,\n                                       local_78,&local_98,param_10)" (( "(") (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x148")) (, ",") (identifier "uVar3") (, ",") (identifier "param_3") (, ",") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "local_78") (, ",") (pointer_expression "&local_98" (& "&") (identifier "local_98")) (, ",") (identifier "param_10") () ")"))))) (; ";")) (if_statement "if (local_b0 == (ulong *)0x0) {\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }" (if "if") (parenthesized_expression "(local_b0 == (ulong *)0x0)" (( "(") (binary_expression "local_b0 == (ulong *)0x0" (identifier "local_b0") (== "==") (cast_expression "(ulong *)0x0" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }\n        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }\n        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;\n        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);\n        FUN_00178100(uVar3,uVar6,param_3);\n        return (long *)0x0;\n      }" ({ "{") (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n          return (long *)0x0;\n        }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return (long *)0x0;\n        }" ({ "{") (return_statement "return (long *)0x0;" (return "return") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {\n          return (long *)0x0;\n        }" (if "if") (parenthesized_expression "((PTR_DAT_0043e6b0[0x24] & 2) == 0)" (( "(") (binary_expression "(PTR_DAT_0043e6b0[0x24] & 2) == 0" (parenthesized_expression "(PTR_DAT_0043e6b0[0x24] & 2)" (( "(") (binary_expression "PTR_DAT_0043e6b0[0x24] & 2" (subscript_expression "PTR_DAT_0043e6b0[0x24]" (identifier "PTR_DAT_0043e6b0") ([ "[") (number_literal "0x24") (] "]")) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return (long *)0x0;\n        }" ({ "{") (return_statement "return (long *)0x0;" (return "return") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;" (assignment_expression "uVar3 = *(undefined8 *)PTR_DAT_0043e6b0" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)PTR_DAT_0043e6b0" (* "*") (cast_expression "(undefined8 *)PTR_DAT_0043e6b0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DAT_0043e6b0")))) (; ";")) (expression_statement "uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0);" (assignment_expression "uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0)" (identifier "uVar6") (= "=") (call_expression "gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0)" (identifier "gettext") (argument_list "("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"\n                        ,uStack_d0)" (( "(") (string_literal ""Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"" (" """) (string_content "Unable to create output section ") (escape_sequence "\'") (string_content "%s") (escape_sequence "\'") (string_content " because it is not allowed by the SECTIONS clause of the linker script") (" """)) (, ",") (identifier "uStack_d0") () ")")))) (; ";")) (expression_statement "FUN_00178100(uVar3,uVar6,param_3);" (call_expression "FUN_00178100(uVar3,uVar6,param_3)" (identifier "FUN_00178100") (argument_list "(uVar3,uVar6,param_3)" (( "(") (identifier "uVar3") (, ",") (identifier "uVar6") (, ",") (identifier "param_3") () ")"))) (; ";")) (return_statement "return (long *)0x0;" (return "return") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if ((int)local_78[0] != 0) {\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }" (if "if") (parenthesized_expression "((int)local_78[0] != 0)" (( "(") (binary_expression "(int)local_78[0] != 0" (cast_expression "(int)local_78[0]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]"))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }\n        uVar9 = uVar9 & 2;\n      }" ({ "{") (if_statement "if ((int)local_78[0] != 1) {\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }" (if "if") (parenthesized_expression "((int)local_78[0] != 1)" (( "(") (binary_expression "(int)local_78[0] != 1" (cast_expression "(int)local_78[0]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]"))) (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n                    \n          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");\n        }" ({ "{") (expression_statement "FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section")" (identifier "FUN_0017c650") (argument_list "("../../gold/layout.cc",0x3de,"choose_output_section")" (( "(") (string_literal ""../../gold/layout.cc"" (" """) (string_content "../../gold/layout.cc") (" """)) (, ",") (number_literal "0x3de") (, ",") (string_literal ""choose_output_section"" (" """) (string_content "choose_output_section") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar9 = uVar9 & 2;" (assignment_expression "uVar9 = uVar9 & 2" (identifier "uVar9") (= "=") (binary_expression "uVar9 & 2" (identifier "uVar9") (& "&") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "uVar10 = false;" (assignment_expression "uVar10 = false" (identifier "uVar10") (= "=") (false "false")) (; ";")) (expression_statement "uVar11 = local_58 == (ulong *)0x0;" (assignment_expression "uVar11 = local_58 == (ulong *)0x0" (identifier "uVar11") (= "=") (binary_expression "local_58 == (ulong *)0x0" (identifier "local_58") (== "==") (cast_expression "(ulong *)0x0" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (if_statement "if (!(bool)uVar11) {\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }" (if "if") (parenthesized_expression "(!(bool)uVar11)" (( "(") (unary_expression "!(bool)uVar11" (! "!") (cast_expression "(bool)uVar11" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar11"))) () ")")) (compound_statement "{\n        if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }\n        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);\n        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);\n        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;\n        if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }\n        *local_58 = (ulong)plVar4;\n        return plVar4;\n      }" ({ "{") (if_statement "if (*local_58 != 0) {\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }" (if "if") (parenthesized_expression "(*local_58 != 0)" (( "(") (binary_expression "*local_58 != 0" (pointer_expression "*local_58" (* "*") (identifier "local_58")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_001f5d70(*local_58,uVar9);\n          return (long *)*local_58;\n        }" ({ "{") (expression_statement "FUN_001f5d70(*local_58,uVar9);" (call_expression "FUN_001f5d70(*local_58,uVar9)" (identifier "FUN_001f5d70") (argument_list "(*local_58,uVar9)" (( "(") (pointer_expression "*local_58" (* "*") (identifier "local_58")) (, ",") (identifier "uVar9") () ")"))) (; ";")) (return_statement "return (long *)*local_58;" (return "return") (cast_expression "(long *)*local_58" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_58" (* "*") (identifier "local_58"))) (; ";")) (} "}"))) (expression_statement "uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);" (assignment_expression "uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0)" (identifier "uVar3") (= "=") (call_expression "FUN_0026e6a0(param_1 + 0x10,local_b0,0,0)" (identifier "FUN_0026e6a0") (argument_list "(param_1 + 0x10,local_b0,0,0)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) (, ",") (identifier "local_b0") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);" (assignment_expression "plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8)" (identifier "plVar4") (= "=") (cast_expression "(long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8)" (identifier "FUN_001a8f30") (argument_list "(param_1,uVar3,param_4,uVar9,param_7,param_8)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") (, ",") (identifier "param_4") (, ",") (identifier "uVar9") (, ",") (identifier "param_7") (, ",") (identifier "param_8") () ")"))))) (; ";")) (expression_statement "*(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;" (assignment_expression "*(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40" (pointer_expression "*(byte *)(plVar4 + 0x19)" (* "*") (cast_expression "(byte *)(plVar4 + 0x19)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4 + 0x19)" (( "(") (binary_expression "plVar4 + 0x19" (identifier "plVar4") (+ "+") (number_literal "0x19")) () ")")))) (= "=") (binary_expression "*(byte *)(plVar4 + 0x19) | 0x40" (pointer_expression "*(byte *)(plVar4 + 0x19)" (* "*") (cast_expression "(byte *)(plVar4 + 0x19)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4 + 0x19)" (( "(") (binary_expression "plVar4 + 0x19" (identifier "plVar4") (+ "+") (number_literal "0x19")) () ")")))) (| "|") (number_literal "0x40"))) (; ";")) (if_statement "if ((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }" (if "if") (parenthesized_expression "((((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0))" (( "(") (binary_expression "(((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&\n           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)" (parenthesized_expression "(((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0))" (( "(") (binary_expression "((int)local_78[0] == 1) &&\n            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)" (parenthesized_expression "((int)local_78[0] == 1)" (( "(") (binary_expression "(int)local_78[0] == 1" (cast_expression "(int)local_78[0]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]"))) (== "==") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "(*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0)" (( "(") (comma_expression "*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,\n            (*(byte *)(plVar4 + 0xe) & 2) == 0" (assignment_expression "*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8" (pointer_expression "*(byte *)((long)plVar4 + 0xca)" (* "*") (cast_expression "(byte *)((long)plVar4 + 0xca)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar4 + 0xca)" (( "(") (binary_expression "(long)plVar4 + 0xca" (cast_expression "(long)plVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar4")) (+ "+") (number_literal "0xca")) () ")")))) (= "=") (binary_expression "*(byte *)((long)plVar4 + 0xca) | 8" (pointer_expression "*(byte *)((long)plVar4 + 0xca)" (* "*") (cast_expression "(byte *)((long)plVar4 + 0xca)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar4 + 0xca)" (( "(") (binary_expression "(long)plVar4 + 0xca" (cast_expression "(long)plVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar4")) (+ "+") (number_literal "0xca")) () ")")))) (| "|") (number_literal "8"))) (, ",") (binary_expression "(*(byte *)(plVar4 + 0xe) & 2) == 0" (parenthesized_expression "(*(byte *)(plVar4 + 0xe) & 2)" (( "(") (binary_expression "*(byte *)(plVar4 + 0xe) & 2" (pointer_expression "*(byte *)(plVar4 + 0xe)" (* "*") (cast_expression "(byte *)(plVar4 + 0xe)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4 + 0xe)" (( "(") (binary_expression "plVar4 + 0xe" (identifier "plVar4") (+ "+") (number_literal "0xe")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)" (( "(") (comma_expression "bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0" (assignment_expression "bVar12 = *(byte *)(plVar4 + 4)" (identifier "bVar12") (= "=") (pointer_expression "*(byte *)(plVar4 + 4)" (* "*") (cast_expression "(byte *)(plVar4 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4 + 4)" (( "(") (binary_expression "plVar4 + 4" (identifier "plVar4") (+ "+") (number_literal "4")) () ")"))))) (, ",") (binary_expression "(bVar12 & 1) != 0" (parenthesized_expression "(bVar12 & 1)" (( "(") (binary_expression "bVar12 & 1" (identifier "bVar12") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }\n          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;\n          if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }\n          (**(code **)(*plVar4 + 0x78))(plVar4);\n        }" ({ "{") (if_statement "if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }" (if "if") (parenthesized_expression "(((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0))" (( "(") (binary_expression "((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)" (parenthesized_expression "((plVar4[1] != 0) || ((bVar12 & 4) != 0))" (( "(") (binary_expression "(plVar4[1] != 0) || ((bVar12 & 4) != 0)" (parenthesized_expression "(plVar4[1] != 0)" (( "(") (binary_expression "plVar4[1] != 0" (subscript_expression "plVar4[1]" (identifier "plVar4") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((bVar12 & 4) != 0)" (( "(") (binary_expression "(bVar12 & 4) != 0" (parenthesized_expression "(bVar12 & 4)" (( "(") (binary_expression "bVar12 & 4" (identifier "bVar12") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((bVar12 & 2) != 0)" (( "(") (binary_expression "(bVar12 & 2) != 0" (parenthesized_expression "(bVar12 & 2)" (( "(") (binary_expression "bVar12 & 2" (identifier "bVar12") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");\n          }" ({ "{") (expression_statement "FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section")" (identifier "FUN_0017c650") (argument_list "("../../gold/layout.cc",0x406,"choose_output_section")" (( "(") (string_literal ""../../gold/layout.cc"" (" """) (string_content "../../gold/layout.cc") (" """)) (, ",") (number_literal "0x406") (, ",") (string_literal ""choose_output_section"" (" """) (string_content "choose_output_section") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "*(byte *)(plVar4 + 4) = bVar12 & 0xfa;" (assignment_expression "*(byte *)(plVar4 + 4) = bVar12 & 0xfa" (pointer_expression "*(byte *)(plVar4 + 4)" (* "*") (cast_expression "(byte *)(plVar4 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4 + 4)" (( "(") (binary_expression "plVar4 + 4" (identifier "plVar4") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "bVar12 & 0xfa" (identifier "bVar12") (& "&") (number_literal "0xfa"))) (; ";")) (if_statement "if ((bVar12 & 8) == 0) {\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }" (if "if") (parenthesized_expression "((bVar12 & 8) == 0)" (( "(") (binary_expression "(bVar12 & 8) == 0" (parenthesized_expression "(bVar12 & 8)" (( "(") (binary_expression "bVar12 & 8" (identifier "bVar12") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;\n          }" ({ "{") (expression_statement "*(byte *)(plVar4 + 4) = bVar12 & 0xf8;" (assignment_expression "*(byte *)(plVar4 + 4) = bVar12 & 0xf8" (pointer_expression "*(byte *)(plVar4 + 4)" (* "*") (cast_expression "(byte *)(plVar4 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4 + 4)" (( "(") (binary_expression "plVar4 + 4" (identifier "plVar4") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "bVar12 & 0xf8" (identifier "bVar12") (& "&") (number_literal "0xf8"))) (; ";")) (} "}"))) (expression_statement "(**(code **)(*plVar4 + 0x78))(plVar4);" (call_expression "(**(code **)(*plVar4 + 0x78))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x78))" (( "(") (pointer_expression "**(code **)(*plVar4 + 0x78)" (* "*") (pointer_expression "*(code **)(*plVar4 + 0x78)" (* "*") (cast_expression "(code **)(*plVar4 + 0x78)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x78)" (( "(") (binary_expression "*plVar4 + 0x78" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x78")) () ")"))))) () ")")) (argument_list "(plVar4)" (( "(") (identifier "plVar4") () ")"))) (; ";")) (} "}"))) (expression_statement "*local_58 = (ulong)plVar4;" (assignment_expression "*local_58 = (ulong)plVar4" (pointer_expression "*local_58" (* "*") (identifier "local_58")) (= "=") (cast_expression "(ulong)plVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "plVar4"))) (; ";")) (return_statement "return plVar4;" (return "return") (identifier "plVar4") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "local_a0 = strlen((char *)local_b0);" (assignment_expression "local_a0 = strlen((char *)local_b0)" (identifier "local_a0") (= "=") (call_expression "strlen((char *)local_b0)" (identifier "strlen") (argument_list "((char *)local_b0)" (( "(") (cast_expression "(char *)local_b0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_b0")) () ")")))) (; ";")) (expression_statement "local_98 = local_88;" (assignment_expression "local_98 = local_88" (identifier "local_98") (= "=") (identifier "local_88")) (; ";")) (expression_statement "local_88[0] = local_88[0] & 0xffffffffffffff00;" (assignment_expression "local_88[0] = local_88[0] & 0xffffffffffffff00" (subscript_expression "local_88[0]" (identifier "local_88") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_88[0] & 0xffffffffffffff00" (subscript_expression "local_88[0]" (identifier "local_88") ([ "[") (number_literal "0") (] "]")) (& "&") (number_literal "0xffffffffffffff00"))) (; ";")) (expression_statement "lVar7 = 7;" (assignment_expression "lVar7 = 7" (identifier "lVar7") (= "=") (number_literal "7")) (; ";")) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" (identifier "local_90") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar8 = (byte *)".zdebug";" (assignment_expression "pbVar8 = (byte *)".zdebug"" (identifier "pbVar8") (= "=") (cast_expression "(byte *)".zdebug"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".zdebug"" (" """) (string_content ".zdebug") (" """)))) (; ";")) (expression_statement "puVar5 = local_b0;" (assignment_expression "puVar5 = local_b0" (identifier "puVar5") (= "=") (identifier "local_b0")) (; ";")) (do_statement "do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar10 = *pbVar8 < (byte)*puVar5;\n    uVar11 = *pbVar8 == (byte)*puVar5;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);\n  } while ((bool)uVar11);" (do "do") (compound_statement "{\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    uVar10 = *pbVar8 < (byte)*puVar5;\n    uVar11 = *pbVar8 == (byte)*puVar5;\n    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n    puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);\n  }" ({ "{") (if_statement "if (lVar7 == 0) break;" (if "if") (parenthesized_expression "(lVar7 == 0)" (( "(") (binary_expression "lVar7 == 0" (identifier "lVar7") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" (identifier "lVar7") (= "=") (binary_expression "lVar7 + -1" (identifier "lVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar10 = *pbVar8 < (byte)*puVar5;" (assignment_expression "uVar10 = *pbVar8 < (byte)*puVar5" (identifier "uVar10") (= "=") (binary_expression "*pbVar8 < (byte)*puVar5" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (< "<") (binary_expression "(byte)*puVar5" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (* "*") (identifier "puVar5")))) (; ";")) (expression_statement "uVar11 = *pbVar8 == (byte)*puVar5;" (assignment_expression "uVar11 = *pbVar8 == (byte)*puVar5" (identifier "uVar11") (= "=") (binary_expression "*pbVar8 == (byte)*puVar5" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (== "==") (binary_expression "(byte)*puVar5" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (* "*") (identifier "puVar5")))) (; ";")) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar12 * -2" (identifier "pbVar8") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);" (assignment_expression "puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1)" (identifier "puVar5") (= "=") (cast_expression "(ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar5 + (ulong)bVar12 * -2 + 1)" (( "(") (binary_expression "(long)puVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "(long)puVar5 + (ulong)bVar12 * -2" (cast_expression "(long)puVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar5")) (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((bool)uVar11)" (( "(") (cast_expression "(bool)uVar11" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar11")) () ")")) (; ";")) (if_statement "if ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10) goto LAB_001ad012;" (if "if") (parenthesized_expression "((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10)" (( "(") (binary_expression "(!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10" (parenthesized_expression "(!(bool)uVar10 && !(bool)uVar11)" (( "(") (binary_expression "!(bool)uVar10 && !(bool)uVar11" (unary_expression "!(bool)uVar10" (! "!") (cast_expression "(bool)uVar10" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar10"))) (&& "&&") (unary_expression "!(bool)uVar11" (! "!") (cast_expression "(bool)uVar11" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar11")))) () ")")) (!= "!=") (cast_expression "(bool)uVar10" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar10"))) () ")")) (goto_statement "goto LAB_001ad012;" (goto "goto") (statement_identifier "LAB_001ad012") (; ";"))) (expression_statement "local_78[0] = local_68;" (assignment_expression "local_78[0] = local_68" (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_68")) (; ";")) (expression_statement "FUN_001665c0(local_78,local_b0,(byte *)((long)local_b0 + local_a0));" (call_expression "FUN_001665c0(local_78,local_b0,(byte *)((long)local_b0 + local_a0))" (identifier "FUN_001665c0") (argument_list "(local_78,local_b0,(byte *)((long)local_b0 + local_a0))" (( "(") (identifier "local_78") (, ",") (identifier "local_b0") (, ",") (cast_expression "(byte *)((long)local_b0 + local_a0)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_b0 + local_a0)" (( "(") (binary_expression "(long)local_b0 + local_a0" (cast_expression "(long)local_b0" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_b0")) (+ "+") (identifier "local_a0")) () ")"))) () ")"))) (; ";")) (expression_statement "FUN_001ab710(&local_58,local_78);" (call_expression "FUN_001ab710(&local_58,local_78)" (identifier "FUN_001ab710") (argument_list "(&local_58,local_78)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "local_78") () ")"))) (; ";")) (expression_statement "uVar2 = local_88[0];" (assignment_expression "uVar2 = local_88[0]" (identifier "uVar2") (= "=") (subscript_expression "local_88[0]" (identifier "local_88") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "puVar5 = local_98;" (assignment_expression "puVar5 = local_98" (identifier "puVar5") (= "=") (identifier "local_98")) (; ";")) (if_statement "if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }\n    *(byte *)((long)local_98 + local_50) = 0;\n    local_90 = local_50;\n  }\n  else {\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }" (if "if") (parenthesized_expression "(local_58 == local_48)" (( "(") (binary_expression "local_58 == local_48" (identifier "local_58") (== "==") (identifier "local_48")) () ")")) (compound_statement "{\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }\n    *(byte *)((long)local_98 + local_50) = 0;\n    local_90 = local_50;\n  }" ({ "{") (if_statement "if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }" (if "if") (parenthesized_expression "(local_50 != 0)" (( "(") (binary_expression "local_50 != 0" (identifier "local_50") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }\n    }" ({ "{") (if_statement "if (local_50 == 1) {\n        *(byte *)local_98 = (byte)local_48[0];\n      }\n      else {\n        memcpy(local_98,local_58,local_50);\n      }" (if "if") (parenthesized_expression "(local_50 == 1)" (( "(") (binary_expression "local_50 == 1" (identifier "local_50") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        *(byte *)local_98 = (byte)local_48[0];\n      }" ({ "{") (expression_statement "*(byte *)local_98 = (byte)local_48[0];" (assignment_expression "*(byte *)local_98 = (byte)local_48[0]" (pointer_expression "*(byte *)local_98" (* "*") (cast_expression "(byte *)local_98" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_98"))) (= "=") (cast_expression "(byte)local_48[0]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n        memcpy(local_98,local_58,local_50);\n      }" (else "else") (compound_statement "{\n        memcpy(local_98,local_58,local_50);\n      }" ({ "{") (expression_statement "memcpy(local_98,local_58,local_50);" (call_expression "memcpy(local_98,local_58,local_50)" (identifier "memcpy") (argument_list "(local_98,local_58,local_50)" (( "(") (identifier "local_98") (, ",") (identifier "local_58") (, ",") (identifier "local_50") () ")"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "*(byte *)((long)local_98 + local_50) = 0;" (assignment_expression "*(byte *)((long)local_98 + local_50) = 0" (pointer_expression "*(byte *)((long)local_98 + local_50)" (* "*") (cast_expression "(byte *)((long)local_98 + local_50)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_98 + local_50)" (( "(") (binary_expression "(long)local_98 + local_50" (cast_expression "(long)local_98" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_98")) (+ "+") (identifier "local_50")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_90 = local_50;" (assignment_expression "local_90 = local_50" (identifier "local_90") (= "=") (identifier "local_50")) (; ";")) (} "}")) (else_clause "else {\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }" (else "else") (compound_statement "{\n    if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }\n    local_88[0] = local_48[0];\n    local_90 = local_50;\n    local_98 = local_58;\n    local_58 = local_48;\n  }" ({ "{") (if_statement "if (local_98 != local_88) {\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }" (if "if") (parenthesized_expression "(local_98 != local_88)" (( "(") (binary_expression "local_98 != local_88" (identifier "local_98") (!= "!=") (identifier "local_88")) () ")")) (compound_statement "{\n      local_98 = local_58;\n      local_90 = local_50;\n      local_88[0] = local_48[0];\n      if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }\n    }" ({ "{") (expression_statement "local_98 = local_58;" (assignment_expression "local_98 = local_58" (identifier "local_98") (= "=") (identifier "local_58")) (; ";")) (expression_statement "local_90 = local_50;" (assignment_expression "local_90 = local_50" (identifier "local_90") (= "=") (identifier "local_50")) (; ";")) (expression_statement "local_88[0] = local_48[0];" (assignment_expression "local_88[0] = local_48[0]" (subscript_expression "local_88[0]" (identifier "local_88") ([ "[") (number_literal "0") (] "]")) (= "=") (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]"))) (; ";")) (if_statement "if (puVar5 != (ulong *)0x0) {\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }" (if "if") (parenthesized_expression "(puVar5 != (ulong *)0x0)" (( "(") (binary_expression "puVar5 != (ulong *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(ulong *)0x0" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        local_58 = puVar5;\n        local_48[0] = uVar2;\n        goto LAB_001ad26b;\n      }" ({ "{") (expression_statement "local_58 = puVar5;" (assignment_expression "local_58 = puVar5" (identifier "local_58") (= "=") (identifier "puVar5")) (; ";")) (expression_statement "local_48[0] = uVar2;" (assignment_expression "local_48[0] = uVar2" (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (goto_statement "goto LAB_001ad26b;" (goto "goto") (statement_identifier "LAB_001ad26b") (; ";")) (} "}"))) (} "}"))) (expression_statement "local_88[0] = local_48[0];" (assignment_expression "local_88[0] = local_48[0]" (subscript_expression "local_88[0]" (identifier "local_88") ([ "[") (number_literal "0") (] "]")) (= "=") (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "local_90 = local_50;" (assignment_expression "local_90 = local_50" (identifier "local_90") (= "=") (identifier "local_50")) (; ";")) (expression_statement "local_98 = local_58;" (assignment_expression "local_98 = local_58" (identifier "local_98") (= "=") (identifier "local_58")) (; ";")) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" (identifier "local_58") (= "=") (identifier "local_48")) (; ";")) (} "}")))) (labeled_statement "LAB_001ad26b:\n  local_50 = 0;" (statement_identifier "LAB_001ad26b") (: ":") (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";"))) (expression_statement "*(byte *)local_58 = 0;" (assignment_expression "*(byte *)local_58 = 0" (pointer_expression "*(byte *)local_58" (* "*") (cast_expression "(byte *)local_58" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_58"))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_58 != local_48) {\n    FUN_002dac70();\n  }" (if "if") (parenthesized_expression "(local_58 != local_48)" (( "(") (binary_expression "local_58 != local_48" (identifier "local_58") (!= "!=") (identifier "local_48")) () ")")) (compound_statement "{\n    FUN_002dac70();\n  }" ({ "{") (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" (identifier "FUN_002dac70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_78[0] != local_68) {\n    FUN_002dac70();\n  }" (if "if") (parenthesized_expression "(local_78[0] != local_68)" (( "(") (binary_expression "local_78[0] != local_68" (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_68")) () ")")) (compound_statement "{\n    FUN_002dac70();\n  }" ({ "{") (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" (identifier "FUN_002dac70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "local_b0 = local_98;" (assignment_expression "local_b0 = local_98" (identifier "local_b0") (= "=") (identifier "local_98")) (; ";")) (expression_statement "local_a0 = local_90;" (assignment_expression "local_a0 = local_90" (identifier "local_a0") (= "=") (identifier "local_90")) (; ";")) (labeled_statement "LAB_001ad012:\n  puVar5 = local_b0;" (statement_identifier "LAB_001ad012") (: ":") (expression_statement "puVar5 = local_b0;" (assignment_expression "puVar5 = local_b0" (identifier "puVar5") (= "=") (identifier "local_b0")) (; ";"))) (if_statement "if ((param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    \n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }\n  }" (if "if") (parenthesized_expression "((param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0'))" (( "(") (binary_expression "(param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')" (parenthesized_expression "(param_6 != '\0')" (( "(") (binary_expression "param_6 != '\0'" (identifier "param_6") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')" (( "(") (binary_expression "*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0'" (pointer_expression "*(char *)(*(long *)(param_1 + 8) + 0x148)" (* "*") (cast_expression "(char *)(*(long *)(param_1 + 8) + 0x148)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 8) + 0x148)" (( "(") (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x148")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    \n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }\n  }" ({ "{") (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" ({ "{") (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" (identifier "FUN_0017c650") (argument_list "("../../gold/parameters.h",0x5c,"options")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    \n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }" (if "if") (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0')" (( "(") (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" (* "*") (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x5051")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);\n      if (plVar4 == (long *)0x0) {\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }\n                    \n      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }\n    }" ({ "{") (expression_statement "plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);" (assignment_expression "plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18)" (identifier "plVar4") (= "=") (pointer_expression "*(long **)(PTR_DAT_0043e6b0 + 0x18)" (* "*") (cast_expression "(long **)(PTR_DAT_0043e6b0 + 0x18)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x18)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x18" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (plVar4 == (long *)0x0) {\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }" (if "if") (parenthesized_expression "(plVar4 == (long *)0x0)" (( "(") (binary_expression "plVar4 == (long *)0x0" (identifier "plVar4") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n                    \n        FUN_0017c650("../../gold/parameters.h",0x69,"target");\n      }" ({ "{") (expression_statement "FUN_0017c650("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x69,"target")" (identifier "FUN_0017c650") (argument_list "("../../gold/parameters.h",0x69,"target")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x69") (, ",") (string_literal ""target"" (" """) (string_content "target") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)) {\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }" (if "if") (parenthesized_expression "((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0))" (( "(") (binary_expression "(*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||\n         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)" (parenthesized_expression "(*(code **)(*plVar4 + 0x110) == FUN_001b0f60)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x110) == FUN_001b0f60" (pointer_expression "*(code **)(*plVar4 + 0x110)" (* "*") (cast_expression "(code **)(*plVar4 + 0x110)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x110)" (( "(") (binary_expression "*plVar4 + 0x110" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x110")) () ")")))) (== "==") (identifier "FUN_001b0f60")) () ")")) (|| "||") (parenthesized_expression "(puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0)" (( "(") (comma_expression "puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),\n         puVar5 == (ulong *)0x0" (assignment_expression "puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0)" (identifier "puVar5") (= "=") (cast_expression "(ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0)" (parenthesized_expression "(**(code **)(*plVar4 + 0x110))" (( "(") (pointer_expression "**(code **)(*plVar4 + 0x110)" (* "*") (pointer_expression "*(code **)(*plVar4 + 0x110)" (* "*") (cast_expression "(code **)(*plVar4 + 0x110)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x110)" (( "(") (binary_expression "*plVar4 + 0x110" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x110")) () ")"))))) () ")")) (argument_list "(plVar4,param_2,local_b0,&local_a0)" (( "(") (identifier "plVar4") (, ",") (identifier "param_2") (, ",") (identifier "local_b0") (, ",") (pointer_expression "&local_a0" (& "&") (identifier "local_a0")) () ")"))))) (, ",") (binary_expression "puVar5 == (ulong *)0x0" (identifier "puVar5") (== "==") (cast_expression "(ulong *)0x0" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);\n      }" ({ "{") (expression_statement "puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);" (assignment_expression "puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0)" (identifier "puVar5") (= "=") (cast_expression "(ulong *)FUN_001a6e90(param_2,local_b0,&local_a0)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001a6e90(param_2,local_b0,&local_a0)" (identifier "FUN_001a6e90") (argument_list "(param_2,local_b0,&local_a0)" (( "(") (identifier "param_2") (, ",") (identifier "local_b0") (, ",") (pointer_expression "&local_a0" (& "&") (identifier "local_a0")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "local_b0 = puVar5;" (assignment_expression "local_b0 = puVar5" (identifier "local_b0") (= "=") (identifier "puVar5")) (; ";")) (expression_statement "uVar3 = FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78);" (assignment_expression "uVar3 = FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78)" (identifier "uVar3") (= "=") (call_expression "FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78)" (identifier "FUN_0026e510") (argument_list "(param_1 + 0x10,local_b0,local_a0,1,local_78)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) (, ",") (identifier "local_b0") (, ",") (identifier "local_a0") (, ",") (number_literal "1") (, ",") (identifier "local_78") () ")")))) (; ";")) (expression_statement "plVar4 = (long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8);" (assignment_expression "plVar4 = (long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8)" (identifier "plVar4") (= "=") (cast_expression "(long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8)" (identifier "FUN_001acd20") (argument_list "(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") (, ",") (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]")) (, ",") (identifier "param_4") (, ",") (identifier "uVar9") (, ",") (identifier "param_7") (, ",") (identifier "param_8") () ")"))))) (; ";")) (if_statement "if (local_98 != local_88) {\n    FUN_002dac70();\n  }" (if "if") (parenthesized_expression "(local_98 != local_88)" (( "(") (binary_expression "local_98 != local_88" (identifier "local_98") (!= "!=") (identifier "local_88")) () ")")) (compound_statement "{\n    FUN_002dac70();\n  }" ({ "{") (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" (identifier "FUN_002dac70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return plVar4;" (return "return") (identifier "plVar4") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Output_section * choose_output_section(Layout * this, Relobj * relobj,
   char * name, Elf_Word type, Elf_Xword flags, bool is_input_section, Output_section_order order,
   bool is_relro, bool is_reloc, bool match_input_spec) */

type_5 * __thiscall
gold::Layout::choose_output_section
          (Layout *this,type_14 *var_8,var_2 *name,Elf_Word type,type_12 flags,
          bool is_input_section,Output_section_order order,bool is_relro,bool is_reloc,
          bool match_input_spec)

{
  bool var_7;
  type_1 *var_37;
  type_2 *this_00;
  type_3 _Var3;
  type_4 uVar4;
  char *pcVar5;
  type_5 *pOVar6;
  type_6 *var_25;
  long var_24;
  type_7 file_name;
  type_6 *var_26;
  type_8 var_16;
  type_9 uVar11;
  type_9 uVar12;
  type_6 var_22;
  type_4 uStack_d0;
  type_6 *var_10;
  size_t var_29;
  type_10 uncompressed_name;
  type_11 var_13;
  char var_36 [16];
  type_5 **var_17;
  size_t var_32;
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_31
  var_4;
  type_12 flags_00;
  
  var_22 = 0;
  if ((is_input_section) && (this->sections_are_attached_ != false)) {
                    /* WARNING: Subroutine does not return */
    var_5("../../gold/layout.cc",0x3b8,"choose_output_section");
  }
  if (parameters->options_ == (type_13 *)0x0) {
                    /* WARNING: Subroutine does not return */
    Target::var_6((type_1 *)this);
  }
  var_16 = (type_8)flags & 0xfffff50f;
  if ((parameters->options_->relocatable_).value != false) {
    var_16 = (type_8)flags & 0xfffff58f;
  }
  flags_00 = (type_12)var_16;
  var_7 = (this->script_options_->script_sections_).saw_sections_clause_;
  uVar11 = var_7 == false;
  uVar12 = var_7 == true;
  var_10 = (type_6 *)name;
  if ((bool)uVar12) {
    uVar11 = false;
    uVar12 = !is_reloc;
    if ((bool)uVar12) {
      file_name = (char *)0x0;
      if (var_8 != (type_14 *)0x0) {
        file_name = (var_8->super_Object).name_._M_dataplus._M_p;
      }
      var_10 = (type_6 *)Script_sections::var_9
                                   (&this->script_options_->script_sections_,file_name,name,
                                    &var_17,&var_13,
                                    (bool *)&uncompressed_name,match_input_spec);
      if (var_10 == (type_6 *)0x0) {
        if (parameters->options_ == (type_13 *)0x0) {
          return (type_5 *)0x0;
        }
        if ((parameters->debug_ & 2) == 0) {
          return (type_5 *)0x0;
        }
        this_00 = parameters->errors_;
        pcVar5 = (char *)var_11("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"
                                 ,uStack_d0);
        Errors::var_12(this_00,pcVar5,name);
        return (type_5 *)0x0;
      }
      if (var_13 != var_14) {
        if (var_13 != var_15) {
                    /* WARNING: Subroutine does not return */
          var_5("../../gold/layout.cc",0x3de,"choose_output_section");
        }
        flags_00 = (type_12)(var_16 & 2);
      }
      uVar11 = false;
      uVar12 = var_17 == (type_5 **)0x0;
      if (!(bool)uVar12) {
        if (*var_17 != (type_5 *)0x0) {
          Output_section::var_18(*var_17,flags_00);
          return *var_17;
        }
        pcVar5 = var_19<var_2>::var_20(&this->namepool_,(char *)var_10,false,(type_15 *)0x0);
        pOVar6 = var_21(this,pcVar5,type,flags_00,order,is_relro);
        pOVar6->field_0xc8 = pOVar6->field_0xc8 | 0x40;
        if (((var_13 == var_15) &&
            (pOVar6->field_0xca = pOVar6->field_0xca | 8, (pOVar6->flags_ & 2) == 0)) &&
           (var_22 = (pOVar6->super_Output_data).field_0x20, (var_22 & 1) != 0)) {
          if ((((pOVar6->super_Output_data).address_ != 0) || ((var_22 & 4) != 0)) ||
             ((var_22 & 2) != 0)) {
                    /* WARNING: Subroutine does not return */
            var_5("../../gold/layout.cc",0x406,"choose_output_section");
          }
          (pOVar6->super_Output_data).field_0x20 = var_22 & 0xfa;
          if ((var_22 & 8) == 0) {
            (pOVar6->super_Output_data).field_0x20 = var_22 & 0xf8;
          }
          (*(pOVar6->super_Output_data)._vptr_Output_data[0xf])(pOVar6);
        }
        *var_17 = pOVar6;
        return pOVar6;
      }
    }
  }
  var_29 = var_23((char *)var_10);
  uncompressed_name._M_dataplus._M_p = (type_7)&uncompressed_name.field_2;
  uncompressed_name.field_2._M_allocated_capacity =
       uncompressed_name.field_2._M_allocated_capacity & 0xffffffffffffff00;
  var_24 = 7;
  uncompressed_name._M_string_length = 0;
  var_25 = (type_6 *)".zdebug";
  var_26 = var_10;
  do {
    if (var_24 == 0) break;
    var_24 = var_24 + -1;
    uVar11 = *var_25 < *var_26;
    uVar12 = *var_25 == *var_26;
    var_25 = var_25 + (type_16)var_22 * -2 + 1;
    var_26 = var_26 + (type_16)var_22 * -2 + 1;
  } while ((bool)uVar12);
  if ((!(bool)uVar11 && !(bool)uVar12) != (bool)uVar11) goto LAB_001ad012;
  var_35 = var_36;
                    /* try { // try from 001ad1f1 to 001ad1f5 has its CatchHandler @ 001ad503 */
  std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::
  var_27<var_28*>
            ((basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *)
             &var_13,var_10,var_10 + var_29);
                    /* try { // try from 001ad20b to 001ad20f has its CatchHandler @ 001ad4fb */
  var_30
            ((type_10 *)&var_17,
             (basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *)
             &var_13);
  uVar4 = uncompressed_name.field_2._M_allocated_capacity;
  _Var3 = uncompressed_name._M_dataplus;
  if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_31
       *)var_17 == &var_4) {
    if (var_32 != 0) {
      if (var_32 == 1) {
        *uncompressed_name._M_dataplus._M_p = var_4._M_local_buf[0];
      }
      else {
        var_33(uncompressed_name._M_dataplus._M_p,var_17,var_32);
      }
    }
    uncompressed_name._M_dataplus._M_p[var_32] = '\0';
    uncompressed_name._M_string_length = var_32;
  }
  else {
    if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_31
         *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2) {
      uncompressed_name._M_dataplus._M_p = (type_7)var_17;
      uncompressed_name._M_string_length = var_32;
      uncompressed_name.field_2._M_allocated_capacity = var_4._M_allocated_capacity;
      if (_Var3._M_p != (type_7)0x0) {
        var_17 = (type_5 **)_Var3._M_p;
        var_4._M_allocated_capacity = uVar4;
        goto LAB_001ad26b;
      }
    }
    uncompressed_name.field_2._M_allocated_capacity = var_4._M_allocated_capacity;
    uncompressed_name._M_string_length = var_32;
    uncompressed_name._M_dataplus._M_p = (type_7)var_17;
    var_17 = (type_5 **)&var_4;
  }
LAB_001ad26b:
  var_32 = 0;
  *(type_9 *)var_17 = 0;
  if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_31
       *)var_17 != &var_4) {
    var_34(var_17);
  }
  if (var_35 != var_36) {
    var_34(var_35);
  }
  var_10 = (type_6 *)uncompressed_name._M_dataplus._M_p;
  var_29 = uncompressed_name._M_string_length;
LAB_001ad012:
  var_25 = var_10;
  if ((is_input_section) &&
     ((this->script_options_->script_sections_).saw_sections_clause_ == false)) {
    if (parameters->options_ == (type_13 *)0x0) {
                    /* WARNING: Subroutine does not return */
      var_5("../../gold/parameters.h",0x5c,"options");
    }
    if ((parameters->options_->relocatable_).value == false) {
      var_37 = parameters->target_;
      if (var_37 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */
        var_5("../../gold/parameters.h",0x69,"target");
      }
                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */
      if ((*(type_17 **)(*(long *)var_37 + 0x110) == type_1::do_output_section_name) ||
         (var_25 = (type_6 *)(**(type_17 **)(*(long *)var_37 + 0x110))(var_37,var_8,var_10,&var_29),
         var_25 == (type_6 *)0x0)) {
        var_25 = (type_6 *)var_9(var_8,(char *)var_10,&var_29);
      }
    }
  }
  var_10 = var_25;
                    /* try { // try from 001ad045 to 001ad124 has its CatchHandler @ 001ad503 */
  pcVar5 = var_19<var_2>::var_38
                     (&this->namepool_,(char *)var_10,var_29,true,(type_15 *)&var_13);
  pOVar6 = var_39(this,pcVar5,(type_15)var_35,type,flags_00,order,is_relro);
  if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_31
       *)uncompressed_name._M_dataplus._M_p != &uncompressed_name.field_2) {
    var_34(uncompressed_name._M_dataplus._M_p);
  }
  return pOVar6;
}


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

long * MASKED(long param_1,long param_2,ulong *param_3,undefined4 param_4,uint param_5,
                   char param_6,undefined4 param_7,undefined1 param_8,char param_9,
                   undefined1 param_10)

{
  char cVar1;
  ulong uVar2;
  undefined8 uVar3;
  long *plVar4;
  ulong *puVar5;
  undefined8 uVar6;
  long lVar7;
  byte *pbVar8;
  uint uVar9;
  undefined1 uVar10;
  undefined1 uVar11;
  byte bVar12;
  undefined8 uStack_d0;
  ulong *local_b0;
  size_t local_a0;
  ulong *local_98;
  size_t local_90;
  ulong local_88 [2];
  undefined1 *local_78 [2];
  undefined1 local_68 [16];
  ulong *local_58;
  size_t local_50;
  ulong local_48 [3];
  
  bVar12 = 0;
  if ((param_6 != '\0') && (*(char *)(param_1 + 0x369) != '\0')) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/layout.cc",0x3b8,"choose_output_section");
  }
  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_001a4340();
  }
  uVar9 = param_5 & 0xfffff50f;
  if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) != '\0') {
    uVar9 = param_5 & 0xfffff58f;
  }
  cVar1 = *(char *)(*(long *)(param_1 + 8) + 0x148);
  uVar10 = cVar1 == '\0';
  uVar11 = cVar1 == '\x01';
  local_b0 = param_3;
  if ((bool)uVar11) {
    uVar10 = false;
    uVar11 = param_9 == '\0';
    if ((bool)uVar11) {
      uVar3 = 0;
      if (param_2 != 0) {
        uVar3 = *(undefined8 *)(param_2 + 8);
      }
      local_b0 = (ulong *)FUN_00257f70(*(long *)(param_1 + 8) + 0x148,uVar3,param_3,&local_58,
                                       local_78,&local_98,param_10);
      if (local_b0 == (ulong *)0x0) {
        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {
          return (long *)0x0;
        }
        if ((PTR_DAT_0043e6b0[0x24] & 2) == 0) {
          return (long *)0x0;
        }
        uVar3 = *(undefined8 *)PTR_DAT_0043e6b0;
        uVar6 = gettext("Unable to create output section \'%s\' because it is not allowed by the SECTIONS clause of the linker script"
                        ,uStack_d0);
        FUN_00178100(uVar3,uVar6,param_3);
        return (long *)0x0;
      }
      if ((int)local_78[0] != 0) {
        if ((int)local_78[0] != 1) {
                    /* WARNING: Subroutine does not return */
          FUN_0017c650("../../gold/layout.cc",0x3de,"choose_output_section");
        }
        uVar9 = uVar9 & 2;
      }
      uVar10 = false;
      uVar11 = local_58 == (ulong *)0x0;
      if (!(bool)uVar11) {
        if (*local_58 != 0) {
          FUN_001f5d70(*local_58,uVar9);
          return (long *)*local_58;
        }
        uVar3 = FUN_0026e6a0(param_1 + 0x10,local_b0,0,0);
        plVar4 = (long *)FUN_001a8f30(param_1,uVar3,param_4,uVar9,param_7,param_8);
        *(byte *)(plVar4 + 0x19) = *(byte *)(plVar4 + 0x19) | 0x40;
        if ((((int)local_78[0] == 1) &&
            (*(byte *)((long)plVar4 + 0xca) = *(byte *)((long)plVar4 + 0xca) | 8,
            (*(byte *)(plVar4 + 0xe) & 2) == 0)) &&
           (bVar12 = *(byte *)(plVar4 + 4), (bVar12 & 1) != 0)) {
          if (((plVar4[1] != 0) || ((bVar12 & 4) != 0)) || ((bVar12 & 2) != 0)) {
                    /* WARNING: Subroutine does not return */
            FUN_0017c650("../../gold/layout.cc",0x406,"choose_output_section");
          }
          *(byte *)(plVar4 + 4) = bVar12 & 0xfa;
          if ((bVar12 & 8) == 0) {
            *(byte *)(plVar4 + 4) = bVar12 & 0xf8;
          }
          (**(code **)(*plVar4 + 0x78))(plVar4);
        }
        *local_58 = (ulong)plVar4;
        return plVar4;
      }
    }
  }
  local_a0 = strlen((char *)local_b0);
  local_98 = local_88;
  local_88[0] = local_88[0] & 0xffffffffffffff00;
  lVar7 = 7;
  local_90 = 0;
  pbVar8 = (byte *)".zdebug";
  puVar5 = local_b0;
  do {
    if (lVar7 == 0) break;
    lVar7 = lVar7 + -1;
    uVar10 = *pbVar8 < (byte)*puVar5;
    uVar11 = *pbVar8 == (byte)*puVar5;
    pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;
    puVar5 = (ulong *)((long)puVar5 + (ulong)bVar12 * -2 + 1);
  } while ((bool)uVar11);
  if ((!(bool)uVar10 && !(bool)uVar11) != (bool)uVar10) goto LAB_001ad012;
  local_78[0] = local_68;
                    /* try { // try from 001ad1f1 to 001ad1f5 has its CatchHandler @ 001ad503 */
  FUN_001665c0(local_78,local_b0,(byte *)((long)local_b0 + local_a0));
                    /* try { // try from 001ad20b to 001ad20f has its CatchHandler @ 001ad4fb */
  FUN_001ab710(&local_58,local_78);
  uVar2 = local_88[0];
  puVar5 = local_98;
  if (local_58 == local_48) {
    if (local_50 != 0) {
      if (local_50 == 1) {
        *(byte *)local_98 = (byte)local_48[0];
      }
      else {
        memcpy(local_98,local_58,local_50);
      }
    }
    *(byte *)((long)local_98 + local_50) = 0;
    local_90 = local_50;
  }
  else {
    if (local_98 != local_88) {
      local_98 = local_58;
      local_90 = local_50;
      local_88[0] = local_48[0];
      if (puVar5 != (ulong *)0x0) {
        local_58 = puVar5;
        local_48[0] = uVar2;
        goto LAB_001ad26b;
      }
    }
    local_88[0] = local_48[0];
    local_90 = local_50;
    local_98 = local_58;
    local_58 = local_48;
  }
LAB_001ad26b:
  local_50 = 0;
  *(byte *)local_58 = 0;
  if (local_58 != local_48) {
    FUN_002dac70();
  }
  if (local_78[0] != local_68) {
    FUN_002dac70();
  }
  local_b0 = local_98;
  local_a0 = local_90;
LAB_001ad012:
  puVar5 = local_b0;
  if ((param_6 != '\0') && (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')) {
    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/parameters.h",0x5c,"options");
    }
    if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {
      plVar4 = *(long **)(PTR_DAT_0043e6b0 + 0x18);
      if (plVar4 == (long *)0x0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001ad4ae to 001ad4ca has its CatchHandler @ 001ad503 */
        FUN_0017c650("../../gold/parameters.h",0x69,"target");
      }
                    /* try { // try from 001ad469 to 001ad46a has its CatchHandler @ 001ad503 */
      if ((*(code **)(*plVar4 + 0x110) == FUN_001b0f60) ||
         (puVar5 = (ulong *)(**(code **)(*plVar4 + 0x110))(plVar4,param_2,local_b0,&local_a0),
         puVar5 == (ulong *)0x0)) {
        puVar5 = (ulong *)FUN_001a6e90(param_2,local_b0,&local_a0);
      }
    }
  }
  local_b0 = puVar5;
                    /* try { // try from 001ad045 to 001ad124 has its CatchHandler @ 001ad503 */
  uVar3 = FUN_0026e510(param_1 + 0x10,local_b0,local_a0,1,local_78);
  plVar4 = (long *)FUN_001acd20(param_1,uVar3,local_78[0],param_4,uVar9,param_7,param_8);
  if (local_98 != local_88) {
    FUN_002dac70();
  }
  return plVar4;
}

