
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void create_note_and_tls_segments(Script_sections * this, Layout *
   layout, Section_list * sections) */

void __thiscall
gold::Script_sections::create_note_and_tls_segments
          (Script_sections *this,Layout *layout,Section_list *sections)

{
  pointer ppOVar1;
  Elf_Word EVar2;
  Output_segment *pOVar3;
  ulong flags;
  char *format;
  Output_section *pOVar4;
  long lVar5;
  byte *pbVar6;
  byte *pbVar7;
  pointer ppOVar8;
  pointer ppOVar9;
  bool bVar10;
  bool bVar11;
  bool bVar12;
  byte bVar13;
  
  bVar13 = 0;
  if ((this->saw_sections_clause_ != false) && (this->phdrs_elements_ != (Phdrs_elements *)0x0)) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");
  }
  ppOVar9 = (sections->
            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).
            _M_impl._M_start;
  if (ppOVar9 !=
      (sections->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).
      _M_impl._M_finish) {
    bVar11 = false;
    flags = (*ppOVar9)->flags_;
    pOVar4 = *ppOVar9;
LAB_002c51e1:
    do {
      ppOVar8 = ppOVar9 + 1;
      if (pOVar4->type_ == 7) {
        EVar2 = Layout::section_flags_to_segment(flags);
        pOVar3 = Layout::make_output_segment(layout,4,EVar2);
        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);
        if (((sections->
             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).
             _M_impl._M_finish == ppOVar8) || (pOVar4 = ppOVar9[1], pOVar4->type_ != 7)) {
          pOVar4 = *ppOVar9;
          flags = pOVar4->flags_;
        }
        else {
          do {
            ppOVar9 = ppOVar8;
            EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);
            Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);
            ppOVar8 = ppOVar9 + 1;
            if ((sections->
                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).
                _M_impl._M_finish == ppOVar8) break;
            pOVar4 = ppOVar9[1];
          } while (pOVar4->type_ == 7);
          pOVar4 = *ppOVar9;
          flags = pOVar4->flags_;
        }
      }
      bVar10 = false;
      bVar12 = (flags & 0x400) == 0;
      if (bVar12) {
LAB_002c51f5:
        lVar5 = 8;
        pbVar6 = (byte *)pOVar4->name_;
        pbVar7 = (byte *)".interp";
        do {
          if (lVar5 == 0) break;
          lVar5 = lVar5 + -1;
          bVar10 = *pbVar6 < *pbVar7;
          bVar12 = *pbVar6 == *pbVar7;
          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;
          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;
        } while (bVar12);
        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;
        if ((sections->
            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).
            _M_impl._M_finish == ppOVar8) break;
      }
      else {
        if (bVar11) {
          format = (char *)gettext("TLS sections are not adjacent");
          gold_error(format);
          flags = (*ppOVar9)->flags_;
        }
        EVar2 = Layout::section_flags_to_segment(flags);
        pOVar3 = Layout::make_output_segment(layout,7,EVar2);
        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);
        ppOVar1 = (sections->
                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)
                  ._M_impl._M_finish;
        bVar11 = ppOVar1 < ppOVar8;
        bVar10 = ppOVar1 == ppOVar8;
        if (bVar10) {
          pOVar4 = *ppOVar9;
          lVar5 = 8;
          pbVar6 = (byte *)pOVar4->name_;
          pbVar7 = (byte *)".interp";
          do {
            if (lVar5 == 0) break;
            lVar5 = lVar5 + -1;
            bVar11 = *pbVar6 < *pbVar7;
            bVar10 = *pbVar6 == *pbVar7;
            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;
            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;
          } while (bVar10);
          if ((!bVar11 && !bVar10) != bVar11) break;
        }
        else {
          flags = ppOVar9[1]->flags_;
          bVar11 = false;
          bVar10 = (flags & 0x400) == 0;
          if (!bVar10) {
            do {
              ppOVar9 = ppOVar8;
              EVar2 = Layout::section_flags_to_segment(flags);
              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);
              ppOVar8 = ppOVar9 + 1;
              ppOVar1 = (sections->
                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>
                        )._M_impl._M_finish;
              bVar10 = ppOVar1 < ppOVar8;
              bVar12 = ppOVar1 == ppOVar8;
              if (bVar12) break;
              flags = ppOVar9[1]->flags_;
              bVar10 = false;
              bVar12 = (flags & 0x400) == 0;
            } while (!bVar12);
            pOVar4 = *ppOVar9;
            bVar11 = true;
            goto LAB_002c51f5;
          }
          pOVar4 = *ppOVar9;
          lVar5 = 8;
          pbVar6 = (byte *)pOVar4->name_;
          pbVar7 = (byte *)".interp";
          do {
            if (lVar5 == 0) break;
            lVar5 = lVar5 + -1;
            bVar11 = *pbVar6 < *pbVar7;
            bVar10 = *pbVar6 == *pbVar7;
            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;
            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;
          } while (bVar10);
          if ((!bVar11 && !bVar10) != bVar11) {
            bVar11 = true;
            pOVar4 = ppOVar9[1];
            ppOVar9 = ppOVar8;
            goto LAB_002c51e1;
          }
        }
        bVar11 = true;
LAB_002c520c:
        EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);
        pOVar3 = Layout::make_output_segment(layout,3,EVar2);
        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);
        if ((sections->
            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).
            _M_impl._M_finish == ppOVar8) break;
      }
      flags = ppOVar9[1]->flags_;
      pOVar4 = ppOVar9[1];
      ppOVar9 = ppOVar8;
    } while( true );
  }
  this->segments_created_ = true;
  return;
}



void FUN_002c5170(char *param_1,undefined8 param_2,ulong *param_3)

{
  undefined4 uVar1;
  undefined8 uVar2;
  ulong uVar3;
  long lVar4;
  long lVar5;
  byte *pbVar6;
  byte *pbVar7;
  long *plVar8;
  long *plVar9;
  bool bVar10;
  bool bVar11;
  bool bVar12;
  byte bVar13;
  
  bVar13 = 0;
  if ((*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");
  }
  plVar9 = (long *)*param_3;
  if (plVar9 != (long *)param_3[1]) {
    bVar11 = false;
    uVar3 = *(ulong *)(*plVar9 + 0x70);
    lVar4 = *plVar9;
LAB_002c51e1:
    do {
      plVar8 = plVar9 + 1;
      if (*(int *)(lVar4 + 0x6c) == 7) {
        uVar1 = FUN_00212540(uVar3);
        uVar2 = FUN_00215d90(param_2,4,uVar1);
        FUN_002662f0(uVar2,*plVar9,uVar1);
        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {
          lVar4 = *plVar9;
          uVar3 = *(ulong *)(lVar4 + 0x70);
        }
        else {
          do {
            plVar9 = plVar8;
            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));
            FUN_002662f0(uVar2,*plVar9,uVar1);
            plVar8 = plVar9 + 1;
            if ((long *)param_3[1] == plVar8) break;
            lVar4 = plVar9[1];
          } while (*(int *)(lVar4 + 0x6c) == 7);
          lVar4 = *plVar9;
          uVar3 = *(ulong *)(lVar4 + 0x70);
        }
      }
      bVar10 = false;
      bVar12 = (uVar3 & 0x400) == 0;
      if (bVar12) {
LAB_002c51f5:
        lVar5 = 8;
        pbVar6 = *(byte **)(lVar4 + 0x28);
        pbVar7 = (byte *)".interp";
        do {
          if (lVar5 == 0) break;
          lVar5 = lVar5 + -1;
          bVar10 = *pbVar6 < *pbVar7;
          bVar12 = *pbVar6 == *pbVar7;
          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;
          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;
        } while (bVar12);
        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;
        if ((long *)param_3[1] == plVar8) break;
      }
      else {
        if (bVar11) {
          uVar2 = gettext("TLS sections are not adjacent");
          FUN_001e14f0(uVar2);
          uVar3 = *(ulong *)(*plVar9 + 0x70);
        }
        uVar1 = FUN_00212540(uVar3);
        uVar2 = FUN_00215d90(param_2,7,uVar1);
        FUN_002662f0(uVar2,*plVar9,uVar1);
        bVar11 = (long *)param_3[1] < plVar8;
        bVar10 = (long *)param_3[1] == plVar8;
        if (bVar10) {
          lVar4 = *plVar9;
          lVar5 = 8;
          pbVar6 = *(byte **)(lVar4 + 0x28);
          pbVar7 = (byte *)".interp";
          do {
            if (lVar5 == 0) break;
            lVar5 = lVar5 + -1;
            bVar11 = *pbVar6 < *pbVar7;
            bVar10 = *pbVar6 == *pbVar7;
            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;
            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;
          } while (bVar10);
          if ((!bVar11 && !bVar10) != bVar11) break;
        }
        else {
          uVar3 = *(ulong *)(plVar9[1] + 0x70);
          bVar11 = false;
          bVar10 = (uVar3 & 0x400) == 0;
          if (!bVar10) {
            do {
              plVar9 = plVar8;
              uVar1 = FUN_00212540(uVar3);
              FUN_002662f0(uVar2,*plVar9,uVar1);
              plVar8 = plVar9 + 1;
              bVar10 = (long *)param_3[1] < plVar8;
              bVar12 = (long *)param_3[1] == plVar8;
              if (bVar12) break;
              uVar3 = *(ulong *)(plVar9[1] + 0x70);
              bVar10 = false;
              bVar12 = (uVar3 & 0x400) == 0;
            } while (!bVar12);
            lVar4 = *plVar9;
            bVar11 = true;
            goto LAB_002c51f5;
          }
          lVar4 = *plVar9;
          lVar5 = 8;
          pbVar6 = *(byte **)(lVar4 + 0x28);
          pbVar7 = (byte *)".interp";
          do {
            if (lVar5 == 0) break;
            lVar5 = lVar5 + -1;
            bVar11 = *pbVar6 < *pbVar7;
            bVar10 = *pbVar6 == *pbVar7;
            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;
            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;
          } while (bVar10);
          if ((!bVar11 && !bVar10) != bVar11) {
            bVar11 = true;
            lVar4 = plVar9[1];
            plVar9 = plVar8;
            goto LAB_002c51e1;
          }
        }
        bVar11 = true;
LAB_002c520c:
        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));
        uVar2 = FUN_00215d90(param_2,3,uVar1);
        FUN_002662f0(uVar2,*plVar9,uVar1);
        if ((long *)param_3[1] == plVar8) break;
      }
      uVar3 = *(ulong *)(plVar9[1] + 0x70);
      lVar4 = plVar9[1];
      plVar9 = plVar8;
    } while( true );
  }
  param_1[0x3b] = '\x01';
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,RDX
SUB RSP,0x28
CMP byte ptr [RDI],0x0
MOV qword ptr [RSP + 0x10],RDI
MOV qword ptr [RSP + 0x8],RSI
JZ 0x002c51b0
CMP qword ptr [RDI + 0x20],0x0
JZ 0x002c51b0
LEA RDX,[0x3f3c90]
MOV ESI,0x102a
LEA RDI,[0x3f3483]
CALL 0x001e9890
MOV R15,qword ptr [RBX]
CMP R15,qword ptr [RBX + 0x8]
JZ 0x002c523d
MOV R10,qword ptr [R15]
XOR R14D,R14D
LEA RBP,[0x3e52df]
MOV RAX,qword ptr [R10 + 0x70]
JMP 0x002c51e1
CMP qword ptr [RBX + 0x8],R13
JZ 0x002c523d
MOV R10,qword ptr [R15 + 0x8]
MOV R15,R13
MOV RAX,qword ptr [R10 + 0x70]
CMP dword ptr [R10 + 0x6c],0x7
LEA R13,[R15 + 0x8]
JZ 0x002c5320
TEST AH,0x4
JNZ 0x002c5258
MOV RSI,qword ptr [R10 + 0x28]
MOV ECX,0x8
MOV RDI,RBP
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x002c51d0
MOV RDI,qword ptr [R10 + 0x70]
CALL 0x00212540
MOV RDI,qword ptr [RSP + 0x8]
MOV ESI,0x3
MOV EDX,EAX
MOV R12D,EAX
CALL 0x00215d90
MOV RSI,qword ptr [R15]
MOV EDX,R12D
MOV RDI,RAX
CALL 0x002662f0
CMP qword ptr [RBX + 0x8],R13
JNZ 0x002c51d6
MOV RAX,qword ptr [RSP + 0x10]
MOV byte ptr [RAX + 0x3b],0x1
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
TEST R14B,R14B
JNZ 0x002c52f8
MOV RDI,RAX
CALL 0x00212540
MOV RDI,qword ptr [RSP + 0x8]
MOV ESI,0x7
MOV EDX,EAX
MOV R14D,EAX
CALL 0x00215d90
MOV RSI,qword ptr [R15]
MOV EDX,R14D
MOV RDI,RAX
MOV R12,RAX
CALL 0x002662f0
CMP qword ptr [RBX + 0x8],R13
JZ 0x002c53b1
MOV R10,qword ptr [R15 + 0x8]
MOV RAX,qword ptr [R10 + 0x70]
TEST AH,0x4
JNZ 0x002c52c0
JMP 0x002c53da
MOV RAX,qword ptr [R13 + 0x8]
MOV RAX,qword ptr [RAX + 0x70]
TEST AH,0x4
JZ 0x002c52e0
MOV R13,RDX
MOV RDI,RAX
CALL 0x00212540
MOV RSI,qword ptr [R13]
MOV RDI,R12
MOV EDX,EAX
CALL 0x002662f0
LEA RDX,[R13 + 0x8]
CMP qword ptr [RBX + 0x8],RDX
JNZ 0x002c52b0
MOV R10,qword ptr [R13]
MOV R15,R13
MOV R14D,0x1
MOV R13,RDX
JMP 0x002c51f5
LEA RDI,[0x3f3619]
CALL 0x00150320
MOV RDI,RAX
XOR EAX,EAX
CALL 0x001e14f0
MOV RAX,qword ptr [R15]
MOV RAX,qword ptr [RAX + 0x70]
JMP 0x002c5261
MOV RDI,RAX
CALL 0x00212540
MOV RDI,qword ptr [RSP + 0x8]
MOV ESI,0x4
MOV EDX,EAX
MOV dword ptr [RSP + 0x1c],EAX
CALL 0x00215d90
MOV ECX,dword ptr [RSP + 0x1c]
MOV RSI,qword ptr [R15]
MOV RDI,RAX
MOV R12,RAX
MOV EDX,ECX
CALL 0x002662f0
CMP qword ptr [RBX + 0x8],R13
JZ 0x002c5408
MOV RAX,qword ptr [R15 + 0x8]
CMP dword ptr [RAX + 0x6c],0x7
JZ 0x002c537d
JMP 0x002c5408
MOV RAX,qword ptr [R13 + 0x8]
CMP dword ptr [RAX + 0x6c],0x7
JNZ 0x002c539e
MOV R13,RDX
MOV RDI,qword ptr [RAX + 0x70]
CALL 0x00212540
MOV RSI,qword ptr [R13]
MOV RDI,R12
MOV EDX,EAX
CALL 0x002662f0
LEA RDX,[R13 + 0x8]
CMP qword ptr [RBX + 0x8],RDX
JNZ 0x002c5370
MOV R10,qword ptr [R13]
MOV R15,R13
MOV R13,RDX
MOV RAX,qword ptr [R10 + 0x70]
JMP 0x002c51f0
MOV R10,qword ptr [R15]
MOV ECX,0x8
MOV RDI,RBP
MOV RSI,qword ptr [R10 + 0x28]
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x002c523d
MOV R14D,0x1
JMP 0x002c520c
MOV R11,qword ptr [R15]
MOV ECX,0x8
MOV RDI,RBP
MOV RSI,qword ptr [R11 + 0x28]
CMPSB.REPE RDI,RSI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x002c5403
MOV R15,R13
MOV R14D,0x1
JMP 0x002c51e1
MOV R10,R11
JMP 0x002c53cf
MOV R10,qword ptr [R15]
MOV RAX,qword ptr [R10 + 0x70]
JMP 0x002c51f0
(translation_unit "void FUN_002c5170(char *param_1,undefined8 param_2,ulong *param_3)\n\n{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  long lVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  long *plVar8;\n  long *plVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  \n  bVar13 = 0;\n  if ((*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  plVar9 = (long *)*param_3;\n  if (plVar9 != (long *)param_3[1]) {\n    bVar11 = false;\n    uVar3 = *(ulong *)(*plVar9 + 0x70);\n    lVar4 = *plVar9;\nLAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );\n  }\n  param_1[0x3b] = '\x01';\n  return;\n}\n\n" (function_definition "void FUN_002c5170(char *param_1,undefined8 param_2,ulong *param_3)\n\n{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  long lVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  long *plVar8;\n  long *plVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  \n  bVar13 = 0;\n  if ((*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  plVar9 = (long *)*param_3;\n  if (plVar9 != (long *)param_3[1]) {\n    bVar11 = false;\n    uVar3 = *(ulong *)(*plVar9 + 0x70);\n    lVar4 = *plVar9;\nLAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );\n  }\n  param_1[0x3b] = '\x01';\n  return;\n}" primitive_type (function_declarator "FUN_002c5170(char *param_1,undefined8 param_2,ulong *param_3)" identifier (parameter_list "(char *param_1,undefined8 param_2,ulong *param_3)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "ulong *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  long lVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  long *plVar8;\n  long *plVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  \n  bVar13 = 0;\n  if ((*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  plVar9 = (long *)*param_3;\n  if (plVar9 != (long *)param_3[1]) {\n    bVar11 = false;\n    uVar3 = *(ulong *)(*plVar9 + 0x70);\n    lVar4 = *plVar9;\nLAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );\n  }\n  param_1[0x3b] = '\x01';\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "long *plVar9;" (sized_type_specifier "long" long) (pointer_declarator "*plVar9" * identifier) ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (if_statement "if ((*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }" if (parenthesized_expression "((*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0))" ( (binary_expression "(*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0)" (parenthesized_expression "(*param_1 != '\0')" ( (binary_expression "*param_1 != '\0'" (pointer_expression "*param_1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(long *)(param_1 + 0x20) != 0)" ( (binary_expression "*(long *)(param_1 + 0x20) != 0" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }" { comment (expression_statement "FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");" (call_expression "FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments")" identifier (argument_list "("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments")" ( (string_literal ""../../gold/script-sections.cc"" " string_content ") , number_literal , (string_literal ""create_note_and_tls_segments"" " string_content ") ))) ;) })) (expression_statement "plVar9 = (long *)*param_3;" (assignment_expression "plVar9 = (long *)*param_3" identifier = (cast_expression "(long *)*param_3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (if_statement "if (plVar9 != (long *)param_3[1]) {\n    bVar11 = false;\n    uVar3 = *(ulong *)(*plVar9 + 0x70);\n    lVar4 = *plVar9;\nLAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );\n  }" if (parenthesized_expression "(plVar9 != (long *)param_3[1])" ( (binary_expression "plVar9 != (long *)param_3[1]" identifier != (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    bVar11 = false;\n    uVar3 = *(ulong *)(*plVar9 + 0x70);\n    lVar4 = *plVar9;\nLAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );\n  }" { (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "uVar3 = *(ulong *)(*plVar9 + 0x70);" (assignment_expression "uVar3 = *(ulong *)(*plVar9 + 0x70)" identifier = (pointer_expression "*(ulong *)(*plVar9 + 0x70)" * (cast_expression "(ulong *)(*plVar9 + 0x70)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar9 + 0x70)" ( (binary_expression "*plVar9 + 0x70" (pointer_expression "*plVar9" * identifier) + number_literal) ))))) ;) (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (labeled_statement "LAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );" statement_identifier : (do_statement "do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );" do (compound_statement "{\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    }" { (expression_statement "plVar8 = plVar9 + 1;" (assignment_expression "plVar8 = plVar9 + 1" identifier = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) (if_statement "if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }" if (parenthesized_expression "(*(int *)(lVar4 + 0x6c) == 7)" ( (binary_expression "*(int *)(lVar4 + 0x6c) == 7" (pointer_expression "*(int *)(lVar4 + 0x6c)" * (cast_expression "(int *)(lVar4 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x6c)" ( (binary_expression "lVar4 + 0x6c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }" { (expression_statement "uVar1 = FUN_00212540(uVar3);" (assignment_expression "uVar1 = FUN_00212540(uVar3)" identifier = (call_expression "FUN_00212540(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) (expression_statement "uVar2 = FUN_00215d90(param_2,4,uVar1);" (assignment_expression "uVar2 = FUN_00215d90(param_2,4,uVar1)" identifier = (call_expression "FUN_00215d90(param_2,4,uVar1)" identifier (argument_list "(param_2,4,uVar1)" ( identifier , number_literal , identifier )))) ;) (expression_statement "FUN_002662f0(uVar2,*plVar9,uVar1);" (call_expression "FUN_002662f0(uVar2,*plVar9,uVar1)" identifier (argument_list "(uVar2,*plVar9,uVar1)" ( identifier , (pointer_expression "*plVar9" * identifier) , identifier ))) ;) (if_statement "if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }" if (parenthesized_expression "(((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7))" ( (binary_expression "((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)" (parenthesized_expression "((long *)param_3[1] == plVar8)" ( (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier) )) || (parenthesized_expression "(lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)" ( (comma_expression "lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7" (assignment_expression "lVar4 = plVar9[1]" identifier = (subscript_expression "plVar9[1]" identifier [ number_literal ])) , (binary_expression "*(int *)(lVar4 + 0x6c) != 7" (pointer_expression "*(int *)(lVar4 + 0x6c)" * (cast_expression "(int *)(lVar4 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x6c)" ( (binary_expression "lVar4 + 0x6c" identifier + number_literal) )))) != number_literal)) ))) )) (compound_statement "{\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }" { (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (expression_statement "uVar3 = *(ulong *)(lVar4 + 0x70);" (assignment_expression "uVar3 = *(ulong *)(lVar4 + 0x70)" identifier = (pointer_expression "*(ulong *)(lVar4 + 0x70)" * (cast_expression "(ulong *)(lVar4 + 0x70)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x70)" ( (binary_expression "lVar4 + 0x70" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }" else (compound_statement "{\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }" { (do_statement "do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);" do (compound_statement "{\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          }" { (expression_statement "plVar9 = plVar8;" (assignment_expression "plVar9 = plVar8" identifier = identifier) ;) (expression_statement "uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));" (assignment_expression "uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70))" identifier = (call_expression "FUN_00212540(*(undefined8 *)(lVar4 + 0x70))" identifier (argument_list "(*(undefined8 *)(lVar4 + 0x70))" ( (pointer_expression "*(undefined8 *)(lVar4 + 0x70)" * (cast_expression "(undefined8 *)(lVar4 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x70)" ( (binary_expression "lVar4 + 0x70" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_002662f0(uVar2,*plVar9,uVar1);" (call_expression "FUN_002662f0(uVar2,*plVar9,uVar1)" identifier (argument_list "(uVar2,*plVar9,uVar1)" ( identifier , (pointer_expression "*plVar9" * identifier) , identifier ))) ;) (expression_statement "plVar8 = plVar9 + 1;" (assignment_expression "plVar8 = plVar9 + 1" identifier = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) (if_statement "if ((long *)param_3[1] == plVar8) break;" if (parenthesized_expression "((long *)param_3[1] == plVar8)" ( (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) (expression_statement "lVar4 = plVar9[1];" (assignment_expression "lVar4 = plVar9[1]" identifier = (subscript_expression "plVar9[1]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(*(int *)(lVar4 + 0x6c) == 7)" ( (binary_expression "*(int *)(lVar4 + 0x6c) == 7" (pointer_expression "*(int *)(lVar4 + 0x6c)" * (cast_expression "(int *)(lVar4 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x6c)" ( (binary_expression "lVar4 + 0x6c" identifier + number_literal) )))) == number_literal) )) ;) (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (expression_statement "uVar3 = *(ulong *)(lVar4 + 0x70);" (assignment_expression "uVar3 = *(ulong *)(lVar4 + 0x70)" identifier = (pointer_expression "*(ulong *)(lVar4 + 0x70)" * (cast_expression "(ulong *)(lVar4 + 0x70)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x70)" ( (binary_expression "lVar4 + 0x70" identifier + number_literal) ))))) ;) }))) })) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar12 = (uVar3 & 0x400) == 0;" (assignment_expression "bVar12 = (uVar3 & 0x400) == 0" identifier = (binary_expression "(uVar3 & 0x400) == 0" (parenthesized_expression "(uVar3 & 0x400)" ( (binary_expression "uVar3 & 0x400" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }" { (labeled_statement "LAB_002c51f5:\n        lVar5 = 8;" statement_identifier : (expression_statement "lVar5 = 8;" (assignment_expression "lVar5 = 8" identifier = number_literal) ;)) (expression_statement "pbVar6 = *(byte **)(lVar4 + 0x28);" (assignment_expression "pbVar6 = *(byte **)(lVar4 + 0x28)" identifier = (pointer_expression "*(byte **)(lVar4 + 0x28)" * (cast_expression "(byte **)(lVar4 + 0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "pbVar7 = (byte *)".interp";" (assignment_expression "pbVar7 = (byte *)".interp"" identifier = (cast_expression "(byte *)".interp"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".interp"" " string_content "))) ;) (do_statement "do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);" do (compound_statement "{\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar6 < *pbVar7;" (assignment_expression "bVar10 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar12 = *pbVar6 == *pbVar7;" (assignment_expression "bVar12 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar6 + (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 "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)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;" if (parenthesized_expression "((!bVar10 && !bVar12) == bVar10)" ( (binary_expression "(!bVar10 && !bVar12) == bVar10" (parenthesized_expression "(!bVar10 && !bVar12)" ( (binary_expression "!bVar10 && !bVar12" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar12" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_002c520c;" goto statement_identifier ;)) (if_statement "if ((long *)param_3[1] == plVar8) break;" if (parenthesized_expression "((long *)param_3[1] == plVar8)" ( (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }" else (compound_statement "{\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }" { (if_statement "if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }" { (expression_statement "uVar2 = gettext("TLS sections are not adjacent");" (assignment_expression "uVar2 = gettext("TLS sections are not adjacent")" identifier = (call_expression "gettext("TLS sections are not adjacent")" identifier (argument_list "("TLS sections are not adjacent")" ( (string_literal ""TLS sections are not adjacent"" " string_content ") )))) ;) (expression_statement "FUN_001e14f0(uVar2);" (call_expression "FUN_001e14f0(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "uVar3 = *(ulong *)(*plVar9 + 0x70);" (assignment_expression "uVar3 = *(ulong *)(*plVar9 + 0x70)" identifier = (pointer_expression "*(ulong *)(*plVar9 + 0x70)" * (cast_expression "(ulong *)(*plVar9 + 0x70)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar9 + 0x70)" ( (binary_expression "*plVar9 + 0x70" (pointer_expression "*plVar9" * identifier) + number_literal) ))))) ;) })) (expression_statement "uVar1 = FUN_00212540(uVar3);" (assignment_expression "uVar1 = FUN_00212540(uVar3)" identifier = (call_expression "FUN_00212540(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) (expression_statement "uVar2 = FUN_00215d90(param_2,7,uVar1);" (assignment_expression "uVar2 = FUN_00215d90(param_2,7,uVar1)" identifier = (call_expression "FUN_00215d90(param_2,7,uVar1)" identifier (argument_list "(param_2,7,uVar1)" ( identifier , number_literal , identifier )))) ;) (expression_statement "FUN_002662f0(uVar2,*plVar9,uVar1);" (call_expression "FUN_002662f0(uVar2,*plVar9,uVar1)" identifier (argument_list "(uVar2,*plVar9,uVar1)" ( identifier , (pointer_expression "*plVar9" * identifier) , identifier ))) ;) (expression_statement "bVar11 = (long *)param_3[1] < plVar8;" (assignment_expression "bVar11 = (long *)param_3[1] < plVar8" identifier = (binary_expression "(long *)param_3[1] < plVar8" (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) < identifier)) ;) (expression_statement "bVar10 = (long *)param_3[1] == plVar8;" (assignment_expression "bVar10 = (long *)param_3[1] == plVar8" identifier = (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier)) ;) (if_statement "if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }" { (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (expression_statement "lVar5 = 8;" (assignment_expression "lVar5 = 8" identifier = number_literal) ;) (expression_statement "pbVar6 = *(byte **)(lVar4 + 0x28);" (assignment_expression "pbVar6 = *(byte **)(lVar4 + 0x28)" identifier = (pointer_expression "*(byte **)(lVar4 + 0x28)" * (cast_expression "(byte **)(lVar4 + 0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "pbVar7 = (byte *)".interp";" (assignment_expression "pbVar7 = (byte *)".interp"" identifier = (cast_expression "(byte *)".interp"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".interp"" " string_content "))) ;) (do_statement "do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);" do (compound_statement "{\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar6 < *pbVar7;" (assignment_expression "bVar11 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar10 = *pbVar6 == *pbVar7;" (assignment_expression "bVar10 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar6 + (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 "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)) ;) }) while (parenthesized_expression "(bVar10)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar10) != bVar11) break;" if (parenthesized_expression "((!bVar11 && !bVar10) != bVar11)" ( (binary_expression "(!bVar11 && !bVar10) != bVar11" (parenthesized_expression "(!bVar11 && !bVar10)" ( (binary_expression "!bVar11 && !bVar10" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar10" ! identifier)) )) != identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }" else (compound_statement "{\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }" { (expression_statement "uVar3 = *(ulong *)(plVar9[1] + 0x70);" (assignment_expression "uVar3 = *(ulong *)(plVar9[1] + 0x70)" identifier = (pointer_expression "*(ulong *)(plVar9[1] + 0x70)" * (cast_expression "(ulong *)(plVar9[1] + 0x70)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar9[1] + 0x70)" ( (binary_expression "plVar9[1] + 0x70" (subscript_expression "plVar9[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar10 = (uVar3 & 0x400) == 0;" (assignment_expression "bVar10 = (uVar3 & 0x400) == 0" identifier = (binary_expression "(uVar3 & 0x400) == 0" (parenthesized_expression "(uVar3 & 0x400)" ( (binary_expression "uVar3 & 0x400" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }" if (parenthesized_expression "(!bVar10)" ( (unary_expression "!bVar10" ! identifier) )) (compound_statement "{\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }" { (do_statement "do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);" do (compound_statement "{\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            }" { (expression_statement "plVar9 = plVar8;" (assignment_expression "plVar9 = plVar8" identifier = identifier) ;) (expression_statement "uVar1 = FUN_00212540(uVar3);" (assignment_expression "uVar1 = FUN_00212540(uVar3)" identifier = (call_expression "FUN_00212540(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) (expression_statement "FUN_002662f0(uVar2,*plVar9,uVar1);" (call_expression "FUN_002662f0(uVar2,*plVar9,uVar1)" identifier (argument_list "(uVar2,*plVar9,uVar1)" ( identifier , (pointer_expression "*plVar9" * identifier) , identifier ))) ;) (expression_statement "plVar8 = plVar9 + 1;" (assignment_expression "plVar8 = plVar9 + 1" identifier = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) (expression_statement "bVar10 = (long *)param_3[1] < plVar8;" (assignment_expression "bVar10 = (long *)param_3[1] < plVar8" identifier = (binary_expression "(long *)param_3[1] < plVar8" (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) < identifier)) ;) (expression_statement "bVar12 = (long *)param_3[1] == plVar8;" (assignment_expression "bVar12 = (long *)param_3[1] == plVar8" identifier = (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier)) ;) (if_statement "if (bVar12) break;" if (parenthesized_expression "(bVar12)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "uVar3 = *(ulong *)(plVar9[1] + 0x70);" (assignment_expression "uVar3 = *(ulong *)(plVar9[1] + 0x70)" identifier = (pointer_expression "*(ulong *)(plVar9[1] + 0x70)" * (cast_expression "(ulong *)(plVar9[1] + 0x70)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar9[1] + 0x70)" ( (binary_expression "plVar9[1] + 0x70" (subscript_expression "plVar9[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar12 = (uVar3 & 0x400) == 0;" (assignment_expression "bVar12 = (uVar3 & 0x400) == 0" identifier = (binary_expression "(uVar3 & 0x400) == 0" (parenthesized_expression "(uVar3 & 0x400)" ( (binary_expression "uVar3 & 0x400" identifier & number_literal) )) == number_literal)) ;) }) while (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) ;) (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (goto_statement "goto LAB_002c51f5;" goto statement_identifier ;) })) (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (expression_statement "lVar5 = 8;" (assignment_expression "lVar5 = 8" identifier = number_literal) ;) (expression_statement "pbVar6 = *(byte **)(lVar4 + 0x28);" (assignment_expression "pbVar6 = *(byte **)(lVar4 + 0x28)" identifier = (pointer_expression "*(byte **)(lVar4 + 0x28)" * (cast_expression "(byte **)(lVar4 + 0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "pbVar7 = (byte *)".interp";" (assignment_expression "pbVar7 = (byte *)".interp"" identifier = (cast_expression "(byte *)".interp"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".interp"" " string_content "))) ;) (do_statement "do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);" do (compound_statement "{\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar6 < *pbVar7;" (assignment_expression "bVar11 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar10 = *pbVar6 == *pbVar7;" (assignment_expression "bVar10 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar6 + (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 "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)) ;) }) while (parenthesized_expression "(bVar10)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }" if (parenthesized_expression "((!bVar11 && !bVar10) != bVar11)" ( (binary_expression "(!bVar11 && !bVar10) != bVar11" (parenthesized_expression "(!bVar11 && !bVar10)" ( (binary_expression "!bVar11 && !bVar10" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar10" ! identifier)) )) != identifier) )) (compound_statement "{\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }" { (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (expression_statement "lVar4 = plVar9[1];" (assignment_expression "lVar4 = plVar9[1]" identifier = (subscript_expression "plVar9[1]" identifier [ number_literal ])) ;) (expression_statement "plVar9 = plVar8;" (assignment_expression "plVar9 = plVar8" identifier = identifier) ;) (goto_statement "goto LAB_002c51e1;" goto statement_identifier ;) })) }))) (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (labeled_statement "LAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));" statement_identifier : (expression_statement "uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));" (assignment_expression "uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70))" identifier = (call_expression "FUN_00212540(*(undefined8 *)(lVar4 + 0x70))" identifier (argument_list "(*(undefined8 *)(lVar4 + 0x70))" ( (pointer_expression "*(undefined8 *)(lVar4 + 0x70)" * (cast_expression "(undefined8 *)(lVar4 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x70)" ( (binary_expression "lVar4 + 0x70" identifier + number_literal) )))) )))) ;)) (expression_statement "uVar2 = FUN_00215d90(param_2,3,uVar1);" (assignment_expression "uVar2 = FUN_00215d90(param_2,3,uVar1)" identifier = (call_expression "FUN_00215d90(param_2,3,uVar1)" identifier (argument_list "(param_2,3,uVar1)" ( identifier , number_literal , identifier )))) ;) (expression_statement "FUN_002662f0(uVar2,*plVar9,uVar1);" (call_expression "FUN_002662f0(uVar2,*plVar9,uVar1)" identifier (argument_list "(uVar2,*plVar9,uVar1)" ( identifier , (pointer_expression "*plVar9" * identifier) , identifier ))) ;) (if_statement "if ((long *)param_3[1] == plVar8) break;" if (parenthesized_expression "((long *)param_3[1] == plVar8)" ( (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) }))) (expression_statement "uVar3 = *(ulong *)(plVar9[1] + 0x70);" (assignment_expression "uVar3 = *(ulong *)(plVar9[1] + 0x70)" identifier = (pointer_expression "*(ulong *)(plVar9[1] + 0x70)" * (cast_expression "(ulong *)(plVar9[1] + 0x70)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar9[1] + 0x70)" ( (binary_expression "plVar9[1] + 0x70" (subscript_expression "plVar9[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "lVar4 = plVar9[1];" (assignment_expression "lVar4 = plVar9[1]" identifier = (subscript_expression "plVar9[1]" identifier [ number_literal ])) ;) (expression_statement "plVar9 = plVar8;" (assignment_expression "plVar9 = plVar8" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "param_1[0x3b] = '\x01';" (assignment_expression "param_1[0x3b] = '\x01'" (subscript_expression "param_1[0x3b]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void create_note_and_tls_segments(Script_sections * this, Layout *\n   layout, Section_list * sections) */\n\nvoid __thiscall\ngold::Script_sections::create_note_and_tls_segments\n          (Script_sections *this,Layout *layout,Section_list *sections)\n\n{\n  pointer ppOVar1;\n  Elf_Word EVar2;\n  Output_segment *pOVar3;\n  ulong flags;\n  char *format;\n  Output_section *pOVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  pointer ppOVar8;\n  pointer ppOVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  \n  bVar13 = 0;\n  if ((this->saw_sections_clause_ != false) && (this->phdrs_elements_ != (Phdrs_elements *)0x0)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  ppOVar9 = (sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_start;\n  if (ppOVar9 !=\n      (sections->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n      _M_impl._M_finish) {\n    bVar11 = false;\n    flags = (*ppOVar9)->flags_;\n    pOVar4 = *ppOVar9;\nLAB_002c51e1:\n    do {\n      ppOVar8 = ppOVar9 + 1;\n      if (pOVar4->type_ == 7) {\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,4,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if (((sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl._M_finish == ppOVar8) || (pOVar4 = ppOVar9[1], pOVar4->type_ != 7)) {\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n        else {\n          do {\n            ppOVar9 = ppOVar8;\n            EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n            Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n            ppOVar8 = ppOVar9 + 1;\n            if ((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8) break;\n            pOVar4 = ppOVar9[1];\n          } while (pOVar4->type_ == 7);\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n      }\n      bVar10 = false;\n      bVar12 = (flags & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = (byte *)pOVar4->name_;\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      else {\n        if (bVar11) {\n          format = (char *)gettext("TLS sections are not adjacent");\n          gold_error(format);\n          flags = (*ppOVar9)->flags_;\n        }\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,7,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        ppOVar1 = (sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)\n                  ._M_impl._M_finish;\n        bVar11 = ppOVar1 < ppOVar8;\n        bVar10 = ppOVar1 == ppOVar8;\n        if (bVar10) {\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          flags = ppOVar9[1]->flags_;\n          bVar11 = false;\n          bVar10 = (flags & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);\n            pOVar4 = *ppOVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            pOVar4 = ppOVar9[1];\n            ppOVar9 = ppOVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n        pOVar3 = Layout::make_output_segment(layout,3,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      flags = ppOVar9[1]->flags_;\n      pOVar4 = ppOVar9[1];\n      ppOVar9 = ppOVar8;\n    } while( true );\n  }\n  this->segments_created_ = true;\n  return;\n}\n\n" comment comment (function_definition "void __thiscall\ngold::Script_sections::create_note_and_tls_segments\n          (Script_sections *this,Layout *layout,Section_list *sections)\n\n{\n  pointer ppOVar1;\n  Elf_Word EVar2;\n  Output_segment *pOVar3;\n  ulong flags;\n  char *format;\n  Output_section *pOVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  pointer ppOVar8;\n  pointer ppOVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  \n  bVar13 = 0;\n  if ((this->saw_sections_clause_ != false) && (this->phdrs_elements_ != (Phdrs_elements *)0x0)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  ppOVar9 = (sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_start;\n  if (ppOVar9 !=\n      (sections->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n      _M_impl._M_finish) {\n    bVar11 = false;\n    flags = (*ppOVar9)->flags_;\n    pOVar4 = *ppOVar9;\nLAB_002c51e1:\n    do {\n      ppOVar8 = ppOVar9 + 1;\n      if (pOVar4->type_ == 7) {\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,4,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if (((sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl._M_finish == ppOVar8) || (pOVar4 = ppOVar9[1], pOVar4->type_ != 7)) {\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n        else {\n          do {\n            ppOVar9 = ppOVar8;\n            EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n            Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n            ppOVar8 = ppOVar9 + 1;\n            if ((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8) break;\n            pOVar4 = ppOVar9[1];\n          } while (pOVar4->type_ == 7);\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n      }\n      bVar10 = false;\n      bVar12 = (flags & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = (byte *)pOVar4->name_;\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      else {\n        if (bVar11) {\n          format = (char *)gettext("TLS sections are not adjacent");\n          gold_error(format);\n          flags = (*ppOVar9)->flags_;\n        }\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,7,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        ppOVar1 = (sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)\n                  ._M_impl._M_finish;\n        bVar11 = ppOVar1 < ppOVar8;\n        bVar10 = ppOVar1 == ppOVar8;\n        if (bVar10) {\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          flags = ppOVar9[1]->flags_;\n          bVar11 = false;\n          bVar10 = (flags & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);\n            pOVar4 = *ppOVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            pOVar4 = ppOVar9[1];\n            ppOVar9 = ppOVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n        pOVar3 = Layout::make_output_segment(layout,3,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      flags = ppOVar9[1]->flags_;\n      pOVar4 = ppOVar9[1];\n      ppOVar9 = ppOVar8;\n    } while( true );\n  }\n  this->segments_created_ = true;\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Script_sections::" identifier : : identifier : :) (function_declarator "create_note_and_tls_segments\n          (Script_sections *this,Layout *layout,Section_list *sections)" identifier (parameter_list "(Script_sections *this,Layout *layout,Section_list *sections)" ( (parameter_declaration "Script_sections *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Layout *layout" type_identifier (pointer_declarator "*layout" * identifier)) , (parameter_declaration "Section_list *sections" type_identifier (pointer_declarator "*sections" * identifier)) ))) (compound_statement "{\n  pointer ppOVar1;\n  Elf_Word EVar2;\n  Output_segment *pOVar3;\n  ulong flags;\n  char *format;\n  Output_section *pOVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  pointer ppOVar8;\n  pointer ppOVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  \n  bVar13 = 0;\n  if ((this->saw_sections_clause_ != false) && (this->phdrs_elements_ != (Phdrs_elements *)0x0)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  ppOVar9 = (sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_start;\n  if (ppOVar9 !=\n      (sections->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n      _M_impl._M_finish) {\n    bVar11 = false;\n    flags = (*ppOVar9)->flags_;\n    pOVar4 = *ppOVar9;\nLAB_002c51e1:\n    do {\n      ppOVar8 = ppOVar9 + 1;\n      if (pOVar4->type_ == 7) {\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,4,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if (((sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl._M_finish == ppOVar8) || (pOVar4 = ppOVar9[1], pOVar4->type_ != 7)) {\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n        else {\n          do {\n            ppOVar9 = ppOVar8;\n            EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n            Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n            ppOVar8 = ppOVar9 + 1;\n            if ((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8) break;\n            pOVar4 = ppOVar9[1];\n          } while (pOVar4->type_ == 7);\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n      }\n      bVar10 = false;\n      bVar12 = (flags & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = (byte *)pOVar4->name_;\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      else {\n        if (bVar11) {\n          format = (char *)gettext("TLS sections are not adjacent");\n          gold_error(format);\n          flags = (*ppOVar9)->flags_;\n        }\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,7,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        ppOVar1 = (sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)\n                  ._M_impl._M_finish;\n        bVar11 = ppOVar1 < ppOVar8;\n        bVar10 = ppOVar1 == ppOVar8;\n        if (bVar10) {\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          flags = ppOVar9[1]->flags_;\n          bVar11 = false;\n          bVar10 = (flags & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);\n            pOVar4 = *ppOVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            pOVar4 = ppOVar9[1];\n            ppOVar9 = ppOVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n        pOVar3 = Layout::make_output_segment(layout,3,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      flags = ppOVar9[1]->flags_;\n      pOVar4 = ppOVar9[1];\n      ppOVar9 = ppOVar8;\n    } while( true );\n  }\n  this->segments_created_ = true;\n  return;\n}" { (declaration "pointer ppOVar1;" type_identifier identifier ;) (declaration "Elf_Word EVar2;" type_identifier identifier ;) (declaration "Output_segment *pOVar3;" type_identifier (pointer_declarator "*pOVar3" * identifier) ;) (declaration "ulong flags;" type_identifier identifier ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "Output_section *pOVar4;" type_identifier (pointer_declarator "*pOVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "pointer ppOVar8;" type_identifier identifier ;) (declaration "pointer ppOVar9;" type_identifier identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (if_statement "if ((this->saw_sections_clause_ != false) && (this->phdrs_elements_ != (Phdrs_elements *)0x0)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }" if (parenthesized_expression "((this->saw_sections_clause_ != false) && (this->phdrs_elements_ != (Phdrs_elements *)0x0))" ( (binary_expression "(this->saw_sections_clause_ != false) && (this->phdrs_elements_ != (Phdrs_elements *)0x0)" (parenthesized_expression "(this->saw_sections_clause_ != false)" ( (binary_expression "this->saw_sections_clause_ != false" (field_expression "this->saw_sections_clause_" identifier -> field_identifier) != false) )) && (parenthesized_expression "(this->phdrs_elements_ != (Phdrs_elements *)0x0)" ( (binary_expression "this->phdrs_elements_ != (Phdrs_elements *)0x0" (field_expression "this->phdrs_elements_" identifier -> field_identifier) != (cast_expression "(Phdrs_elements *)0x0" ( (type_descriptor "Phdrs_elements *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");" (call_expression "do_gold_unreachable("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments")" identifier (argument_list "("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments")" ( (string_literal ""../../gold/script-sections.cc"" " string_content ") , number_literal , (string_literal ""create_note_and_tls_segments"" " string_content ") ))) ;) })) (expression_statement "ppOVar9 = (sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_start;" (assignment_expression "ppOVar9 = (sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_start" identifier = (field_expression "(sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_start" (field_expression "(sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl" (parenthesized_expression "(sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)" ( (ERROR "sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::" (comma_expression "sections->\n            super__Vector_base<gold::Output_section*,_std" (binary_expression "sections->\n            super__Vector_base<gold::Output_section*" (binary_expression "sections->\n            super__Vector_base<gold" (field_expression "sections->\n            super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Output_section*>_>" (binary_expression "Output_section*>_" identifier * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (ppOVar9 !=\n      (sections->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n      _M_impl._M_finish) {\n    bVar11 = false;\n    flags = (*ppOVar9)->flags_;\n    pOVar4 = *ppOVar9;\nLAB_002c51e1:\n    do {\n      ppOVar8 = ppOVar9 + 1;\n      if (pOVar4->type_ == 7) {\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,4,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if (((sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl._M_finish == ppOVar8) || (pOVar4 = ppOVar9[1], pOVar4->type_ != 7)) {\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n        else {\n          do {\n            ppOVar9 = ppOVar8;\n            EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n            Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n            ppOVar8 = ppOVar9 + 1;\n            if ((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8) break;\n            pOVar4 = ppOVar9[1];\n          } while (pOVar4->type_ == 7);\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n      }\n      bVar10 = false;\n      bVar12 = (flags & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = (byte *)pOVar4->name_;\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      else {\n        if (bVar11) {\n          format = (char *)gettext("TLS sections are not adjacent");\n          gold_error(format);\n          flags = (*ppOVar9)->flags_;\n        }\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,7,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        ppOVar1 = (sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)\n                  ._M_impl._M_finish;\n        bVar11 = ppOVar1 < ppOVar8;\n        bVar10 = ppOVar1 == ppOVar8;\n        if (bVar10) {\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          flags = ppOVar9[1]->flags_;\n          bVar11 = false;\n          bVar10 = (flags & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);\n            pOVar4 = *ppOVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            pOVar4 = ppOVar9[1];\n            ppOVar9 = ppOVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n        pOVar3 = Layout::make_output_segment(layout,3,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      flags = ppOVar9[1]->flags_;\n      pOVar4 = ppOVar9[1];\n      ppOVar9 = ppOVar8;\n    } while( true );\n  }" if (parenthesized_expression "(ppOVar9 !=\n      (sections->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n      _M_impl._M_finish)" ( (binary_expression "ppOVar9 !=\n      (sections->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n      _M_impl._M_finish" identifier != (field_expression "(sections->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n      _M_impl._M_finish" (field_expression "(sections->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n      _M_impl" (parenthesized_expression "(sections->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)" ( (binary_expression "sections->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>" (binary_expression "sections->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "sections->super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "sections->super__Vector_base<gold::Output_section*,_std" (binary_expression "sections->super__Vector_base<gold" (field_expression "sections->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) )) (compound_statement "{\n    bVar11 = false;\n    flags = (*ppOVar9)->flags_;\n    pOVar4 = *ppOVar9;\nLAB_002c51e1:\n    do {\n      ppOVar8 = ppOVar9 + 1;\n      if (pOVar4->type_ == 7) {\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,4,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if (((sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl._M_finish == ppOVar8) || (pOVar4 = ppOVar9[1], pOVar4->type_ != 7)) {\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n        else {\n          do {\n            ppOVar9 = ppOVar8;\n            EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n            Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n            ppOVar8 = ppOVar9 + 1;\n            if ((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8) break;\n            pOVar4 = ppOVar9[1];\n          } while (pOVar4->type_ == 7);\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n      }\n      bVar10 = false;\n      bVar12 = (flags & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = (byte *)pOVar4->name_;\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      else {\n        if (bVar11) {\n          format = (char *)gettext("TLS sections are not adjacent");\n          gold_error(format);\n          flags = (*ppOVar9)->flags_;\n        }\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,7,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        ppOVar1 = (sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)\n                  ._M_impl._M_finish;\n        bVar11 = ppOVar1 < ppOVar8;\n        bVar10 = ppOVar1 == ppOVar8;\n        if (bVar10) {\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          flags = ppOVar9[1]->flags_;\n          bVar11 = false;\n          bVar10 = (flags & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);\n            pOVar4 = *ppOVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            pOVar4 = ppOVar9[1];\n            ppOVar9 = ppOVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n        pOVar3 = Layout::make_output_segment(layout,3,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      flags = ppOVar9[1]->flags_;\n      pOVar4 = ppOVar9[1];\n      ppOVar9 = ppOVar8;\n    } while( true );\n  }" { (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "flags = (*ppOVar9)->flags_;" (assignment_expression "flags = (*ppOVar9)->flags_" identifier = (field_expression "(*ppOVar9)->flags_" (parenthesized_expression "(*ppOVar9)" ( (pointer_expression "*ppOVar9" * identifier) )) -> field_identifier)) ;) (expression_statement "pOVar4 = *ppOVar9;" (assignment_expression "pOVar4 = *ppOVar9" identifier = (pointer_expression "*ppOVar9" * identifier)) ;) (labeled_statement "LAB_002c51e1:\n    do {\n      ppOVar8 = ppOVar9 + 1;\n      if (pOVar4->type_ == 7) {\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,4,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if (((sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl._M_finish == ppOVar8) || (pOVar4 = ppOVar9[1], pOVar4->type_ != 7)) {\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n        else {\n          do {\n            ppOVar9 = ppOVar8;\n            EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n            Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n            ppOVar8 = ppOVar9 + 1;\n            if ((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8) break;\n            pOVar4 = ppOVar9[1];\n          } while (pOVar4->type_ == 7);\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n      }\n      bVar10 = false;\n      bVar12 = (flags & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = (byte *)pOVar4->name_;\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      else {\n        if (bVar11) {\n          format = (char *)gettext("TLS sections are not adjacent");\n          gold_error(format);\n          flags = (*ppOVar9)->flags_;\n        }\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,7,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        ppOVar1 = (sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)\n                  ._M_impl._M_finish;\n        bVar11 = ppOVar1 < ppOVar8;\n        bVar10 = ppOVar1 == ppOVar8;\n        if (bVar10) {\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          flags = ppOVar9[1]->flags_;\n          bVar11 = false;\n          bVar10 = (flags & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);\n            pOVar4 = *ppOVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            pOVar4 = ppOVar9[1];\n            ppOVar9 = ppOVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n        pOVar3 = Layout::make_output_segment(layout,3,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      flags = ppOVar9[1]->flags_;\n      pOVar4 = ppOVar9[1];\n      ppOVar9 = ppOVar8;\n    } while( true );" statement_identifier : (do_statement "do {\n      ppOVar8 = ppOVar9 + 1;\n      if (pOVar4->type_ == 7) {\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,4,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if (((sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl._M_finish == ppOVar8) || (pOVar4 = ppOVar9[1], pOVar4->type_ != 7)) {\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n        else {\n          do {\n            ppOVar9 = ppOVar8;\n            EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n            Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n            ppOVar8 = ppOVar9 + 1;\n            if ((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8) break;\n            pOVar4 = ppOVar9[1];\n          } while (pOVar4->type_ == 7);\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n      }\n      bVar10 = false;\n      bVar12 = (flags & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = (byte *)pOVar4->name_;\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      else {\n        if (bVar11) {\n          format = (char *)gettext("TLS sections are not adjacent");\n          gold_error(format);\n          flags = (*ppOVar9)->flags_;\n        }\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,7,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        ppOVar1 = (sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)\n                  ._M_impl._M_finish;\n        bVar11 = ppOVar1 < ppOVar8;\n        bVar10 = ppOVar1 == ppOVar8;\n        if (bVar10) {\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          flags = ppOVar9[1]->flags_;\n          bVar11 = false;\n          bVar10 = (flags & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);\n            pOVar4 = *ppOVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            pOVar4 = ppOVar9[1];\n            ppOVar9 = ppOVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n        pOVar3 = Layout::make_output_segment(layout,3,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      flags = ppOVar9[1]->flags_;\n      pOVar4 = ppOVar9[1];\n      ppOVar9 = ppOVar8;\n    } while( true );" do (compound_statement "{\n      ppOVar8 = ppOVar9 + 1;\n      if (pOVar4->type_ == 7) {\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,4,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if (((sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl._M_finish == ppOVar8) || (pOVar4 = ppOVar9[1], pOVar4->type_ != 7)) {\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n        else {\n          do {\n            ppOVar9 = ppOVar8;\n            EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n            Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n            ppOVar8 = ppOVar9 + 1;\n            if ((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8) break;\n            pOVar4 = ppOVar9[1];\n          } while (pOVar4->type_ == 7);\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n      }\n      bVar10 = false;\n      bVar12 = (flags & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = (byte *)pOVar4->name_;\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      else {\n        if (bVar11) {\n          format = (char *)gettext("TLS sections are not adjacent");\n          gold_error(format);\n          flags = (*ppOVar9)->flags_;\n        }\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,7,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        ppOVar1 = (sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)\n                  ._M_impl._M_finish;\n        bVar11 = ppOVar1 < ppOVar8;\n        bVar10 = ppOVar1 == ppOVar8;\n        if (bVar10) {\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          flags = ppOVar9[1]->flags_;\n          bVar11 = false;\n          bVar10 = (flags & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);\n            pOVar4 = *ppOVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            pOVar4 = ppOVar9[1];\n            ppOVar9 = ppOVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n        pOVar3 = Layout::make_output_segment(layout,3,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      flags = ppOVar9[1]->flags_;\n      pOVar4 = ppOVar9[1];\n      ppOVar9 = ppOVar8;\n    }" { (expression_statement "ppOVar8 = ppOVar9 + 1;" (assignment_expression "ppOVar8 = ppOVar9 + 1" identifier = (binary_expression "ppOVar9 + 1" identifier + number_literal)) ;) (if_statement "if (pOVar4->type_ == 7) {\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,4,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if (((sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl._M_finish == ppOVar8) || (pOVar4 = ppOVar9[1], pOVar4->type_ != 7)) {\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n        else {\n          do {\n            ppOVar9 = ppOVar8;\n            EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n            Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n            ppOVar8 = ppOVar9 + 1;\n            if ((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8) break;\n            pOVar4 = ppOVar9[1];\n          } while (pOVar4->type_ == 7);\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n      }" if (parenthesized_expression "(pOVar4->type_ == 7)" ( (binary_expression "pOVar4->type_ == 7" (field_expression "pOVar4->type_" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,4,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if (((sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl._M_finish == ppOVar8) || (pOVar4 = ppOVar9[1], pOVar4->type_ != 7)) {\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n        else {\n          do {\n            ppOVar9 = ppOVar8;\n            EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n            Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n            ppOVar8 = ppOVar9 + 1;\n            if ((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8) break;\n            pOVar4 = ppOVar9[1];\n          } while (pOVar4->type_ == 7);\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n      }" { (ERROR "EVar2 = Layout::" (assignment_expression "EVar2 = Layout" identifier = identifier) : :) (expression_statement "section_flags_to_segment(flags);" (call_expression "section_flags_to_segment(flags)" identifier (argument_list "(flags)" ( identifier ))) ;) (ERROR "pOVar3 = Layout::" (assignment_expression "pOVar3 = Layout" identifier = identifier) : :) (expression_statement "make_output_segment(layout,4,EVar2);" (call_expression "make_output_segment(layout,4,EVar2)" identifier (argument_list "(layout,4,EVar2)" ( identifier , number_literal , identifier ))) ;) (labeled_statement "Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);" statement_identifier : (ERROR ":" :) (expression_statement "add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);" (call_expression "add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2)" identifier (argument_list "(pOVar3,*ppOVar9,EVar2)" ( identifier , (pointer_expression "*ppOVar9" * identifier) , identifier ))) ;)) (if_statement "if (((sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl._M_finish == ppOVar8) || (pOVar4 = ppOVar9[1], pOVar4->type_ != 7)) {\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }\n        else {\n          do {\n            ppOVar9 = ppOVar8;\n            EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n            Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n            ppOVar8 = ppOVar9 + 1;\n            if ((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8) break;\n            pOVar4 = ppOVar9[1];\n          } while (pOVar4->type_ == 7);\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }" if (parenthesized_expression "(((sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl._M_finish == ppOVar8) || (pOVar4 = ppOVar9[1], pOVar4->type_ != 7))" ( (binary_expression "((sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl._M_finish == ppOVar8) || (pOVar4 = ppOVar9[1], pOVar4->type_ != 7)" (parenthesized_expression "((sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl._M_finish == ppOVar8)" ( (binary_expression "(sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl._M_finish == ppOVar8" (field_expression "(sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl._M_finish" (field_expression "(sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n             _M_impl" (parenthesized_expression "(sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)" ( (binary_expression "sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>" (binary_expression "sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "sections->\n             super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "sections->\n             super__Vector_base<gold::Output_section*,_std" (binary_expression "sections->\n             super__Vector_base<gold" (field_expression "sections->\n             super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier) == identifier) )) || (parenthesized_expression "(pOVar4 = ppOVar9[1], pOVar4->type_ != 7)" ( (comma_expression "pOVar4 = ppOVar9[1], pOVar4->type_ != 7" (assignment_expression "pOVar4 = ppOVar9[1]" identifier = (subscript_expression "ppOVar9[1]" identifier [ number_literal ])) , (binary_expression "pOVar4->type_ != 7" (field_expression "pOVar4->type_" identifier -> field_identifier) != number_literal)) ))) )) (compound_statement "{\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }" { (expression_statement "pOVar4 = *ppOVar9;" (assignment_expression "pOVar4 = *ppOVar9" identifier = (pointer_expression "*ppOVar9" * identifier)) ;) (expression_statement "flags = pOVar4->flags_;" (assignment_expression "flags = pOVar4->flags_" identifier = (field_expression "pOVar4->flags_" identifier -> field_identifier)) ;) }) (else_clause "else {\n          do {\n            ppOVar9 = ppOVar8;\n            EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n            Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n            ppOVar8 = ppOVar9 + 1;\n            if ((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8) break;\n            pOVar4 = ppOVar9[1];\n          } while (pOVar4->type_ == 7);\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }" else (compound_statement "{\n          do {\n            ppOVar9 = ppOVar8;\n            EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n            Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n            ppOVar8 = ppOVar9 + 1;\n            if ((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8) break;\n            pOVar4 = ppOVar9[1];\n          } while (pOVar4->type_ == 7);\n          pOVar4 = *ppOVar9;\n          flags = pOVar4->flags_;\n        }" { (do_statement "do {\n            ppOVar9 = ppOVar8;\n            EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n            Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n            ppOVar8 = ppOVar9 + 1;\n            if ((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8) break;\n            pOVar4 = ppOVar9[1];\n          } while (pOVar4->type_ == 7);" do (compound_statement "{\n            ppOVar9 = ppOVar8;\n            EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n            Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n            ppOVar8 = ppOVar9 + 1;\n            if ((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8) break;\n            pOVar4 = ppOVar9[1];\n          }" { (expression_statement "ppOVar9 = ppOVar8;" (assignment_expression "ppOVar9 = ppOVar8" identifier = identifier) ;) (ERROR "EVar2 = Layout::" (assignment_expression "EVar2 = Layout" identifier = identifier) : :) (expression_statement "section_flags_to_segment(pOVar4->flags_);" (call_expression "section_flags_to_segment(pOVar4->flags_)" identifier (argument_list "(pOVar4->flags_)" ( (field_expression "pOVar4->flags_" identifier -> field_identifier) ))) ;) (labeled_statement "Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);" statement_identifier : (ERROR ":" :) (expression_statement "add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);" (call_expression "add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2)" identifier (argument_list "(pOVar3,*ppOVar9,EVar2)" ( identifier , (pointer_expression "*ppOVar9" * identifier) , identifier ))) ;)) (expression_statement "ppOVar8 = ppOVar9 + 1;" (assignment_expression "ppOVar8 = ppOVar9 + 1" identifier = (binary_expression "ppOVar9 + 1" identifier + number_literal)) ;) (if_statement "if ((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8) break;" if (parenthesized_expression "((sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8)" ( (binary_expression "(sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish == ppOVar8" (field_expression "(sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl._M_finish" (field_expression "(sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                _M_impl" (parenthesized_expression "(sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)" ( (binary_expression "sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>" (binary_expression "sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "sections->\n                super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "sections->\n                super__Vector_base<gold::Output_section*,_std" (binary_expression "sections->\n                super__Vector_base<gold" (field_expression "sections->\n                super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier) == identifier) )) (break_statement "break;" break ;)) (expression_statement "pOVar4 = ppOVar9[1];" (assignment_expression "pOVar4 = ppOVar9[1]" identifier = (subscript_expression "ppOVar9[1]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(pOVar4->type_ == 7)" ( (binary_expression "pOVar4->type_ == 7" (field_expression "pOVar4->type_" identifier -> field_identifier) == number_literal) )) ;) (expression_statement "pOVar4 = *ppOVar9;" (assignment_expression "pOVar4 = *ppOVar9" identifier = (pointer_expression "*ppOVar9" * identifier)) ;) (expression_statement "flags = pOVar4->flags_;" (assignment_expression "flags = pOVar4->flags_" identifier = (field_expression "pOVar4->flags_" identifier -> field_identifier)) ;) }))) })) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar12 = (flags & 0x400) == 0;" (assignment_expression "bVar12 = (flags & 0x400) == 0" identifier = (binary_expression "(flags & 0x400) == 0" (parenthesized_expression "(flags & 0x400)" ( (binary_expression "flags & 0x400" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = (byte *)pOVar4->name_;\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }\n      else {\n        if (bVar11) {\n          format = (char *)gettext("TLS sections are not adjacent");\n          gold_error(format);\n          flags = (*ppOVar9)->flags_;\n        }\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,7,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        ppOVar1 = (sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)\n                  ._M_impl._M_finish;\n        bVar11 = ppOVar1 < ppOVar8;\n        bVar10 = ppOVar1 == ppOVar8;\n        if (bVar10) {\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          flags = ppOVar9[1]->flags_;\n          bVar11 = false;\n          bVar10 = (flags & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);\n            pOVar4 = *ppOVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            pOVar4 = ppOVar9[1];\n            ppOVar9 = ppOVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n        pOVar3 = Layout::make_output_segment(layout,3,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = (byte *)pOVar4->name_;\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }" { (labeled_statement "LAB_002c51f5:\n        lVar5 = 8;" statement_identifier : (expression_statement "lVar5 = 8;" (assignment_expression "lVar5 = 8" identifier = number_literal) ;)) (expression_statement "pbVar6 = (byte *)pOVar4->name_;" (assignment_expression "pbVar6 = (byte *)pOVar4->name_" identifier = (cast_expression "(byte *)pOVar4->name_" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pOVar4->name_" identifier -> field_identifier))) ;) (expression_statement "pbVar7 = (byte *)".interp";" (assignment_expression "pbVar7 = (byte *)".interp"" identifier = (cast_expression "(byte *)".interp"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".interp"" " string_content "))) ;) (do_statement "do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);" do (compound_statement "{\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar6 < *pbVar7;" (assignment_expression "bVar10 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar12 = *pbVar6 == *pbVar7;" (assignment_expression "bVar12 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar6 + (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 "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)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;" if (parenthesized_expression "((!bVar10 && !bVar12) == bVar10)" ( (binary_expression "(!bVar10 && !bVar12) == bVar10" (parenthesized_expression "(!bVar10 && !bVar12)" ( (binary_expression "!bVar10 && !bVar12" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar12" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_002c520c;" goto statement_identifier ;)) (if_statement "if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;" if (parenthesized_expression "((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8)" ( (binary_expression "(sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8" (field_expression "(sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish" (field_expression "(sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl" (parenthesized_expression "(sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)" ( (binary_expression "sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>" (binary_expression "sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "sections->\n            super__Vector_base<gold::Output_section*,_std" (binary_expression "sections->\n            super__Vector_base<gold" (field_expression "sections->\n            super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier) == identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\n        if (bVar11) {\n          format = (char *)gettext("TLS sections are not adjacent");\n          gold_error(format);\n          flags = (*ppOVar9)->flags_;\n        }\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,7,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        ppOVar1 = (sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)\n                  ._M_impl._M_finish;\n        bVar11 = ppOVar1 < ppOVar8;\n        bVar10 = ppOVar1 == ppOVar8;\n        if (bVar10) {\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          flags = ppOVar9[1]->flags_;\n          bVar11 = false;\n          bVar10 = (flags & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);\n            pOVar4 = *ppOVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            pOVar4 = ppOVar9[1];\n            ppOVar9 = ppOVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n        pOVar3 = Layout::make_output_segment(layout,3,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }" else (compound_statement "{\n        if (bVar11) {\n          format = (char *)gettext("TLS sections are not adjacent");\n          gold_error(format);\n          flags = (*ppOVar9)->flags_;\n        }\n        EVar2 = Layout::section_flags_to_segment(flags);\n        pOVar3 = Layout::make_output_segment(layout,7,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        ppOVar1 = (sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)\n                  ._M_impl._M_finish;\n        bVar11 = ppOVar1 < ppOVar8;\n        bVar10 = ppOVar1 == ppOVar8;\n        if (bVar10) {\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          flags = ppOVar9[1]->flags_;\n          bVar11 = false;\n          bVar10 = (flags & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);\n            pOVar4 = *ppOVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            pOVar4 = ppOVar9[1];\n            ppOVar9 = ppOVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);\n        pOVar3 = Layout::make_output_segment(layout,3,EVar2);\n        Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n        if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;\n      }" { (if_statement "if (bVar11) {\n          format = (char *)gettext("TLS sections are not adjacent");\n          gold_error(format);\n          flags = (*ppOVar9)->flags_;\n        }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n          format = (char *)gettext("TLS sections are not adjacent");\n          gold_error(format);\n          flags = (*ppOVar9)->flags_;\n        }" { (expression_statement "format = (char *)gettext("TLS sections are not adjacent");" (assignment_expression "format = (char *)gettext("TLS sections are not adjacent")" identifier = (cast_expression "(char *)gettext("TLS sections are not adjacent")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("TLS sections are not adjacent")" identifier (argument_list "("TLS sections are not adjacent")" ( (string_literal ""TLS sections are not adjacent"" " string_content ") ))))) ;) (expression_statement "gold_error(format);" (call_expression "gold_error(format)" identifier (argument_list "(format)" ( identifier ))) ;) (expression_statement "flags = (*ppOVar9)->flags_;" (assignment_expression "flags = (*ppOVar9)->flags_" identifier = (field_expression "(*ppOVar9)->flags_" (parenthesized_expression "(*ppOVar9)" ( (pointer_expression "*ppOVar9" * identifier) )) -> field_identifier)) ;) })) (ERROR "EVar2 = Layout::" (assignment_expression "EVar2 = Layout" identifier = identifier) : :) (expression_statement "section_flags_to_segment(flags);" (call_expression "section_flags_to_segment(flags)" identifier (argument_list "(flags)" ( identifier ))) ;) (ERROR "pOVar3 = Layout::" (assignment_expression "pOVar3 = Layout" identifier = identifier) : :) (expression_statement "make_output_segment(layout,7,EVar2);" (call_expression "make_output_segment(layout,7,EVar2)" identifier (argument_list "(layout,7,EVar2)" ( identifier , number_literal , identifier ))) ;) (labeled_statement "Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);" statement_identifier : (ERROR ":" :) (expression_statement "add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);" (call_expression "add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2)" identifier (argument_list "(pOVar3,*ppOVar9,EVar2)" ( identifier , (pointer_expression "*ppOVar9" * identifier) , identifier ))) ;)) (expression_statement "ppOVar1 = (sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)\n                  ._M_impl._M_finish;" (assignment_expression "ppOVar1 = (sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)\n                  ._M_impl._M_finish" identifier = (field_expression "(sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)\n                  ._M_impl._M_finish" (field_expression "(sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)\n                  ._M_impl" (parenthesized_expression "(sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)" ( (ERROR "sections->\n                  super__Vector_base<gold::Output_section*,_std::allocator<gold::" (comma_expression "sections->\n                  super__Vector_base<gold::Output_section*,_std" (binary_expression "sections->\n                  super__Vector_base<gold::Output_section*" (binary_expression "sections->\n                  super__Vector_base<gold" (field_expression "sections->\n                  super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Output_section*>_>" (binary_expression "Output_section*>_" identifier * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "bVar11 = ppOVar1 < ppOVar8;" (assignment_expression "bVar11 = ppOVar1 < ppOVar8" identifier = (binary_expression "ppOVar1 < ppOVar8" identifier < identifier)) ;) (expression_statement "bVar10 = ppOVar1 == ppOVar8;" (assignment_expression "bVar10 = ppOVar1 == ppOVar8" identifier = (binary_expression "ppOVar1 == ppOVar8" identifier == identifier)) ;) (if_statement "if (bVar10) {\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          flags = ppOVar9[1]->flags_;\n          bVar11 = false;\n          bVar10 = (flags & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);\n            pOVar4 = *ppOVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            pOVar4 = ppOVar9[1];\n            ppOVar9 = ppOVar8;\n            goto LAB_002c51e1;\n          }\n        }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }" { (expression_statement "pOVar4 = *ppOVar9;" (assignment_expression "pOVar4 = *ppOVar9" identifier = (pointer_expression "*ppOVar9" * identifier)) ;) (expression_statement "lVar5 = 8;" (assignment_expression "lVar5 = 8" identifier = number_literal) ;) (expression_statement "pbVar6 = (byte *)pOVar4->name_;" (assignment_expression "pbVar6 = (byte *)pOVar4->name_" identifier = (cast_expression "(byte *)pOVar4->name_" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pOVar4->name_" identifier -> field_identifier))) ;) (expression_statement "pbVar7 = (byte *)".interp";" (assignment_expression "pbVar7 = (byte *)".interp"" identifier = (cast_expression "(byte *)".interp"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".interp"" " string_content "))) ;) (do_statement "do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);" do (compound_statement "{\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar6 < *pbVar7;" (assignment_expression "bVar11 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar10 = *pbVar6 == *pbVar7;" (assignment_expression "bVar10 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar6 + (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 "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)) ;) }) while (parenthesized_expression "(bVar10)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar10) != bVar11) break;" if (parenthesized_expression "((!bVar11 && !bVar10) != bVar11)" ( (binary_expression "(!bVar11 && !bVar10) != bVar11" (parenthesized_expression "(!bVar11 && !bVar10)" ( (binary_expression "!bVar11 && !bVar10" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar10" ! identifier)) )) != identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\n          flags = ppOVar9[1]->flags_;\n          bVar11 = false;\n          bVar10 = (flags & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);\n            pOVar4 = *ppOVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            pOVar4 = ppOVar9[1];\n            ppOVar9 = ppOVar8;\n            goto LAB_002c51e1;\n          }\n        }" else (compound_statement "{\n          flags = ppOVar9[1]->flags_;\n          bVar11 = false;\n          bVar10 = (flags & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);\n            pOVar4 = *ppOVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          pOVar4 = *ppOVar9;\n          lVar5 = 8;\n          pbVar6 = (byte *)pOVar4->name_;\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            pOVar4 = ppOVar9[1];\n            ppOVar9 = ppOVar8;\n            goto LAB_002c51e1;\n          }\n        }" { (expression_statement "flags = ppOVar9[1]->flags_;" (assignment_expression "flags = ppOVar9[1]->flags_" identifier = (field_expression "ppOVar9[1]->flags_" (subscript_expression "ppOVar9[1]" identifier [ number_literal ]) -> field_identifier)) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar10 = (flags & 0x400) == 0;" (assignment_expression "bVar10 = (flags & 0x400) == 0" identifier = (binary_expression "(flags & 0x400) == 0" (parenthesized_expression "(flags & 0x400)" ( (binary_expression "flags & 0x400" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (!bVar10) {\n            do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);\n            pOVar4 = *ppOVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }" if (parenthesized_expression "(!bVar10)" ( (unary_expression "!bVar10" ! identifier) )) (compound_statement "{\n            do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);\n            pOVar4 = *ppOVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }" { (do_statement "do {\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            } while (!bVar12);" do (compound_statement "{\n              ppOVar9 = ppOVar8;\n              EVar2 = Layout::section_flags_to_segment(flags);\n              Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);\n              ppOVar8 = ppOVar9 + 1;\n              ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;\n              bVar10 = ppOVar1 < ppOVar8;\n              bVar12 = ppOVar1 == ppOVar8;\n              if (bVar12) break;\n              flags = ppOVar9[1]->flags_;\n              bVar10 = false;\n              bVar12 = (flags & 0x400) == 0;\n            }" { (expression_statement "ppOVar9 = ppOVar8;" (assignment_expression "ppOVar9 = ppOVar8" identifier = identifier) ;) (ERROR "EVar2 = Layout::" (assignment_expression "EVar2 = Layout" identifier = identifier) : :) (expression_statement "section_flags_to_segment(flags);" (call_expression "section_flags_to_segment(flags)" identifier (argument_list "(flags)" ( identifier ))) ;) (labeled_statement "Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);" statement_identifier : (ERROR ":" :) (expression_statement "add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);" (call_expression "add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2)" identifier (argument_list "(pOVar3,*ppOVar9,EVar2)" ( identifier , (pointer_expression "*ppOVar9" * identifier) , identifier ))) ;)) (expression_statement "ppOVar8 = ppOVar9 + 1;" (assignment_expression "ppOVar8 = ppOVar9 + 1" identifier = (binary_expression "ppOVar9 + 1" identifier + number_literal)) ;) (expression_statement "ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish;" (assignment_expression "ppOVar1 = (sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish" identifier = (field_expression "(sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl._M_finish" (field_expression "(sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )._M_impl" (parenthesized_expression "(sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        )" ( (ERROR "sections->\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::" (comma_expression "sections->\n                        super__Vector_base<gold::Output_section*,_std" (binary_expression "sections->\n                        super__Vector_base<gold::Output_section*" (binary_expression "sections->\n                        super__Vector_base<gold" (field_expression "sections->\n                        super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Output_section*>_>" (binary_expression "Output_section*>_" identifier * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "bVar10 = ppOVar1 < ppOVar8;" (assignment_expression "bVar10 = ppOVar1 < ppOVar8" identifier = (binary_expression "ppOVar1 < ppOVar8" identifier < identifier)) ;) (expression_statement "bVar12 = ppOVar1 == ppOVar8;" (assignment_expression "bVar12 = ppOVar1 == ppOVar8" identifier = (binary_expression "ppOVar1 == ppOVar8" identifier == identifier)) ;) (if_statement "if (bVar12) break;" if (parenthesized_expression "(bVar12)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "flags = ppOVar9[1]->flags_;" (assignment_expression "flags = ppOVar9[1]->flags_" identifier = (field_expression "ppOVar9[1]->flags_" (subscript_expression "ppOVar9[1]" identifier [ number_literal ]) -> field_identifier)) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar12 = (flags & 0x400) == 0;" (assignment_expression "bVar12 = (flags & 0x400) == 0" identifier = (binary_expression "(flags & 0x400) == 0" (parenthesized_expression "(flags & 0x400)" ( (binary_expression "flags & 0x400" identifier & number_literal) )) == number_literal)) ;) }) while (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) ;) (expression_statement "pOVar4 = *ppOVar9;" (assignment_expression "pOVar4 = *ppOVar9" identifier = (pointer_expression "*ppOVar9" * identifier)) ;) (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (goto_statement "goto LAB_002c51f5;" goto statement_identifier ;) })) (expression_statement "pOVar4 = *ppOVar9;" (assignment_expression "pOVar4 = *ppOVar9" identifier = (pointer_expression "*ppOVar9" * identifier)) ;) (expression_statement "lVar5 = 8;" (assignment_expression "lVar5 = 8" identifier = number_literal) ;) (expression_statement "pbVar6 = (byte *)pOVar4->name_;" (assignment_expression "pbVar6 = (byte *)pOVar4->name_" identifier = (cast_expression "(byte *)pOVar4->name_" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pOVar4->name_" identifier -> field_identifier))) ;) (expression_statement "pbVar7 = (byte *)".interp";" (assignment_expression "pbVar7 = (byte *)".interp"" identifier = (cast_expression "(byte *)".interp"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".interp"" " string_content "))) ;) (do_statement "do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);" do (compound_statement "{\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar6 < *pbVar7;" (assignment_expression "bVar11 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar10 = *pbVar6 == *pbVar7;" (assignment_expression "bVar10 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar6 + (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 "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)) ;) }) while (parenthesized_expression "(bVar10)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            pOVar4 = ppOVar9[1];\n            ppOVar9 = ppOVar8;\n            goto LAB_002c51e1;\n          }" if (parenthesized_expression "((!bVar11 && !bVar10) != bVar11)" ( (binary_expression "(!bVar11 && !bVar10) != bVar11" (parenthesized_expression "(!bVar11 && !bVar10)" ( (binary_expression "!bVar11 && !bVar10" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar10" ! identifier)) )) != identifier) )) (compound_statement "{\n            bVar11 = true;\n            pOVar4 = ppOVar9[1];\n            ppOVar9 = ppOVar8;\n            goto LAB_002c51e1;\n          }" { (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (expression_statement "pOVar4 = ppOVar9[1];" (assignment_expression "pOVar4 = ppOVar9[1]" identifier = (subscript_expression "ppOVar9[1]" identifier [ number_literal ])) ;) (expression_statement "ppOVar9 = ppOVar8;" (assignment_expression "ppOVar9 = ppOVar8" identifier = identifier) ;) (goto_statement "goto LAB_002c51e1;" goto statement_identifier ;) })) }))) (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (labeled_statement "LAB_002c520c:\n        EVar2 = Layout::section_flags_to_segment(pOVar4->flags_);" statement_identifier : (ERROR "EVar2 = Layout::" (assignment_expression "EVar2 = Layout" identifier = identifier) : :) (expression_statement "section_flags_to_segment(pOVar4->flags_);" (call_expression "section_flags_to_segment(pOVar4->flags_)" identifier (argument_list "(pOVar4->flags_)" ( (field_expression "pOVar4->flags_" identifier -> field_identifier) ))) ;)) (ERROR "pOVar3 = Layout::" (assignment_expression "pOVar3 = Layout" identifier = identifier) : :) (expression_statement "make_output_segment(layout,3,EVar2);" (call_expression "make_output_segment(layout,3,EVar2)" identifier (argument_list "(layout,3,EVar2)" ( identifier , number_literal , identifier ))) ;) (labeled_statement "Output_segment::add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);" statement_identifier : (ERROR ":" :) (expression_statement "add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2);" (call_expression "add_output_section_to_nonload(pOVar3,*ppOVar9,EVar2)" identifier (argument_list "(pOVar3,*ppOVar9,EVar2)" ( identifier , (pointer_expression "*ppOVar9" * identifier) , identifier ))) ;)) (if_statement "if ((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8) break;" if (parenthesized_expression "((sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8)" ( (binary_expression "(sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish == ppOVar8" (field_expression "(sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish" (field_expression "(sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl" (parenthesized_expression "(sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)" ( (binary_expression "sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>" (binary_expression "sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "sections->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "sections->\n            super__Vector_base<gold::Output_section*,_std" (binary_expression "sections->\n            super__Vector_base<gold" (field_expression "sections->\n            super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier) == identifier) )) (break_statement "break;" break ;)) }))) (expression_statement "flags = ppOVar9[1]->flags_;" (assignment_expression "flags = ppOVar9[1]->flags_" identifier = (field_expression "ppOVar9[1]->flags_" (subscript_expression "ppOVar9[1]" identifier [ number_literal ]) -> field_identifier)) ;) (expression_statement "pOVar4 = ppOVar9[1];" (assignment_expression "pOVar4 = ppOVar9[1]" identifier = (subscript_expression "ppOVar9[1]" identifier [ number_literal ])) ;) (expression_statement "ppOVar9 = ppOVar8;" (assignment_expression "ppOVar9 = ppOVar8" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "this->segments_created_ = true;" (assignment_expression "this->segments_created_ = true" (field_expression "this->segments_created_" identifier -> field_identifier) = true) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_002c5170(char *param_1,undefined8 param_2,ulong *param_3)\n\n{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  long lVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  long *plVar8;\n  long *plVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  \n  bVar13 = 0;\n  if ((*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0)) {\n                    \n    FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  plVar9 = (long *)*param_3;\n  if (plVar9 != (long *)param_3[1]) {\n    bVar11 = false;\n    uVar3 = *(ulong *)(*plVar9 + 0x70);\n    lVar4 = *plVar9;\nLAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );\n  }\n  param_1[0x3b] = '\x01';\n  return;\n}\n\n" (function_definition "void FUN_002c5170(char *param_1,undefined8 param_2,ulong *param_3)\n\n{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  long lVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  long *plVar8;\n  long *plVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  \n  bVar13 = 0;\n  if ((*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0)) {\n                    \n    FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  plVar9 = (long *)*param_3;\n  if (plVar9 != (long *)param_3[1]) {\n    bVar11 = false;\n    uVar3 = *(ulong *)(*plVar9 + 0x70);\n    lVar4 = *plVar9;\nLAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );\n  }\n  param_1[0x3b] = '\x01';\n  return;\n}" primitive_type (function_declarator "FUN_002c5170(char *param_1,undefined8 param_2,ulong *param_3)" identifier (parameter_list "(char *param_1,undefined8 param_2,ulong *param_3)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "ulong *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  long lVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  long *plVar8;\n  long *plVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  \n  bVar13 = 0;\n  if ((*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0)) {\n                    \n    FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  plVar9 = (long *)*param_3;\n  if (plVar9 != (long *)param_3[1]) {\n    bVar11 = false;\n    uVar3 = *(ulong *)(*plVar9 + 0x70);\n    lVar4 = *plVar9;\nLAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );\n  }\n  param_1[0x3b] = '\x01';\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "long *plVar9;" (sized_type_specifier "long" long) (pointer_declarator "*plVar9" * identifier) ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (if_statement "if ((*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0)) {\n                    \n    FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }" if (parenthesized_expression "((*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0))" ( (binary_expression "(*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0)" (parenthesized_expression "(*param_1 != '\0')" ( (binary_expression "*param_1 != '\0'" (pointer_expression "*param_1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(long *)(param_1 + 0x20) != 0)" ( (binary_expression "*(long *)(param_1 + 0x20) != 0" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n                    \n    FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }" { (expression_statement "FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");" (call_expression "FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments")" identifier (argument_list "("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments")" ( (string_literal ""../../gold/script-sections.cc"" " string_content ") , number_literal , (string_literal ""create_note_and_tls_segments"" " string_content ") ))) ;) })) (expression_statement "plVar9 = (long *)*param_3;" (assignment_expression "plVar9 = (long *)*param_3" identifier = (cast_expression "(long *)*param_3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (if_statement "if (plVar9 != (long *)param_3[1]) {\n    bVar11 = false;\n    uVar3 = *(ulong *)(*plVar9 + 0x70);\n    lVar4 = *plVar9;\nLAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );\n  }" if (parenthesized_expression "(plVar9 != (long *)param_3[1])" ( (binary_expression "plVar9 != (long *)param_3[1]" identifier != (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    bVar11 = false;\n    uVar3 = *(ulong *)(*plVar9 + 0x70);\n    lVar4 = *plVar9;\nLAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );\n  }" { (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "uVar3 = *(ulong *)(*plVar9 + 0x70);" (assignment_expression "uVar3 = *(ulong *)(*plVar9 + 0x70)" identifier = (pointer_expression "*(ulong *)(*plVar9 + 0x70)" * (cast_expression "(ulong *)(*plVar9 + 0x70)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar9 + 0x70)" ( (binary_expression "*plVar9 + 0x70" (pointer_expression "*plVar9" * identifier) + number_literal) ))))) ;) (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (labeled_statement "LAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );" statement_identifier : (do_statement "do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );" do (compound_statement "{\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    }" { (expression_statement "plVar8 = plVar9 + 1;" (assignment_expression "plVar8 = plVar9 + 1" identifier = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) (if_statement "if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }" if (parenthesized_expression "(*(int *)(lVar4 + 0x6c) == 7)" ( (binary_expression "*(int *)(lVar4 + 0x6c) == 7" (pointer_expression "*(int *)(lVar4 + 0x6c)" * (cast_expression "(int *)(lVar4 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x6c)" ( (binary_expression "lVar4 + 0x6c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }" { (expression_statement "uVar1 = FUN_00212540(uVar3);" (assignment_expression "uVar1 = FUN_00212540(uVar3)" identifier = (call_expression "FUN_00212540(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) (expression_statement "uVar2 = FUN_00215d90(param_2,4,uVar1);" (assignment_expression "uVar2 = FUN_00215d90(param_2,4,uVar1)" identifier = (call_expression "FUN_00215d90(param_2,4,uVar1)" identifier (argument_list "(param_2,4,uVar1)" ( identifier , number_literal , identifier )))) ;) (expression_statement "FUN_002662f0(uVar2,*plVar9,uVar1);" (call_expression "FUN_002662f0(uVar2,*plVar9,uVar1)" identifier (argument_list "(uVar2,*plVar9,uVar1)" ( identifier , (pointer_expression "*plVar9" * identifier) , identifier ))) ;) (if_statement "if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }" if (parenthesized_expression "(((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7))" ( (binary_expression "((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)" (parenthesized_expression "((long *)param_3[1] == plVar8)" ( (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier) )) || (parenthesized_expression "(lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)" ( (comma_expression "lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7" (assignment_expression "lVar4 = plVar9[1]" identifier = (subscript_expression "plVar9[1]" identifier [ number_literal ])) , (binary_expression "*(int *)(lVar4 + 0x6c) != 7" (pointer_expression "*(int *)(lVar4 + 0x6c)" * (cast_expression "(int *)(lVar4 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x6c)" ( (binary_expression "lVar4 + 0x6c" identifier + number_literal) )))) != number_literal)) ))) )) (compound_statement "{\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }" { (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (expression_statement "uVar3 = *(ulong *)(lVar4 + 0x70);" (assignment_expression "uVar3 = *(ulong *)(lVar4 + 0x70)" identifier = (pointer_expression "*(ulong *)(lVar4 + 0x70)" * (cast_expression "(ulong *)(lVar4 + 0x70)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x70)" ( (binary_expression "lVar4 + 0x70" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }" else (compound_statement "{\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }" { (do_statement "do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);" do (compound_statement "{\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          }" { (expression_statement "plVar9 = plVar8;" (assignment_expression "plVar9 = plVar8" identifier = identifier) ;) (expression_statement "uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));" (assignment_expression "uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70))" identifier = (call_expression "FUN_00212540(*(undefined8 *)(lVar4 + 0x70))" identifier (argument_list "(*(undefined8 *)(lVar4 + 0x70))" ( (pointer_expression "*(undefined8 *)(lVar4 + 0x70)" * (cast_expression "(undefined8 *)(lVar4 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x70)" ( (binary_expression "lVar4 + 0x70" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_002662f0(uVar2,*plVar9,uVar1);" (call_expression "FUN_002662f0(uVar2,*plVar9,uVar1)" identifier (argument_list "(uVar2,*plVar9,uVar1)" ( identifier , (pointer_expression "*plVar9" * identifier) , identifier ))) ;) (expression_statement "plVar8 = plVar9 + 1;" (assignment_expression "plVar8 = plVar9 + 1" identifier = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) (if_statement "if ((long *)param_3[1] == plVar8) break;" if (parenthesized_expression "((long *)param_3[1] == plVar8)" ( (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) (expression_statement "lVar4 = plVar9[1];" (assignment_expression "lVar4 = plVar9[1]" identifier = (subscript_expression "plVar9[1]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(*(int *)(lVar4 + 0x6c) == 7)" ( (binary_expression "*(int *)(lVar4 + 0x6c) == 7" (pointer_expression "*(int *)(lVar4 + 0x6c)" * (cast_expression "(int *)(lVar4 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x6c)" ( (binary_expression "lVar4 + 0x6c" identifier + number_literal) )))) == number_literal) )) ;) (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (expression_statement "uVar3 = *(ulong *)(lVar4 + 0x70);" (assignment_expression "uVar3 = *(ulong *)(lVar4 + 0x70)" identifier = (pointer_expression "*(ulong *)(lVar4 + 0x70)" * (cast_expression "(ulong *)(lVar4 + 0x70)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x70)" ( (binary_expression "lVar4 + 0x70" identifier + number_literal) ))))) ;) }))) })) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar12 = (uVar3 & 0x400) == 0;" (assignment_expression "bVar12 = (uVar3 & 0x400) == 0" identifier = (binary_expression "(uVar3 & 0x400) == 0" (parenthesized_expression "(uVar3 & 0x400)" ( (binary_expression "uVar3 & 0x400" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }" { (labeled_statement "LAB_002c51f5:\n        lVar5 = 8;" statement_identifier : (expression_statement "lVar5 = 8;" (assignment_expression "lVar5 = 8" identifier = number_literal) ;)) (expression_statement "pbVar6 = *(byte **)(lVar4 + 0x28);" (assignment_expression "pbVar6 = *(byte **)(lVar4 + 0x28)" identifier = (pointer_expression "*(byte **)(lVar4 + 0x28)" * (cast_expression "(byte **)(lVar4 + 0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "pbVar7 = (byte *)".interp";" (assignment_expression "pbVar7 = (byte *)".interp"" identifier = (cast_expression "(byte *)".interp"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".interp"" " string_content "))) ;) (do_statement "do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);" do (compound_statement "{\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar6 < *pbVar7;" (assignment_expression "bVar10 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar12 = *pbVar6 == *pbVar7;" (assignment_expression "bVar12 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar6 + (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 "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)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;" if (parenthesized_expression "((!bVar10 && !bVar12) == bVar10)" ( (binary_expression "(!bVar10 && !bVar12) == bVar10" (parenthesized_expression "(!bVar10 && !bVar12)" ( (binary_expression "!bVar10 && !bVar12" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar12" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_002c520c;" goto statement_identifier ;)) (if_statement "if ((long *)param_3[1] == plVar8) break;" if (parenthesized_expression "((long *)param_3[1] == plVar8)" ( (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }" else (compound_statement "{\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }" { (if_statement "if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }" { (expression_statement "uVar2 = gettext("TLS sections are not adjacent");" (assignment_expression "uVar2 = gettext("TLS sections are not adjacent")" identifier = (call_expression "gettext("TLS sections are not adjacent")" identifier (argument_list "("TLS sections are not adjacent")" ( (string_literal ""TLS sections are not adjacent"" " string_content ") )))) ;) (expression_statement "FUN_001e14f0(uVar2);" (call_expression "FUN_001e14f0(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "uVar3 = *(ulong *)(*plVar9 + 0x70);" (assignment_expression "uVar3 = *(ulong *)(*plVar9 + 0x70)" identifier = (pointer_expression "*(ulong *)(*plVar9 + 0x70)" * (cast_expression "(ulong *)(*plVar9 + 0x70)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar9 + 0x70)" ( (binary_expression "*plVar9 + 0x70" (pointer_expression "*plVar9" * identifier) + number_literal) ))))) ;) })) (expression_statement "uVar1 = FUN_00212540(uVar3);" (assignment_expression "uVar1 = FUN_00212540(uVar3)" identifier = (call_expression "FUN_00212540(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) (expression_statement "uVar2 = FUN_00215d90(param_2,7,uVar1);" (assignment_expression "uVar2 = FUN_00215d90(param_2,7,uVar1)" identifier = (call_expression "FUN_00215d90(param_2,7,uVar1)" identifier (argument_list "(param_2,7,uVar1)" ( identifier , number_literal , identifier )))) ;) (expression_statement "FUN_002662f0(uVar2,*plVar9,uVar1);" (call_expression "FUN_002662f0(uVar2,*plVar9,uVar1)" identifier (argument_list "(uVar2,*plVar9,uVar1)" ( identifier , (pointer_expression "*plVar9" * identifier) , identifier ))) ;) (expression_statement "bVar11 = (long *)param_3[1] < plVar8;" (assignment_expression "bVar11 = (long *)param_3[1] < plVar8" identifier = (binary_expression "(long *)param_3[1] < plVar8" (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) < identifier)) ;) (expression_statement "bVar10 = (long *)param_3[1] == plVar8;" (assignment_expression "bVar10 = (long *)param_3[1] == plVar8" identifier = (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier)) ;) (if_statement "if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }" { (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (expression_statement "lVar5 = 8;" (assignment_expression "lVar5 = 8" identifier = number_literal) ;) (expression_statement "pbVar6 = *(byte **)(lVar4 + 0x28);" (assignment_expression "pbVar6 = *(byte **)(lVar4 + 0x28)" identifier = (pointer_expression "*(byte **)(lVar4 + 0x28)" * (cast_expression "(byte **)(lVar4 + 0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "pbVar7 = (byte *)".interp";" (assignment_expression "pbVar7 = (byte *)".interp"" identifier = (cast_expression "(byte *)".interp"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".interp"" " string_content "))) ;) (do_statement "do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);" do (compound_statement "{\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar6 < *pbVar7;" (assignment_expression "bVar11 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar10 = *pbVar6 == *pbVar7;" (assignment_expression "bVar10 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar6 + (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 "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)) ;) }) while (parenthesized_expression "(bVar10)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar10) != bVar11) break;" if (parenthesized_expression "((!bVar11 && !bVar10) != bVar11)" ( (binary_expression "(!bVar11 && !bVar10) != bVar11" (parenthesized_expression "(!bVar11 && !bVar10)" ( (binary_expression "!bVar11 && !bVar10" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar10" ! identifier)) )) != identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }" else (compound_statement "{\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }" { (expression_statement "uVar3 = *(ulong *)(plVar9[1] + 0x70);" (assignment_expression "uVar3 = *(ulong *)(plVar9[1] + 0x70)" identifier = (pointer_expression "*(ulong *)(plVar9[1] + 0x70)" * (cast_expression "(ulong *)(plVar9[1] + 0x70)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar9[1] + 0x70)" ( (binary_expression "plVar9[1] + 0x70" (subscript_expression "plVar9[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar10 = (uVar3 & 0x400) == 0;" (assignment_expression "bVar10 = (uVar3 & 0x400) == 0" identifier = (binary_expression "(uVar3 & 0x400) == 0" (parenthesized_expression "(uVar3 & 0x400)" ( (binary_expression "uVar3 & 0x400" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }" if (parenthesized_expression "(!bVar10)" ( (unary_expression "!bVar10" ! identifier) )) (compound_statement "{\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }" { (do_statement "do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);" do (compound_statement "{\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            }" { (expression_statement "plVar9 = plVar8;" (assignment_expression "plVar9 = plVar8" identifier = identifier) ;) (expression_statement "uVar1 = FUN_00212540(uVar3);" (assignment_expression "uVar1 = FUN_00212540(uVar3)" identifier = (call_expression "FUN_00212540(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) (expression_statement "FUN_002662f0(uVar2,*plVar9,uVar1);" (call_expression "FUN_002662f0(uVar2,*plVar9,uVar1)" identifier (argument_list "(uVar2,*plVar9,uVar1)" ( identifier , (pointer_expression "*plVar9" * identifier) , identifier ))) ;) (expression_statement "plVar8 = plVar9 + 1;" (assignment_expression "plVar8 = plVar9 + 1" identifier = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) (expression_statement "bVar10 = (long *)param_3[1] < plVar8;" (assignment_expression "bVar10 = (long *)param_3[1] < plVar8" identifier = (binary_expression "(long *)param_3[1] < plVar8" (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) < identifier)) ;) (expression_statement "bVar12 = (long *)param_3[1] == plVar8;" (assignment_expression "bVar12 = (long *)param_3[1] == plVar8" identifier = (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier)) ;) (if_statement "if (bVar12) break;" if (parenthesized_expression "(bVar12)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "uVar3 = *(ulong *)(plVar9[1] + 0x70);" (assignment_expression "uVar3 = *(ulong *)(plVar9[1] + 0x70)" identifier = (pointer_expression "*(ulong *)(plVar9[1] + 0x70)" * (cast_expression "(ulong *)(plVar9[1] + 0x70)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar9[1] + 0x70)" ( (binary_expression "plVar9[1] + 0x70" (subscript_expression "plVar9[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar12 = (uVar3 & 0x400) == 0;" (assignment_expression "bVar12 = (uVar3 & 0x400) == 0" identifier = (binary_expression "(uVar3 & 0x400) == 0" (parenthesized_expression "(uVar3 & 0x400)" ( (binary_expression "uVar3 & 0x400" identifier & number_literal) )) == number_literal)) ;) }) while (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) ;) (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (goto_statement "goto LAB_002c51f5;" goto statement_identifier ;) })) (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (expression_statement "lVar5 = 8;" (assignment_expression "lVar5 = 8" identifier = number_literal) ;) (expression_statement "pbVar6 = *(byte **)(lVar4 + 0x28);" (assignment_expression "pbVar6 = *(byte **)(lVar4 + 0x28)" identifier = (pointer_expression "*(byte **)(lVar4 + 0x28)" * (cast_expression "(byte **)(lVar4 + 0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "pbVar7 = (byte *)".interp";" (assignment_expression "pbVar7 = (byte *)".interp"" identifier = (cast_expression "(byte *)".interp"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".interp"" " string_content "))) ;) (do_statement "do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);" do (compound_statement "{\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar6 < *pbVar7;" (assignment_expression "bVar11 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar10 = *pbVar6 == *pbVar7;" (assignment_expression "bVar10 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar6 + (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 "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)) ;) }) while (parenthesized_expression "(bVar10)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }" if (parenthesized_expression "((!bVar11 && !bVar10) != bVar11)" ( (binary_expression "(!bVar11 && !bVar10) != bVar11" (parenthesized_expression "(!bVar11 && !bVar10)" ( (binary_expression "!bVar11 && !bVar10" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar10" ! identifier)) )) != identifier) )) (compound_statement "{\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }" { (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (expression_statement "lVar4 = plVar9[1];" (assignment_expression "lVar4 = plVar9[1]" identifier = (subscript_expression "plVar9[1]" identifier [ number_literal ])) ;) (expression_statement "plVar9 = plVar8;" (assignment_expression "plVar9 = plVar8" identifier = identifier) ;) (goto_statement "goto LAB_002c51e1;" goto statement_identifier ;) })) }))) (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (labeled_statement "LAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));" statement_identifier : (expression_statement "uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));" (assignment_expression "uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70))" identifier = (call_expression "FUN_00212540(*(undefined8 *)(lVar4 + 0x70))" identifier (argument_list "(*(undefined8 *)(lVar4 + 0x70))" ( (pointer_expression "*(undefined8 *)(lVar4 + 0x70)" * (cast_expression "(undefined8 *)(lVar4 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x70)" ( (binary_expression "lVar4 + 0x70" identifier + number_literal) )))) )))) ;)) (expression_statement "uVar2 = FUN_00215d90(param_2,3,uVar1);" (assignment_expression "uVar2 = FUN_00215d90(param_2,3,uVar1)" identifier = (call_expression "FUN_00215d90(param_2,3,uVar1)" identifier (argument_list "(param_2,3,uVar1)" ( identifier , number_literal , identifier )))) ;) (expression_statement "FUN_002662f0(uVar2,*plVar9,uVar1);" (call_expression "FUN_002662f0(uVar2,*plVar9,uVar1)" identifier (argument_list "(uVar2,*plVar9,uVar1)" ( identifier , (pointer_expression "*plVar9" * identifier) , identifier ))) ;) (if_statement "if ((long *)param_3[1] == plVar8) break;" if (parenthesized_expression "((long *)param_3[1] == plVar8)" ( (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) }))) (expression_statement "uVar3 = *(ulong *)(plVar9[1] + 0x70);" (assignment_expression "uVar3 = *(ulong *)(plVar9[1] + 0x70)" identifier = (pointer_expression "*(ulong *)(plVar9[1] + 0x70)" * (cast_expression "(ulong *)(plVar9[1] + 0x70)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar9[1] + 0x70)" ( (binary_expression "plVar9[1] + 0x70" (subscript_expression "plVar9[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "lVar4 = plVar9[1];" (assignment_expression "lVar4 = plVar9[1]" identifier = (subscript_expression "plVar9[1]" identifier [ number_literal ])) ;) (expression_statement "plVar9 = plVar8;" (assignment_expression "plVar9 = plVar8" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "param_1[0x3b] = '\x01';" (assignment_expression "param_1[0x3b] = '\x01'" (subscript_expression "param_1[0x3b]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) && (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 ") ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (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 IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (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) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * 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 = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (break_statement break ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (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) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * 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 = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (break_statement break ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ;) }) while (parenthesized_expression ( (unary_expression ! IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (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) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * 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 = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (break_statement break ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;)) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (return_statement return ;) })))
(function_definition "void FUN_002c5170(char *param_1,undefined8 param_2,ulong *param_3)\n\n{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  long lVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  long *plVar8;\n  long *plVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  \n  bVar13 = 0;\n  if ((*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0)) {\n                    \n    FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  plVar9 = (long *)*param_3;\n  if (plVar9 != (long *)param_3[1]) {\n    bVar11 = false;\n    uVar3 = *(ulong *)(*plVar9 + 0x70);\n    lVar4 = *plVar9;\nLAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );\n  }\n  param_1[0x3b] = '\x01';\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002c5170(char *param_1,undefined8 param_2,ulong *param_3)" (identifier "FUN_002c5170") (parameter_list "(char *param_1,undefined8 param_2,ulong *param_3)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "ulong *param_3" (type_identifier "ulong") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  long lVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  long *plVar8;\n  long *plVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  \n  bVar13 = 0;\n  if ((*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0)) {\n                    \n    FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  plVar9 = (long *)*param_3;\n  if (plVar9 != (long *)param_3[1]) {\n    bVar11 = false;\n    uVar3 = *(ulong *)(*plVar9 + 0x70);\n    lVar4 = *plVar9;\nLAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );\n  }\n  param_1[0x3b] = '\x01';\n  return;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "long *plVar8;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar8" (* "*") (identifier "plVar8")) (; ";")) (declaration "long *plVar9;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar9" (* "*") (identifier "plVar9")) (; ";")) (declaration "bool bVar10;" (primitive_type "bool") (identifier "bVar10") (; ";")) (declaration "bool bVar11;" (primitive_type "bool") (identifier "bVar11") (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (declaration "byte bVar13;" (type_identifier "byte") (identifier "bVar13") (; ";")) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" (identifier "bVar13") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0)) {\n                    \n    FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }" (if "if") (parenthesized_expression "((*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0))" (( "(") (binary_expression "(*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0)" (parenthesized_expression "(*param_1 != '\0')" (( "(") (binary_expression "*param_1 != '\0'" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(long *)(param_1 + 0x20) != 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x20) != 0" (pointer_expression "*(long *)(param_1 + 0x20)" (* "*") (cast_expression "(long *)(param_1 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }" ({ "{") (expression_statement "FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");" (call_expression "FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments")" (identifier "FUN_001e9890") (argument_list "("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments")" (( "(") (string_literal ""../../gold/script-sections.cc"" (" """) (string_content "../../gold/script-sections.cc") (" """)) (, ",") (number_literal "0x102a") (, ",") (string_literal ""create_note_and_tls_segments"" (" """) (string_content "create_note_and_tls_segments") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "plVar9 = (long *)*param_3;" (assignment_expression "plVar9 = (long *)*param_3" (identifier "plVar9") (= "=") (cast_expression "(long *)*param_3" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3")))) (; ";")) (if_statement "if (plVar9 != (long *)param_3[1]) {\n    bVar11 = false;\n    uVar3 = *(ulong *)(*plVar9 + 0x70);\n    lVar4 = *plVar9;\nLAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );\n  }" (if "if") (parenthesized_expression "(plVar9 != (long *)param_3[1])" (( "(") (binary_expression "plVar9 != (long *)param_3[1]" (identifier "plVar9") (!= "!=") (cast_expression "(long *)param_3[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n    bVar11 = false;\n    uVar3 = *(ulong *)(*plVar9 + 0x70);\n    lVar4 = *plVar9;\nLAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );\n  }" ({ "{") (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (; ";")) (expression_statement "uVar3 = *(ulong *)(*plVar9 + 0x70);" (assignment_expression "uVar3 = *(ulong *)(*plVar9 + 0x70)" (identifier "uVar3") (= "=") (pointer_expression "*(ulong *)(*plVar9 + 0x70)" (* "*") (cast_expression "(ulong *)(*plVar9 + 0x70)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*plVar9 + 0x70)" (( "(") (binary_expression "*plVar9 + 0x70" (pointer_expression "*plVar9" (* "*") (identifier "plVar9")) (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" (identifier "lVar4") (= "=") (pointer_expression "*plVar9" (* "*") (identifier "plVar9"))) (; ";")) (labeled_statement "LAB_002c51e1:\n    do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );" (statement_identifier "LAB_002c51e1") (: ":") (do_statement "do {\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    } while( true );" (do "do") (compound_statement "{\n      plVar8 = plVar9 + 1;\n      if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar3 & 0x400) == 0;\n      if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      uVar3 = *(ulong *)(plVar9[1] + 0x70);\n      lVar4 = plVar9[1];\n      plVar9 = plVar8;\n    }" ({ "{") (expression_statement "plVar8 = plVar9 + 1;" (assignment_expression "plVar8 = plVar9 + 1" (identifier "plVar8") (= "=") (binary_expression "plVar9 + 1" (identifier "plVar9") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(int *)(lVar4 + 0x6c) == 7) {\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }" (if "if") (parenthesized_expression "(*(int *)(lVar4 + 0x6c) == 7)" (( "(") (binary_expression "*(int *)(lVar4 + 0x6c) == 7" (pointer_expression "*(int *)(lVar4 + 0x6c)" (* "*") (cast_expression "(int *)(lVar4 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x6c)" (( "(") (binary_expression "lVar4 + 0x6c" (identifier "lVar4") (+ "+") (number_literal "0x6c")) () ")")))) (== "==") (number_literal "7")) () ")")) (compound_statement "{\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,4,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n      }" ({ "{") (expression_statement "uVar1 = FUN_00212540(uVar3);" (assignment_expression "uVar1 = FUN_00212540(uVar3)" (identifier "uVar1") (= "=") (call_expression "FUN_00212540(uVar3)" (identifier "FUN_00212540") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "uVar2 = FUN_00215d90(param_2,4,uVar1);" (assignment_expression "uVar2 = FUN_00215d90(param_2,4,uVar1)" (identifier "uVar2") (= "=") (call_expression "FUN_00215d90(param_2,4,uVar1)" (identifier "FUN_00215d90") (argument_list "(param_2,4,uVar1)" (( "(") (identifier "param_2") (, ",") (number_literal "4") (, ",") (identifier "uVar1") () ")")))) (; ";")) (expression_statement "FUN_002662f0(uVar2,*plVar9,uVar1);" (call_expression "FUN_002662f0(uVar2,*plVar9,uVar1)" (identifier "FUN_002662f0") (argument_list "(uVar2,*plVar9,uVar1)" (( "(") (identifier "uVar2") (, ",") (pointer_expression "*plVar9" (* "*") (identifier "plVar9")) (, ",") (identifier "uVar1") () ")"))) (; ";")) (if_statement "if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }\n        else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }" (if "if") (parenthesized_expression "(((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7))" (( "(") (binary_expression "((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)" (parenthesized_expression "((long *)param_3[1] == plVar8)" (( "(") (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "plVar8")) () ")")) (|| "||") (parenthesized_expression "(lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)" (( "(") (comma_expression "lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7" (assignment_expression "lVar4 = plVar9[1]" (identifier "lVar4") (= "=") (subscript_expression "plVar9[1]" (identifier "plVar9") ([ "[") (number_literal "1") (] "]"))) (, ",") (binary_expression "*(int *)(lVar4 + 0x6c) != 7" (pointer_expression "*(int *)(lVar4 + 0x6c)" (* "*") (cast_expression "(int *)(lVar4 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x6c)" (( "(") (binary_expression "lVar4 + 0x6c" (identifier "lVar4") (+ "+") (number_literal "0x6c")) () ")")))) (!= "!=") (number_literal "7"))) () ")"))) () ")")) (compound_statement "{\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }" ({ "{") (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" (identifier "lVar4") (= "=") (pointer_expression "*plVar9" (* "*") (identifier "plVar9"))) (; ";")) (expression_statement "uVar3 = *(ulong *)(lVar4 + 0x70);" (assignment_expression "uVar3 = *(ulong *)(lVar4 + 0x70)" (identifier "uVar3") (= "=") (pointer_expression "*(ulong *)(lVar4 + 0x70)" (* "*") (cast_expression "(ulong *)(lVar4 + 0x70)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x70)" (( "(") (binary_expression "lVar4 + 0x70" (identifier "lVar4") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }" (else "else") (compound_statement "{\n          do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);\n          lVar4 = *plVar9;\n          uVar3 = *(ulong *)(lVar4 + 0x70);\n        }" ({ "{") (do_statement "do {\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          } while (*(int *)(lVar4 + 0x6c) == 7);" (do "do") (compound_statement "{\n            plVar9 = plVar8;\n            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n            FUN_002662f0(uVar2,*plVar9,uVar1);\n            plVar8 = plVar9 + 1;\n            if ((long *)param_3[1] == plVar8) break;\n            lVar4 = plVar9[1];\n          }" ({ "{") (expression_statement "plVar9 = plVar8;" (assignment_expression "plVar9 = plVar8" (identifier "plVar9") (= "=") (identifier "plVar8")) (; ";")) (expression_statement "uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));" (assignment_expression "uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70))" (identifier "uVar1") (= "=") (call_expression "FUN_00212540(*(undefined8 *)(lVar4 + 0x70))" (identifier "FUN_00212540") (argument_list "(*(undefined8 *)(lVar4 + 0x70))" (( "(") (pointer_expression "*(undefined8 *)(lVar4 + 0x70)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x70)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x70)" (( "(") (binary_expression "lVar4 + 0x70" (identifier "lVar4") (+ "+") (number_literal "0x70")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_002662f0(uVar2,*plVar9,uVar1);" (call_expression "FUN_002662f0(uVar2,*plVar9,uVar1)" (identifier "FUN_002662f0") (argument_list "(uVar2,*plVar9,uVar1)" (( "(") (identifier "uVar2") (, ",") (pointer_expression "*plVar9" (* "*") (identifier "plVar9")) (, ",") (identifier "uVar1") () ")"))) (; ";")) (expression_statement "plVar8 = plVar9 + 1;" (assignment_expression "plVar8 = plVar9 + 1" (identifier "plVar8") (= "=") (binary_expression "plVar9 + 1" (identifier "plVar9") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((long *)param_3[1] == plVar8) break;" (if "if") (parenthesized_expression "((long *)param_3[1] == plVar8)" (( "(") (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "plVar8")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar4 = plVar9[1];" (assignment_expression "lVar4 = plVar9[1]" (identifier "lVar4") (= "=") (subscript_expression "plVar9[1]" (identifier "plVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(int *)(lVar4 + 0x6c) == 7)" (( "(") (binary_expression "*(int *)(lVar4 + 0x6c) == 7" (pointer_expression "*(int *)(lVar4 + 0x6c)" (* "*") (cast_expression "(int *)(lVar4 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x6c)" (( "(") (binary_expression "lVar4 + 0x6c" (identifier "lVar4") (+ "+") (number_literal "0x6c")) () ")")))) (== "==") (number_literal "7")) () ")")) (; ";")) (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" (identifier "lVar4") (= "=") (pointer_expression "*plVar9" (* "*") (identifier "plVar9"))) (; ";")) (expression_statement "uVar3 = *(ulong *)(lVar4 + 0x70);" (assignment_expression "uVar3 = *(ulong *)(lVar4 + 0x70)" (identifier "uVar3") (= "=") (pointer_expression "*(ulong *)(lVar4 + 0x70)" (* "*") (cast_expression "(ulong *)(lVar4 + 0x70)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x70)" (( "(") (binary_expression "lVar4 + 0x70" (identifier "lVar4") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" (identifier "bVar10") (= "=") (false "false")) (; ";")) (expression_statement "bVar12 = (uVar3 & 0x400) == 0;" (assignment_expression "bVar12 = (uVar3 & 0x400) == 0" (identifier "bVar12") (= "=") (binary_expression "(uVar3 & 0x400) == 0" (parenthesized_expression "(uVar3 & 0x400)" (( "(") (binary_expression "uVar3 & 0x400" (identifier "uVar3") (& "&") (number_literal "0x400")) () ")")) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar12) {\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }" (if "if") (parenthesized_expression "(bVar12)" (( "(") (identifier "bVar12") () ")")) (compound_statement "{\nLAB_002c51f5:\n        lVar5 = 8;\n        pbVar6 = *(byte **)(lVar4 + 0x28);\n        pbVar7 = (byte *)".interp";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;\n        if ((long *)param_3[1] == plVar8) break;\n      }" ({ "{") (labeled_statement "LAB_002c51f5:\n        lVar5 = 8;" (statement_identifier "LAB_002c51f5") (: ":") (expression_statement "lVar5 = 8;" (assignment_expression "lVar5 = 8" (identifier "lVar5") (= "=") (number_literal "8")) (; ";"))) (expression_statement "pbVar6 = *(byte **)(lVar4 + 0x28);" (assignment_expression "pbVar6 = *(byte **)(lVar4 + 0x28)" (identifier "pbVar6") (= "=") (pointer_expression "*(byte **)(lVar4 + 0x28)" (* "*") (cast_expression "(byte **)(lVar4 + 0x28)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x28)" (( "(") (binary_expression "lVar4 + 0x28" (identifier "lVar4") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "pbVar7 = (byte *)".interp";" (assignment_expression "pbVar7 = (byte *)".interp"" (identifier "pbVar7") (= "=") (cast_expression "(byte *)".interp"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".interp"" (" """) (string_content ".interp") (" """)))) (; ";")) (do_statement "do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        } while (bVar12);" (do "do") (compound_statement "{\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar10 = *pbVar6 < *pbVar7;\n          bVar12 = *pbVar6 == *pbVar7;\n          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n        }" ({ "{") (if_statement "if (lVar5 == 0) break;" (if "if") (parenthesized_expression "(lVar5 == 0)" (( "(") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" (identifier "lVar5") (= "=") (binary_expression "lVar5 + -1" (identifier "lVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar10 = *pbVar6 < *pbVar7;" (assignment_expression "bVar10 = *pbVar6 < *pbVar7" (identifier "bVar10") (= "=") (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "bVar12 = *pbVar6 == *pbVar7;" (assignment_expression "bVar12 = *pbVar6 == *pbVar7" (identifier "bVar12") (= "=") (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (== "==") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar13 * -2" (identifier "pbVar6") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar13 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar12)" (( "(") (identifier "bVar12") () ")")) (; ";")) (if_statement "if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;" (if "if") (parenthesized_expression "((!bVar10 && !bVar12) == bVar10)" (( "(") (binary_expression "(!bVar10 && !bVar12) == bVar10" (parenthesized_expression "(!bVar10 && !bVar12)" (( "(") (binary_expression "!bVar10 && !bVar12" (unary_expression "!bVar10" (! "!") (identifier "bVar10")) (&& "&&") (unary_expression "!bVar12" (! "!") (identifier "bVar12"))) () ")")) (== "==") (identifier "bVar10")) () ")")) (goto_statement "goto LAB_002c520c;" (goto "goto") (statement_identifier "LAB_002c520c") (; ";"))) (if_statement "if ((long *)param_3[1] == plVar8) break;" (if "if") (parenthesized_expression "((long *)param_3[1] == plVar8)" (( "(") (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "plVar8")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (else_clause "else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }" (else "else") (compound_statement "{\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }\n        uVar1 = FUN_00212540(uVar3);\n        uVar2 = FUN_00215d90(param_2,7,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        bVar11 = (long *)param_3[1] < plVar8;\n        bVar10 = (long *)param_3[1] == plVar8;\n        if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }\n        bVar11 = true;\nLAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));\n        uVar2 = FUN_00215d90(param_2,3,uVar1);\n        FUN_002662f0(uVar2,*plVar9,uVar1);\n        if ((long *)param_3[1] == plVar8) break;\n      }" ({ "{") (if_statement "if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }" (if "if") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (compound_statement "{\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_001e14f0(uVar2);\n          uVar3 = *(ulong *)(*plVar9 + 0x70);\n        }" ({ "{") (expression_statement "uVar2 = gettext("TLS sections are not adjacent");" (assignment_expression "uVar2 = gettext("TLS sections are not adjacent")" (identifier "uVar2") (= "=") (call_expression "gettext("TLS sections are not adjacent")" (identifier "gettext") (argument_list "("TLS sections are not adjacent")" (( "(") (string_literal ""TLS sections are not adjacent"" (" """) (string_content "TLS sections are not adjacent") (" """)) () ")")))) (; ";")) (expression_statement "FUN_001e14f0(uVar2);" (call_expression "FUN_001e14f0(uVar2)" (identifier "FUN_001e14f0") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "uVar3 = *(ulong *)(*plVar9 + 0x70);" (assignment_expression "uVar3 = *(ulong *)(*plVar9 + 0x70)" (identifier "uVar3") (= "=") (pointer_expression "*(ulong *)(*plVar9 + 0x70)" (* "*") (cast_expression "(ulong *)(*plVar9 + 0x70)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*plVar9 + 0x70)" (( "(") (binary_expression "*plVar9 + 0x70" (pointer_expression "*plVar9" (* "*") (identifier "plVar9")) (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar1 = FUN_00212540(uVar3);" (assignment_expression "uVar1 = FUN_00212540(uVar3)" (identifier "uVar1") (= "=") (call_expression "FUN_00212540(uVar3)" (identifier "FUN_00212540") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "uVar2 = FUN_00215d90(param_2,7,uVar1);" (assignment_expression "uVar2 = FUN_00215d90(param_2,7,uVar1)" (identifier "uVar2") (= "=") (call_expression "FUN_00215d90(param_2,7,uVar1)" (identifier "FUN_00215d90") (argument_list "(param_2,7,uVar1)" (( "(") (identifier "param_2") (, ",") (number_literal "7") (, ",") (identifier "uVar1") () ")")))) (; ";")) (expression_statement "FUN_002662f0(uVar2,*plVar9,uVar1);" (call_expression "FUN_002662f0(uVar2,*plVar9,uVar1)" (identifier "FUN_002662f0") (argument_list "(uVar2,*plVar9,uVar1)" (( "(") (identifier "uVar2") (, ",") (pointer_expression "*plVar9" (* "*") (identifier "plVar9")) (, ",") (identifier "uVar1") () ")"))) (; ";")) (expression_statement "bVar11 = (long *)param_3[1] < plVar8;" (assignment_expression "bVar11 = (long *)param_3[1] < plVar8" (identifier "bVar11") (= "=") (binary_expression "(long *)param_3[1] < plVar8" (cast_expression "(long *)param_3[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (< "<") (identifier "plVar8"))) (; ";")) (expression_statement "bVar10 = (long *)param_3[1] == plVar8;" (assignment_expression "bVar10 = (long *)param_3[1] == plVar8" (identifier "bVar10") (= "=") (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "plVar8"))) (; ";")) (if_statement "if (bVar10) {\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }" (if "if") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (compound_statement "{\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }" ({ "{") (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" (identifier "lVar4") (= "=") (pointer_expression "*plVar9" (* "*") (identifier "plVar9"))) (; ";")) (expression_statement "lVar5 = 8;" (assignment_expression "lVar5 = 8" (identifier "lVar5") (= "=") (number_literal "8")) (; ";")) (expression_statement "pbVar6 = *(byte **)(lVar4 + 0x28);" (assignment_expression "pbVar6 = *(byte **)(lVar4 + 0x28)" (identifier "pbVar6") (= "=") (pointer_expression "*(byte **)(lVar4 + 0x28)" (* "*") (cast_expression "(byte **)(lVar4 + 0x28)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x28)" (( "(") (binary_expression "lVar4 + 0x28" (identifier "lVar4") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "pbVar7 = (byte *)".interp";" (assignment_expression "pbVar7 = (byte *)".interp"" (identifier "pbVar7") (= "=") (cast_expression "(byte *)".interp"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".interp"" (" """) (string_content ".interp") (" """)))) (; ";")) (do_statement "do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);" (do "do") (compound_statement "{\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          }" ({ "{") (if_statement "if (lVar5 == 0) break;" (if "if") (parenthesized_expression "(lVar5 == 0)" (( "(") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" (identifier "lVar5") (= "=") (binary_expression "lVar5 + -1" (identifier "lVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar11 = *pbVar6 < *pbVar7;" (assignment_expression "bVar11 = *pbVar6 < *pbVar7" (identifier "bVar11") (= "=") (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "bVar10 = *pbVar6 == *pbVar7;" (assignment_expression "bVar10 = *pbVar6 == *pbVar7" (identifier "bVar10") (= "=") (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (== "==") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar13 * -2" (identifier "pbVar6") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar13 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (; ";")) (if_statement "if ((!bVar11 && !bVar10) != bVar11) break;" (if "if") (parenthesized_expression "((!bVar11 && !bVar10) != bVar11)" (( "(") (binary_expression "(!bVar11 && !bVar10) != bVar11" (parenthesized_expression "(!bVar11 && !bVar10)" (( "(") (binary_expression "!bVar11 && !bVar10" (unary_expression "!bVar11" (! "!") (identifier "bVar11")) (&& "&&") (unary_expression "!bVar10" (! "!") (identifier "bVar10"))) () ")")) (!= "!=") (identifier "bVar11")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (else_clause "else {\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }" (else "else") (compound_statement "{\n          uVar3 = *(ulong *)(plVar9[1] + 0x70);\n          bVar11 = false;\n          bVar10 = (uVar3 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }\n          lVar4 = *plVar9;\n          lVar5 = 8;\n          pbVar6 = *(byte **)(lVar4 + 0x28);\n          pbVar7 = (byte *)".interp";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }\n        }" ({ "{") (expression_statement "uVar3 = *(ulong *)(plVar9[1] + 0x70);" (assignment_expression "uVar3 = *(ulong *)(plVar9[1] + 0x70)" (identifier "uVar3") (= "=") (pointer_expression "*(ulong *)(plVar9[1] + 0x70)" (* "*") (cast_expression "(ulong *)(plVar9[1] + 0x70)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar9[1] + 0x70)" (( "(") (binary_expression "plVar9[1] + 0x70" (subscript_expression "plVar9[1]" (identifier "plVar9") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (; ";")) (expression_statement "bVar10 = (uVar3 & 0x400) == 0;" (assignment_expression "bVar10 = (uVar3 & 0x400) == 0" (identifier "bVar10") (= "=") (binary_expression "(uVar3 & 0x400) == 0" (parenthesized_expression "(uVar3 & 0x400)" (( "(") (binary_expression "uVar3 & 0x400" (identifier "uVar3") (& "&") (number_literal "0x400")) () ")")) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (!bVar10) {\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }" (if "if") (parenthesized_expression "(!bVar10)" (( "(") (unary_expression "!bVar10" (! "!") (identifier "bVar10")) () ")")) (compound_statement "{\n            do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);\n            lVar4 = *plVar9;\n            bVar11 = true;\n            goto LAB_002c51f5;\n          }" ({ "{") (do_statement "do {\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            } while (!bVar12);" (do "do") (compound_statement "{\n              plVar9 = plVar8;\n              uVar1 = FUN_00212540(uVar3);\n              FUN_002662f0(uVar2,*plVar9,uVar1);\n              plVar8 = plVar9 + 1;\n              bVar10 = (long *)param_3[1] < plVar8;\n              bVar12 = (long *)param_3[1] == plVar8;\n              if (bVar12) break;\n              uVar3 = *(ulong *)(plVar9[1] + 0x70);\n              bVar10 = false;\n              bVar12 = (uVar3 & 0x400) == 0;\n            }" ({ "{") (expression_statement "plVar9 = plVar8;" (assignment_expression "plVar9 = plVar8" (identifier "plVar9") (= "=") (identifier "plVar8")) (; ";")) (expression_statement "uVar1 = FUN_00212540(uVar3);" (assignment_expression "uVar1 = FUN_00212540(uVar3)" (identifier "uVar1") (= "=") (call_expression "FUN_00212540(uVar3)" (identifier "FUN_00212540") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "FUN_002662f0(uVar2,*plVar9,uVar1);" (call_expression "FUN_002662f0(uVar2,*plVar9,uVar1)" (identifier "FUN_002662f0") (argument_list "(uVar2,*plVar9,uVar1)" (( "(") (identifier "uVar2") (, ",") (pointer_expression "*plVar9" (* "*") (identifier "plVar9")) (, ",") (identifier "uVar1") () ")"))) (; ";")) (expression_statement "plVar8 = plVar9 + 1;" (assignment_expression "plVar8 = plVar9 + 1" (identifier "plVar8") (= "=") (binary_expression "plVar9 + 1" (identifier "plVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar10 = (long *)param_3[1] < plVar8;" (assignment_expression "bVar10 = (long *)param_3[1] < plVar8" (identifier "bVar10") (= "=") (binary_expression "(long *)param_3[1] < plVar8" (cast_expression "(long *)param_3[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (< "<") (identifier "plVar8"))) (; ";")) (expression_statement "bVar12 = (long *)param_3[1] == plVar8;" (assignment_expression "bVar12 = (long *)param_3[1] == plVar8" (identifier "bVar12") (= "=") (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "plVar8"))) (; ";")) (if_statement "if (bVar12) break;" (if "if") (parenthesized_expression "(bVar12)" (( "(") (identifier "bVar12") () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar3 = *(ulong *)(plVar9[1] + 0x70);" (assignment_expression "uVar3 = *(ulong *)(plVar9[1] + 0x70)" (identifier "uVar3") (= "=") (pointer_expression "*(ulong *)(plVar9[1] + 0x70)" (* "*") (cast_expression "(ulong *)(plVar9[1] + 0x70)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar9[1] + 0x70)" (( "(") (binary_expression "plVar9[1] + 0x70" (subscript_expression "plVar9[1]" (identifier "plVar9") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" (identifier "bVar10") (= "=") (false "false")) (; ";")) (expression_statement "bVar12 = (uVar3 & 0x400) == 0;" (assignment_expression "bVar12 = (uVar3 & 0x400) == 0" (identifier "bVar12") (= "=") (binary_expression "(uVar3 & 0x400) == 0" (parenthesized_expression "(uVar3 & 0x400)" (( "(") (binary_expression "uVar3 & 0x400" (identifier "uVar3") (& "&") (number_literal "0x400")) () ")")) (== "==") (number_literal "0"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(!bVar12)" (( "(") (unary_expression "!bVar12" (! "!") (identifier "bVar12")) () ")")) (; ";")) (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" (identifier "lVar4") (= "=") (pointer_expression "*plVar9" (* "*") (identifier "plVar9"))) (; ";")) (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" (identifier "bVar11") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_002c51f5;" (goto "goto") (statement_identifier "LAB_002c51f5") (; ";")) (} "}"))) (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" (identifier "lVar4") (= "=") (pointer_expression "*plVar9" (* "*") (identifier "plVar9"))) (; ";")) (expression_statement "lVar5 = 8;" (assignment_expression "lVar5 = 8" (identifier "lVar5") (= "=") (number_literal "8")) (; ";")) (expression_statement "pbVar6 = *(byte **)(lVar4 + 0x28);" (assignment_expression "pbVar6 = *(byte **)(lVar4 + 0x28)" (identifier "pbVar6") (= "=") (pointer_expression "*(byte **)(lVar4 + 0x28)" (* "*") (cast_expression "(byte **)(lVar4 + 0x28)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x28)" (( "(") (binary_expression "lVar4 + 0x28" (identifier "lVar4") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "pbVar7 = (byte *)".interp";" (assignment_expression "pbVar7 = (byte *)".interp"" (identifier "pbVar7") (= "=") (cast_expression "(byte *)".interp"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".interp"" (" """) (string_content ".interp") (" """)))) (; ";")) (do_statement "do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          } while (bVar10);" (do "do") (compound_statement "{\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar11 = *pbVar6 < *pbVar7;\n            bVar10 = *pbVar6 == *pbVar7;\n            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n          }" ({ "{") (if_statement "if (lVar5 == 0) break;" (if "if") (parenthesized_expression "(lVar5 == 0)" (( "(") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" (identifier "lVar5") (= "=") (binary_expression "lVar5 + -1" (identifier "lVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar11 = *pbVar6 < *pbVar7;" (assignment_expression "bVar11 = *pbVar6 < *pbVar7" (identifier "bVar11") (= "=") (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "bVar10 = *pbVar6 == *pbVar7;" (assignment_expression "bVar10 = *pbVar6 == *pbVar7" (identifier "bVar10") (= "=") (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (== "==") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar13 * -2" (identifier "pbVar6") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar13 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (; ";")) (if_statement "if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }" (if "if") (parenthesized_expression "((!bVar11 && !bVar10) != bVar11)" (( "(") (binary_expression "(!bVar11 && !bVar10) != bVar11" (parenthesized_expression "(!bVar11 && !bVar10)" (( "(") (binary_expression "!bVar11 && !bVar10" (unary_expression "!bVar11" (! "!") (identifier "bVar11")) (&& "&&") (unary_expression "!bVar10" (! "!") (identifier "bVar10"))) () ")")) (!= "!=") (identifier "bVar11")) () ")")) (compound_statement "{\n            bVar11 = true;\n            lVar4 = plVar9[1];\n            plVar9 = plVar8;\n            goto LAB_002c51e1;\n          }" ({ "{") (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" (identifier "bVar11") (= "=") (true "true")) (; ";")) (expression_statement "lVar4 = plVar9[1];" (assignment_expression "lVar4 = plVar9[1]" (identifier "lVar4") (= "=") (subscript_expression "plVar9[1]" (identifier "plVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "plVar9 = plVar8;" (assignment_expression "plVar9 = plVar8" (identifier "plVar9") (= "=") (identifier "plVar8")) (; ";")) (goto_statement "goto LAB_002c51e1;" (goto "goto") (statement_identifier "LAB_002c51e1") (; ";")) (} "}"))) (} "}")))) (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" (identifier "bVar11") (= "=") (true "true")) (; ";")) (labeled_statement "LAB_002c520c:\n        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));" (statement_identifier "LAB_002c520c") (: ":") (expression_statement "uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));" (assignment_expression "uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70))" (identifier "uVar1") (= "=") (call_expression "FUN_00212540(*(undefined8 *)(lVar4 + 0x70))" (identifier "FUN_00212540") (argument_list "(*(undefined8 *)(lVar4 + 0x70))" (( "(") (pointer_expression "*(undefined8 *)(lVar4 + 0x70)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x70)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x70)" (( "(") (binary_expression "lVar4 + 0x70" (identifier "lVar4") (+ "+") (number_literal "0x70")) () ")")))) () ")")))) (; ";"))) (expression_statement "uVar2 = FUN_00215d90(param_2,3,uVar1);" (assignment_expression "uVar2 = FUN_00215d90(param_2,3,uVar1)" (identifier "uVar2") (= "=") (call_expression "FUN_00215d90(param_2,3,uVar1)" (identifier "FUN_00215d90") (argument_list "(param_2,3,uVar1)" (( "(") (identifier "param_2") (, ",") (number_literal "3") (, ",") (identifier "uVar1") () ")")))) (; ";")) (expression_statement "FUN_002662f0(uVar2,*plVar9,uVar1);" (call_expression "FUN_002662f0(uVar2,*plVar9,uVar1)" (identifier "FUN_002662f0") (argument_list "(uVar2,*plVar9,uVar1)" (( "(") (identifier "uVar2") (, ",") (pointer_expression "*plVar9" (* "*") (identifier "plVar9")) (, ",") (identifier "uVar1") () ")"))) (; ";")) (if_statement "if ((long *)param_3[1] == plVar8) break;" (if "if") (parenthesized_expression "((long *)param_3[1] == plVar8)" (( "(") (binary_expression "(long *)param_3[1] == plVar8" (cast_expression "(long *)param_3[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "plVar8")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")))) (expression_statement "uVar3 = *(ulong *)(plVar9[1] + 0x70);" (assignment_expression "uVar3 = *(ulong *)(plVar9[1] + 0x70)" (identifier "uVar3") (= "=") (pointer_expression "*(ulong *)(plVar9[1] + 0x70)" (* "*") (cast_expression "(ulong *)(plVar9[1] + 0x70)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar9[1] + 0x70)" (( "(") (binary_expression "plVar9[1] + 0x70" (subscript_expression "plVar9[1]" (identifier "plVar9") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "lVar4 = plVar9[1];" (assignment_expression "lVar4 = plVar9[1]" (identifier "lVar4") (= "=") (subscript_expression "plVar9[1]" (identifier "plVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "plVar9 = plVar8;" (assignment_expression "plVar9 = plVar8" (identifier "plVar9") (= "=") (identifier "plVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}"))) (expression_statement "param_1[0x3b] = '\x01';" (assignment_expression "param_1[0x3b] = '\x01'" (subscript_expression "param_1[0x3b]" (identifier "param_1") ([ "[") (number_literal "0x3b") (] "]")) (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void create_note_and_tls_segments(Script_sections * this, Layout *
   layout, Section_list * sections) */

void __thiscall
var_5::type_1::function_1
          (type_1 *this,type_2 *layout,type_3 *sections)

{
  type_4 var_18;
  type_5 EVar2;
  type_6 *pOVar3;
  type_7 var_11;
  char *format;
  type_8 *pOVar4;
  long var_12;
  type_9 *var_13;
  type_9 *var_14;
  type_4 var_10;
  type_4 var_4;
  bool var_15;
  bool var_19;
  bool bVar12;
  type_9 bVar13;
  
  bVar13 = 0;
  if ((this->saw_sections_clause_ != false) && (this->phdrs_elements_ != (type_10 *)0x0)) {
                    /* WARNING: Subroutine does not return */
    var_1("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");
  }
  var_4 = (sections->
            super__Vector_base<var_5::type_8*var_3,var_6::allocator<var_5::type_8*>var_2>var_3).
            _M_impl._M_start;
  if (var_4 !=
      (sections->super__Vector_base<var_5::type_8*,var_6::allocator<var_5::type_8*>var_2>var_3).
      _M_impl._M_finish) {
    var_19 = false;
    var_11 = (*var_4)->flags_;
    pOVar4 = *var_4;
LAB_002c51e1:
    do {
      var_10 = var_4 + 1;
      if (pOVar4->type_ == 7) {
        EVar2 = type_2::var_7(var_11);
        pOVar3 = type_2::var_8(layout,4,EVar2);
        Output_segment::var_9(pOVar3,*var_4,EVar2);
        if (((sections->
             super__Vector_base<var_5::type_8*,var_6::allocator<var_5::type_8*>var_2>var_3).
             _M_impl._M_finish == var_10) || (pOVar4 = var_4[1], pOVar4->type_ != 7)) {
          pOVar4 = *var_4;
          var_11 = pOVar4->flags_;
        }
        else {
          do {
            var_4 = var_10;
            EVar2 = type_2::var_7(pOVar4->flags_);
            Output_segment::var_9(pOVar3,*var_4,EVar2);
            var_10 = var_4 + 1;
            if ((sections->
                super__Vector_base<var_5::type_8*,var_6::allocator<var_5::type_8*>var_2>var_3).
                _M_impl._M_finish == var_10) break;
            pOVar4 = var_4[1];
          } while (pOVar4->type_ == 7);
          pOVar4 = *var_4;
          var_11 = pOVar4->flags_;
        }
      }
      var_15 = false;
      bVar12 = (var_11 & 0x400) == 0;
      if (bVar12) {
LAB_002c51f5:
        var_12 = 8;
        var_13 = (type_9 *)pOVar4->name_;
        var_14 = (type_9 *)".interp";
        do {
          if (var_12 == 0) break;
          var_12 = var_12 + -1;
          var_15 = *var_13 < *var_14;
          bVar12 = *var_13 == *var_14;
          var_13 = var_13 + (type_7)bVar13 * -2 + 1;
          var_14 = var_14 + (type_7)bVar13 * -2 + 1;
        } while (bVar12);
        if ((!var_15 && !bVar12) == var_15) goto LAB_002c520c;
        if ((sections->
            super__Vector_base<var_5::type_8*,var_6::allocator<var_5::type_8*>var_2>var_3).
            _M_impl._M_finish == var_10) break;
      }
      else {
        if (var_19) {
          format = (char *)var_16("TLS sections are not adjacent");
          var_17(format);
          var_11 = (*var_4)->flags_;
        }
        EVar2 = type_2::var_7(var_11);
        pOVar3 = type_2::var_8(layout,7,EVar2);
        Output_segment::var_9(pOVar3,*var_4,EVar2);
        var_18 = (sections->
                  super__Vector_base<var_5::type_8*var_3,var_6::allocator<var_5::type_8*>var_2>var_3)
                  ._M_impl._M_finish;
        var_19 = var_18 < var_10;
        var_15 = var_18 == var_10;
        if (var_15) {
          pOVar4 = *var_4;
          var_12 = 8;
          var_13 = (type_9 *)pOVar4->name_;
          var_14 = (type_9 *)".interp";
          do {
            if (var_12 == 0) break;
            var_12 = var_12 + -1;
            var_19 = *var_13 < *var_14;
            var_15 = *var_13 == *var_14;
            var_13 = var_13 + (type_7)bVar13 * -2 + 1;
            var_14 = var_14 + (type_7)bVar13 * -2 + 1;
          } while (var_15);
          if ((!var_19 && !var_15) != var_19) break;
        }
        else {
          var_11 = var_4[1]->flags_;
          var_19 = false;
          var_15 = (var_11 & 0x400) == 0;
          if (!var_15) {
            do {
              var_4 = var_10;
              EVar2 = type_2::var_7(var_11);
              Output_segment::var_9(pOVar3,*var_4,EVar2);
              var_10 = var_4 + 1;
              var_18 = (sections->
                        super__Vector_base<var_5::type_8*var_3,var_6::allocator<var_5::type_8*>var_2>var_3
                        )._M_impl._M_finish;
              var_15 = var_18 < var_10;
              bVar12 = var_18 == var_10;
              if (bVar12) break;
              var_11 = var_4[1]->flags_;
              var_15 = false;
              bVar12 = (var_11 & 0x400) == 0;
            } while (!bVar12);
            pOVar4 = *var_4;
            var_19 = true;
            goto LAB_002c51f5;
          }
          pOVar4 = *var_4;
          var_12 = 8;
          var_13 = (type_9 *)pOVar4->name_;
          var_14 = (type_9 *)".interp";
          do {
            if (var_12 == 0) break;
            var_12 = var_12 + -1;
            var_19 = *var_13 < *var_14;
            var_15 = *var_13 == *var_14;
            var_13 = var_13 + (type_7)bVar13 * -2 + 1;
            var_14 = var_14 + (type_7)bVar13 * -2 + 1;
          } while (var_15);
          if ((!var_19 && !var_15) != var_19) {
            var_19 = true;
            pOVar4 = var_4[1];
            var_4 = var_10;
            goto LAB_002c51e1;
          }
        }
        var_19 = true;
LAB_002c520c:
        EVar2 = type_2::var_7(pOVar4->flags_);
        pOVar3 = type_2::var_8(layout,3,EVar2);
        Output_segment::var_9(pOVar3,*var_4,EVar2);
        if ((sections->
            super__Vector_base<var_5::type_8*,var_6::allocator<var_5::type_8*>var_2>var_3).
            _M_impl._M_finish == var_10) break;
      }
      var_11 = var_4[1]->flags_;
      pOVar4 = var_4[1];
      var_4 = var_10;
    } while( true );
  }
  this->segments_created_ = true;
  return;
}


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

void MASKED(char *param_1,undefined8 param_2,ulong *param_3)

{
  undefined4 uVar1;
  undefined8 uVar2;
  ulong uVar3;
  long lVar4;
  long lVar5;
  byte *pbVar6;
  byte *pbVar7;
  long *plVar8;
  long *plVar9;
  bool bVar10;
  bool bVar11;
  bool bVar12;
  byte bVar13;
  
  bVar13 = 0;
  if ((*param_1 != '\0') && (*(long *)(param_1 + 0x20) != 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_001e9890("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");
  }
  plVar9 = (long *)*param_3;
  if (plVar9 != (long *)param_3[1]) {
    bVar11 = false;
    uVar3 = *(ulong *)(*plVar9 + 0x70);
    lVar4 = *plVar9;
LAB_002c51e1:
    do {
      plVar8 = plVar9 + 1;
      if (*(int *)(lVar4 + 0x6c) == 7) {
        uVar1 = FUN_00212540(uVar3);
        uVar2 = FUN_00215d90(param_2,4,uVar1);
        FUN_002662f0(uVar2,*plVar9,uVar1);
        if (((long *)param_3[1] == plVar8) || (lVar4 = plVar9[1], *(int *)(lVar4 + 0x6c) != 7)) {
          lVar4 = *plVar9;
          uVar3 = *(ulong *)(lVar4 + 0x70);
        }
        else {
          do {
            plVar9 = plVar8;
            uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));
            FUN_002662f0(uVar2,*plVar9,uVar1);
            plVar8 = plVar9 + 1;
            if ((long *)param_3[1] == plVar8) break;
            lVar4 = plVar9[1];
          } while (*(int *)(lVar4 + 0x6c) == 7);
          lVar4 = *plVar9;
          uVar3 = *(ulong *)(lVar4 + 0x70);
        }
      }
      bVar10 = false;
      bVar12 = (uVar3 & 0x400) == 0;
      if (bVar12) {
LAB_002c51f5:
        lVar5 = 8;
        pbVar6 = *(byte **)(lVar4 + 0x28);
        pbVar7 = (byte *)".interp";
        do {
          if (lVar5 == 0) break;
          lVar5 = lVar5 + -1;
          bVar10 = *pbVar6 < *pbVar7;
          bVar12 = *pbVar6 == *pbVar7;
          pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;
          pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;
        } while (bVar12);
        if ((!bVar10 && !bVar12) == bVar10) goto LAB_002c520c;
        if ((long *)param_3[1] == plVar8) break;
      }
      else {
        if (bVar11) {
          uVar2 = gettext("TLS sections are not adjacent");
          FUN_001e14f0(uVar2);
          uVar3 = *(ulong *)(*plVar9 + 0x70);
        }
        uVar1 = FUN_00212540(uVar3);
        uVar2 = FUN_00215d90(param_2,7,uVar1);
        FUN_002662f0(uVar2,*plVar9,uVar1);
        bVar11 = (long *)param_3[1] < plVar8;
        bVar10 = (long *)param_3[1] == plVar8;
        if (bVar10) {
          lVar4 = *plVar9;
          lVar5 = 8;
          pbVar6 = *(byte **)(lVar4 + 0x28);
          pbVar7 = (byte *)".interp";
          do {
            if (lVar5 == 0) break;
            lVar5 = lVar5 + -1;
            bVar11 = *pbVar6 < *pbVar7;
            bVar10 = *pbVar6 == *pbVar7;
            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;
            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;
          } while (bVar10);
          if ((!bVar11 && !bVar10) != bVar11) break;
        }
        else {
          uVar3 = *(ulong *)(plVar9[1] + 0x70);
          bVar11 = false;
          bVar10 = (uVar3 & 0x400) == 0;
          if (!bVar10) {
            do {
              plVar9 = plVar8;
              uVar1 = FUN_00212540(uVar3);
              FUN_002662f0(uVar2,*plVar9,uVar1);
              plVar8 = plVar9 + 1;
              bVar10 = (long *)param_3[1] < plVar8;
              bVar12 = (long *)param_3[1] == plVar8;
              if (bVar12) break;
              uVar3 = *(ulong *)(plVar9[1] + 0x70);
              bVar10 = false;
              bVar12 = (uVar3 & 0x400) == 0;
            } while (!bVar12);
            lVar4 = *plVar9;
            bVar11 = true;
            goto LAB_002c51f5;
          }
          lVar4 = *plVar9;
          lVar5 = 8;
          pbVar6 = *(byte **)(lVar4 + 0x28);
          pbVar7 = (byte *)".interp";
          do {
            if (lVar5 == 0) break;
            lVar5 = lVar5 + -1;
            bVar11 = *pbVar6 < *pbVar7;
            bVar10 = *pbVar6 == *pbVar7;
            pbVar6 = pbVar6 + (ulong)bVar13 * -2 + 1;
            pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;
          } while (bVar10);
          if ((!bVar11 && !bVar10) != bVar11) {
            bVar11 = true;
            lVar4 = plVar9[1];
            plVar9 = plVar8;
            goto LAB_002c51e1;
          }
        }
        bVar11 = true;
LAB_002c520c:
        uVar1 = FUN_00212540(*(undefined8 *)(lVar4 + 0x70));
        uVar2 = FUN_00215d90(param_2,3,uVar1);
        FUN_002662f0(uVar2,*plVar9,uVar1);
        if ((long *)param_3[1] == plVar8) break;
      }
      uVar3 = *(ulong *)(plVar9[1] + 0x70);
      lVar4 = plVar9[1];
      plVar9 = plVar8;
    } while( true );
  }
  param_1[0x3b] = '\x01';
  return;
}

