
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* 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)

{
}



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

void FUN_00332630(char *param_1,undefined4 param_2,uint *param_3)

{
  char *pcVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  int *piVar7;
  byte *pbVar8;
  byte *pbVar9;
  bool bVar10;
  bool bVar11;
  bool bVar12;
  byte bVar13;
  int *local_30;
  int local_2c;
  
  bVar13 = 0;
  if ((*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");
  }
  local_30 = (int *)*param_3;
  if (local_30 != (int *)param_3[1]) {
    pcVar1 = ".interp";
    bVar11 = false;
    local_2c = *local_30;
    uVar2 = *(undefined4 *)(local_2c + 0x58);
    uVar4 = *(uint *)(local_2c + 0x54);
LAB_003326da:
    do {
      piVar7 = local_30 + 1;
      if (*(int *)(local_2c + 0x50) == 7) {
        uVar2 = FUN_00271a10(uVar4,uVar2);
        uVar3 = FUN_00275910(param_2,4,uVar2);
        FUN_002cb440(uVar3,*local_30,uVar2);
        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {
          local_2c = *local_30;
          uVar2 = *(undefined4 *)(local_2c + 0x58);
          uVar4 = *(uint *)(local_2c + 0x54);
        }
        else {
          do {
            local_30 = piVar7;
            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));
            FUN_002cb440(uVar3,*local_30,uVar2);
            piVar7 = local_30 + 1;
            if ((int *)param_3[1] == piVar7) break;
            iVar5 = local_30[1];
          } while (*(int *)(iVar5 + 0x50) == 7);
          local_2c = *local_30;
          uVar2 = *(undefined4 *)(local_2c + 0x58);
          uVar4 = *(uint *)(local_2c + 0x54);
        }
      }
      bVar10 = false;
      bVar12 = (uVar4 & 0x400) == 0;
      if (bVar12) {
LAB_003326f9:
        iVar5 = 8;
        pbVar8 = *(byte **)(local_2c + 0x20);
        pbVar9 = (byte *)pcVar1;
        do {
          if (iVar5 == 0) break;
          iVar5 = iVar5 + -1;
          bVar10 = *pbVar8 < *pbVar9;
          bVar12 = *pbVar8 == *pbVar9;
          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;
          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;
        } while (bVar12);
        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;
        if ((int *)param_3[1] == piVar7) break;
      }
      else {
        if (bVar11) {
          uVar2 = gettext("TLS sections are not adjacent");
          FUN_0023b810(uVar2);
          uVar2 = *(undefined4 *)(*local_30 + 0x58);
          uVar4 = *(uint *)(*local_30 + 0x54);
        }
        uVar2 = FUN_00271a10(uVar4,uVar2);
        uVar3 = FUN_00275910(param_2,7,uVar2);
        FUN_002cb440(uVar3,*local_30,uVar2);
        bVar11 = (int *)param_3[1] < piVar7;
        bVar10 = (int *)param_3[1] == piVar7;
        if (bVar10) {
          iVar5 = 8;
          local_2c = *local_30;
          pbVar8 = *(byte **)(local_2c + 0x20);
          pbVar9 = (byte *)pcVar1;
          do {
            if (iVar5 == 0) break;
            iVar5 = iVar5 + -1;
            bVar11 = *pbVar8 < *pbVar9;
            bVar10 = *pbVar8 == *pbVar9;
            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;
            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;
          } while (bVar10);
          if ((!bVar11 && !bVar10) != bVar11) break;
        }
        else {
          iVar5 = local_30[1];
          uVar2 = *(undefined4 *)(iVar5 + 0x58);
          uVar4 = *(uint *)(iVar5 + 0x54);
          bVar11 = false;
          bVar10 = (uVar4 & 0x400) == 0;
          if (!bVar10) {
            do {
              local_30 = piVar7;
              uVar2 = FUN_00271a10(uVar4,uVar2);
              FUN_002cb440(uVar3,*local_30,uVar2);
              piVar7 = local_30 + 1;
              bVar10 = (int *)param_3[1] < piVar7;
              bVar12 = (int *)param_3[1] == piVar7;
              if (bVar12) break;
              uVar2 = *(undefined4 *)(local_30[1] + 0x58);
              uVar4 = *(uint *)(local_30[1] + 0x54);
              bVar10 = false;
              bVar12 = (uVar4 & 0x400) == 0;
            } while (!bVar12);
            local_2c = *local_30;
            bVar11 = true;
            goto LAB_003326f9;
          }
          iVar6 = 8;
          local_2c = *local_30;
          pbVar8 = *(byte **)(local_2c + 0x20);
          pbVar9 = (byte *)pcVar1;
          do {
            if (iVar6 == 0) break;
            iVar6 = iVar6 + -1;
            bVar11 = *pbVar8 < *pbVar9;
            bVar10 = *pbVar8 == *pbVar9;
            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;
            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;
          } while (bVar10);
          if ((!bVar11 && !bVar10) != bVar11) {
            bVar11 = true;
            local_30 = piVar7;
            local_2c = iVar5;
            goto LAB_003326da;
          }
        }
        bVar11 = true;
LAB_00332714:
        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));
        uVar3 = FUN_00275910(param_2,3,uVar2);
        FUN_002cb440(uVar3,*local_30,uVar2);
        if ((int *)param_3[1] == piVar7) break;
      }
      local_2c = local_30[1];
      uVar2 = *(undefined4 *)(local_2c + 0x58);
      uVar4 = *(uint *)(local_2c + 0x54);
      local_30 = piVar7;
    } while( true );
  }
  param_1[0x1f] = '\x01';
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00050b50
ADD EBX,0x2b79c7
SUB ESP,0x2c
MOV EAX,dword ptr [ESP + 0x40]
CMP byte ptr [EAX],0x0
JZ 0x00332670
MOV EAX,dword ptr [EAX + 0x10]
TEST EAX,EAX
JZ 0x00332670
SUB ESP,0x4
LEA EAX,[EBX + 0xffead33c]
PUSH EAX
LEA EAX,[EBX + 0xffeacb6b]
PUSH 0x102a
PUSH EAX
CALL 0x002446e0
MOV EAX,dword ptr [ESP + 0x48]
MOV EDX,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0xc],EAX
CMP EAX,dword ptr [EDX + 0x4]
JZ 0x00332757
MOV EAX,dword ptr [ESP + 0xc]
LEA ESI,[EBX + 0xffea00ce]
MOV byte ptr [ESP + 0x18],0x0
MOV dword ptr [ESP + 0x14],ESI
LEA ESI,[EBX + 0xffeaccab]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x1c],ESI
MOV dword ptr [ESP + 0x10],EAX
MOV EDX,dword ptr [EAX + 0x58]
MOV EAX,dword ptr [EAX + 0x54]
JMP 0x003326da
MOV EAX,dword ptr [ESP + 0x48]
CMP dword ptr [EAX + 0x4],EBP
JZ 0x00332757
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0xc],EBP
MOV EAX,dword ptr [EAX + 0x4]
MOV dword ptr [ESP + 0x10],EAX
MOV EDX,dword ptr [EAX + 0x58]
MOV EAX,dword ptr [EAX + 0x54]
MOV ESI,dword ptr [ESP + 0xc]
LEA EBP,[ESI + 0x4]
MOV ESI,dword ptr [ESP + 0x10]
CMP dword ptr [ESI + 0x50],0x7
JZ 0x00332860
MOV ECX,EAX
AND ECX,0x400
JNZ 0x00332770
MOV EAX,dword ptr [ESP + 0x10]
MOV EDI,dword ptr [ESP + 0x14]
MOV ECX,0x8
MOV ESI,dword ptr [EAX + 0x20]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x003326b8
SUB ESP,0x8
MOV EAX,dword ptr [ESP + 0x18]
PUSH dword ptr [EAX + 0x58]
PUSH dword ptr [EAX + 0x54]
CALL 0x00271a10
ADD ESP,0xc
PUSH EAX
MOV ESI,EAX
PUSH 0x3
PUSH dword ptr [ESP + 0x50]
CALL 0x00275910
ADD ESP,0xc
PUSH ESI
MOV EDX,dword ptr [ESP + 0x14]
PUSH dword ptr [EDX]
PUSH EAX
CALL 0x002cb440
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x48]
CMP dword ptr [EAX + 0x4],EBP
JNZ 0x003326c5
MOV EAX,dword ptr [ESP + 0x40]
MOV byte ptr [EAX + 0x1f],0x1
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP byte ptr [ESP + 0x18],0x0
JNZ 0x00332830
SUB ESP,0x8
PUSH EDX
PUSH EAX
CALL 0x00271a10
ADD ESP,0xc
PUSH EAX
MOV EDI,EAX
PUSH 0x7
PUSH dword ptr [ESP + 0x50]
CALL 0x00275910
ADD ESP,0xc
PUSH EDI
MOV EDI,dword ptr [ESP + 0x14]
MOV ESI,EAX
PUSH dword ptr [EDI]
PUSH EAX
CALL 0x002cb440
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x48]
CMP dword ptr [EAX + 0x4],EBP
JZ 0x00332901
MOV EAX,dword ptr [EDI + 0x4]
MOV dword ptr [ESP + 0x10],EAX
MOV EDX,dword ptr [EAX + 0x58]
MOV EAX,dword ptr [EAX + 0x54]
MOV ECX,EAX
AND ECX,0x400
JNZ 0x003327ed
JMP 0x00332930
MOV EAX,dword ptr [EBP + 0x4]
MOV EDX,dword ptr [EAX + 0x58]
MOV EAX,dword ptr [EAX + 0x54]
MOV EDI,EAX
AND EDI,0x400
JZ 0x00332813
MOV EBP,ECX
SUB ESP,0x8
PUSH EDX
PUSH EAX
CALL 0x00271a10
ADD ESP,0xc
PUSH EAX
PUSH dword ptr [EBP]
PUSH ESI
CALL 0x002cb440
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x48]
LEA ECX,[EBP + 0x4]
CMP dword ptr [EAX + 0x4],ECX
JNZ 0x003327d8
MOV EAX,dword ptr [EBP]
MOV dword ptr [ESP + 0xc],EBP
MOV EBP,ECX
MOV byte ptr [ESP + 0x18],0x1
MOV dword ptr [ESP + 0x10],EAX
JMP 0x003326f9
SUB ESP,0xc
PUSH dword ptr [ESP + 0x28]
CALL 0x00039440
MOV dword ptr [ESP],EAX
CALL 0x0023b810
MOV EAX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [EAX + 0x58]
MOV EAX,dword ptr [EAX + 0x54]
JMP 0x0033277b
SUB ESP,0x8
PUSH EDX
PUSH EAX
CALL 0x00271a10
ADD ESP,0xc
PUSH EAX
MOV EDI,EAX
PUSH 0x4
PUSH dword ptr [ESP + 0x50]
CALL 0x00275910
ADD ESP,0xc
PUSH EDI
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x14]
PUSH dword ptr [EAX]
PUSH ESI
CALL 0x002cb440
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x48]
CMP dword ptr [EAX + 0x4],EBP
MOV EAX,dword ptr [ESP + 0xc]
JZ 0x0033296e
MOV EAX,dword ptr [EAX + 0x4]
MOV EDI,dword ptr [ESP + 0x48]
CMP dword ptr [EAX + 0x50],0x7
JZ 0x003328c3
JMP 0x0033296a
MOV EAX,dword ptr [EBP + 0x4]
CMP dword ptr [EAX + 0x50],0x7
JNZ 0x003328e9
MOV EBP,ECX
SUB ESP,0x8
PUSH dword ptr [EAX + 0x58]
PUSH dword ptr [EAX + 0x54]
CALL 0x00271a10
ADD ESP,0xc
PUSH EAX
PUSH dword ptr [EBP]
PUSH ESI
CALL 0x002cb440
LEA ECX,[EBP + 0x4]
ADD ESP,0x10
CMP dword ptr [EDI + 0x4],ECX
JNZ 0x003328b8
MOV EAX,dword ptr [EBP]
MOV EDX,dword ptr [EAX + 0x58]
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [EAX + 0x54]
MOV dword ptr [ESP + 0xc],EBP
MOV EBP,ECX
JMP 0x003326ef
MOV EAX,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [ESP + 0x14]
MOV ECX,0x8
MOV EAX,dword ptr [EAX]
MOV ESI,dword ptr [EAX + 0x20]
MOV dword ptr [ESP + 0x10],EAX
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x00332757
MOV byte ptr [ESP + 0x18],0x1
JMP 0x00332714
MOV ESI,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [ESP + 0x14]
MOV ECX,0x8
MOV ESI,dword ptr [ESI]
MOV dword ptr [ESP + 0x18],ESI
MOV ESI,dword ptr [ESI + 0x20]
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x00332960
MOV dword ptr [ESP + 0xc],EBP
MOV byte ptr [ESP + 0x18],0x1
JMP 0x003326da
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x10],EAX
JMP 0x00332926
MOV EAX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x10],EAX
MOV EDX,dword ptr [EAX + 0x58]
MOV EAX,dword ptr [EAX + 0x54]
JMP 0x003326ef
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00332630(char *param_1,undefined4 param_2,uint *param_3)\n\n{\n  char *pcVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int *piVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  int *local_30;\n  int local_2c;\n  \n  bVar13 = 0;\n  if ((*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  local_30 = (int *)*param_3;\n  if (local_30 != (int *)param_3[1]) {\n    pcVar1 = ".interp";\n    bVar11 = false;\n    local_2c = *local_30;\n    uVar2 = *(undefined4 *)(local_2c + 0x58);\n    uVar4 = *(uint *)(local_2c + 0x54);\nLAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );\n  }\n  param_1[0x1f] = '\x01';\n  return;\n}\n\n" comment (function_definition "void FUN_00332630(char *param_1,undefined4 param_2,uint *param_3)\n\n{\n  char *pcVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int *piVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  int *local_30;\n  int local_2c;\n  \n  bVar13 = 0;\n  if ((*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  local_30 = (int *)*param_3;\n  if (local_30 != (int *)param_3[1]) {\n    pcVar1 = ".interp";\n    bVar11 = false;\n    local_2c = *local_30;\n    uVar2 = *(undefined4 *)(local_2c + 0x58);\n    uVar4 = *(uint *)(local_2c + 0x54);\nLAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );\n  }\n  param_1[0x1f] = '\x01';\n  return;\n}" primitive_type (function_declarator "FUN_00332630(char *param_1,undefined4 param_2,uint *param_3)" identifier (parameter_list "(char *param_1,undefined4 param_2,uint *param_3)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int *piVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  int *local_30;\n  int local_2c;\n  \n  bVar13 = 0;\n  if ((*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  local_30 = (int *)*param_3;\n  if (local_30 != (int *)param_3[1]) {\n    pcVar1 = ".interp";\n    bVar11 = false;\n    local_2c = *local_30;\n    uVar2 = *(undefined4 *)(local_2c + 0x58);\n    uVar4 = *(uint *)(local_2c + 0x54);\nLAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );\n  }\n  param_1[0x1f] = '\x01';\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * 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 ;) (declaration "int *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (if_statement "if ((*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }" if (parenthesized_expression "((*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0))" ( (binary_expression "(*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0)" (parenthesized_expression "(*param_1 != '\0')" ( (binary_expression "*param_1 != '\0'" (pointer_expression "*param_1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(int *)(param_1 + 0x10) != 0)" ( (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }" { comment (expression_statement "FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");" (call_expression "FUN_002446e0("../../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 "local_30 = (int *)*param_3;" (assignment_expression "local_30 = (int *)*param_3" identifier = (cast_expression "(int *)*param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (if_statement "if (local_30 != (int *)param_3[1]) {\n    pcVar1 = ".interp";\n    bVar11 = false;\n    local_2c = *local_30;\n    uVar2 = *(undefined4 *)(local_2c + 0x58);\n    uVar4 = *(uint *)(local_2c + 0x54);\nLAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );\n  }" if (parenthesized_expression "(local_30 != (int *)param_3[1])" ( (binary_expression "local_30 != (int *)param_3[1]" identifier != (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    pcVar1 = ".interp";\n    bVar11 = false;\n    local_2c = *local_30;\n    uVar2 = *(undefined4 *)(local_2c + 0x58);\n    uVar4 = *(uint *)(local_2c + 0x54);\nLAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );\n  }" { (expression_statement "pcVar1 = ".interp";" (assignment_expression "pcVar1 = ".interp"" identifier = (string_literal "".interp"" " string_content ")) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" identifier = (pointer_expression "*local_30" * identifier)) ;) (expression_statement "uVar2 = *(undefined4 *)(local_2c + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(local_2c + 0x58)" identifier = (pointer_expression "*(undefined4 *)(local_2c + 0x58)" * (cast_expression "(undefined4 *)(local_2c + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x58)" ( (binary_expression "local_2c + 0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(local_2c + 0x54);" (assignment_expression "uVar4 = *(uint *)(local_2c + 0x54)" identifier = (pointer_expression "*(uint *)(local_2c + 0x54)" * (cast_expression "(uint *)(local_2c + 0x54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x54)" ( (binary_expression "local_2c + 0x54" identifier + number_literal) ))))) ;) (labeled_statement "LAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );" statement_identifier : (do_statement "do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );" do (compound_statement "{\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    }" { (expression_statement "piVar7 = local_30 + 1;" (assignment_expression "piVar7 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (if_statement "if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }" if (parenthesized_expression "(*(int *)(local_2c + 0x50) == 7)" ( (binary_expression "*(int *)(local_2c + 0x50) == 7" (pointer_expression "*(int *)(local_2c + 0x50)" * (cast_expression "(int *)(local_2c + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x50)" ( (binary_expression "local_2c + 0x50" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }" { (expression_statement "uVar2 = FUN_00271a10(uVar4,uVar2);" (assignment_expression "uVar2 = FUN_00271a10(uVar4,uVar2)" identifier = (call_expression "FUN_00271a10(uVar4,uVar2)" identifier (argument_list "(uVar4,uVar2)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = FUN_00275910(param_2,4,uVar2);" (assignment_expression "uVar3 = FUN_00275910(param_2,4,uVar2)" identifier = (call_expression "FUN_00275910(param_2,4,uVar2)" identifier (argument_list "(param_2,4,uVar2)" ( identifier , number_literal , identifier )))) ;) (expression_statement "FUN_002cb440(uVar3,*local_30,uVar2);" (call_expression "FUN_002cb440(uVar3,*local_30,uVar2)" identifier (argument_list "(uVar3,*local_30,uVar2)" ( identifier , (pointer_expression "*local_30" * identifier) , identifier ))) ;) (if_statement "if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }" if (parenthesized_expression "(((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7))" ( (binary_expression "((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)" (parenthesized_expression "((int *)param_3[1] == piVar7)" ( (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier) )) || (parenthesized_expression "(iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)" ( (comma_expression "iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7" (assignment_expression "iVar5 = local_30[1]" identifier = (subscript_expression "local_30[1]" identifier [ number_literal ])) , (binary_expression "*(int *)(iVar5 + 0x50) != 7" (pointer_expression "*(int *)(iVar5 + 0x50)" * (cast_expression "(int *)(iVar5 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x50)" ( (binary_expression "iVar5 + 0x50" identifier + number_literal) )))) != number_literal)) ))) )) (compound_statement "{\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }" { (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" identifier = (pointer_expression "*local_30" * identifier)) ;) (expression_statement "uVar2 = *(undefined4 *)(local_2c + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(local_2c + 0x58)" identifier = (pointer_expression "*(undefined4 *)(local_2c + 0x58)" * (cast_expression "(undefined4 *)(local_2c + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x58)" ( (binary_expression "local_2c + 0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(local_2c + 0x54);" (assignment_expression "uVar4 = *(uint *)(local_2c + 0x54)" identifier = (pointer_expression "*(uint *)(local_2c + 0x54)" * (cast_expression "(uint *)(local_2c + 0x54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x54)" ( (binary_expression "local_2c + 0x54" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }" else (compound_statement "{\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }" { (do_statement "do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);" do (compound_statement "{\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          }" { (expression_statement "local_30 = piVar7;" (assignment_expression "local_30 = piVar7" identifier = identifier) ;) (expression_statement "uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));" (assignment_expression "uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58))" identifier = (call_expression "FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58))" identifier (argument_list "(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58))" ( (pointer_expression "*(undefined4 *)(iVar5 + 0x54)" * (cast_expression "(undefined4 *)(iVar5 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x54)" ( (binary_expression "iVar5 + 0x54" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar5 + 0x58)" * (cast_expression "(undefined4 *)(iVar5 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x58)" ( (binary_expression "iVar5 + 0x58" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_002cb440(uVar3,*local_30,uVar2);" (call_expression "FUN_002cb440(uVar3,*local_30,uVar2)" identifier (argument_list "(uVar3,*local_30,uVar2)" ( identifier , (pointer_expression "*local_30" * identifier) , identifier ))) ;) (expression_statement "piVar7 = local_30 + 1;" (assignment_expression "piVar7 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (if_statement "if ((int *)param_3[1] == piVar7) break;" if (parenthesized_expression "((int *)param_3[1] == piVar7)" ( (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = local_30[1];" (assignment_expression "iVar5 = local_30[1]" identifier = (subscript_expression "local_30[1]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(*(int *)(iVar5 + 0x50) == 7)" ( (binary_expression "*(int *)(iVar5 + 0x50) == 7" (pointer_expression "*(int *)(iVar5 + 0x50)" * (cast_expression "(int *)(iVar5 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x50)" ( (binary_expression "iVar5 + 0x50" identifier + number_literal) )))) == number_literal) )) ;) (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" identifier = (pointer_expression "*local_30" * identifier)) ;) (expression_statement "uVar2 = *(undefined4 *)(local_2c + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(local_2c + 0x58)" identifier = (pointer_expression "*(undefined4 *)(local_2c + 0x58)" * (cast_expression "(undefined4 *)(local_2c + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x58)" ( (binary_expression "local_2c + 0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(local_2c + 0x54);" (assignment_expression "uVar4 = *(uint *)(local_2c + 0x54)" identifier = (pointer_expression "*(uint *)(local_2c + 0x54)" * (cast_expression "(uint *)(local_2c + 0x54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x54)" ( (binary_expression "local_2c + 0x54" identifier + number_literal) ))))) ;) }))) })) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar12 = (uVar4 & 0x400) == 0;" (assignment_expression "bVar12 = (uVar4 & 0x400) == 0" identifier = (binary_expression "(uVar4 & 0x400) == 0" (parenthesized_expression "(uVar4 & 0x400)" ( (binary_expression "uVar4 & 0x400" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }" { (labeled_statement "LAB_003326f9:\n        iVar5 = 8;" statement_identifier : (expression_statement "iVar5 = 8;" (assignment_expression "iVar5 = 8" identifier = number_literal) ;)) (expression_statement "pbVar8 = *(byte **)(local_2c + 0x20);" (assignment_expression "pbVar8 = *(byte **)(local_2c + 0x20)" identifier = (pointer_expression "*(byte **)(local_2c + 0x20)" * (cast_expression "(byte **)(local_2c + 0x20)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_2c + 0x20)" ( (binary_expression "local_2c + 0x20" identifier + number_literal) ))))) ;) (expression_statement "pbVar9 = (byte *)pcVar1;" (assignment_expression "pbVar9 = (byte *)pcVar1" identifier = (cast_expression "(byte *)pcVar1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);" do (compound_statement "{\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar8 < *pbVar9;" (assignment_expression "bVar10 = *pbVar8 < *pbVar9" identifier = (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar12 = *pbVar8 == *pbVar9;" (assignment_expression "bVar12 = *pbVar8 == *pbVar9" identifier = (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pbVar8 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar8 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pbVar9 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar9 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;" 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_00332714;" goto statement_identifier ;)) (if_statement "if ((int *)param_3[1] == piVar7) break;" if (parenthesized_expression "((int *)param_3[1] == piVar7)" ( (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (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_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }" else (compound_statement "{\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }" { (if_statement "if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\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_0023b810(uVar2);" (call_expression "FUN_0023b810(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "uVar2 = *(undefined4 *)(*local_30 + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(*local_30 + 0x58)" identifier = (pointer_expression "*(undefined4 *)(*local_30 + 0x58)" * (cast_expression "(undefined4 *)(*local_30 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_30 + 0x58)" ( (binary_expression "*local_30 + 0x58" (pointer_expression "*local_30" * identifier) + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(*local_30 + 0x54);" (assignment_expression "uVar4 = *(uint *)(*local_30 + 0x54)" identifier = (pointer_expression "*(uint *)(*local_30 + 0x54)" * (cast_expression "(uint *)(*local_30 + 0x54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_30 + 0x54)" ( (binary_expression "*local_30 + 0x54" (pointer_expression "*local_30" * identifier) + number_literal) ))))) ;) })) (expression_statement "uVar2 = FUN_00271a10(uVar4,uVar2);" (assignment_expression "uVar2 = FUN_00271a10(uVar4,uVar2)" identifier = (call_expression "FUN_00271a10(uVar4,uVar2)" identifier (argument_list "(uVar4,uVar2)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = FUN_00275910(param_2,7,uVar2);" (assignment_expression "uVar3 = FUN_00275910(param_2,7,uVar2)" identifier = (call_expression "FUN_00275910(param_2,7,uVar2)" identifier (argument_list "(param_2,7,uVar2)" ( identifier , number_literal , identifier )))) ;) (expression_statement "FUN_002cb440(uVar3,*local_30,uVar2);" (call_expression "FUN_002cb440(uVar3,*local_30,uVar2)" identifier (argument_list "(uVar3,*local_30,uVar2)" ( identifier , (pointer_expression "*local_30" * identifier) , identifier ))) ;) (expression_statement "bVar11 = (int *)param_3[1] < piVar7;" (assignment_expression "bVar11 = (int *)param_3[1] < piVar7" identifier = (binary_expression "(int *)param_3[1] < piVar7" (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) < identifier)) ;) (expression_statement "bVar10 = (int *)param_3[1] == piVar7;" (assignment_expression "bVar10 = (int *)param_3[1] == piVar7" identifier = (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier)) ;) (if_statement "if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }" { (expression_statement "iVar5 = 8;" (assignment_expression "iVar5 = 8" identifier = number_literal) ;) (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" identifier = (pointer_expression "*local_30" * identifier)) ;) (expression_statement "pbVar8 = *(byte **)(local_2c + 0x20);" (assignment_expression "pbVar8 = *(byte **)(local_2c + 0x20)" identifier = (pointer_expression "*(byte **)(local_2c + 0x20)" * (cast_expression "(byte **)(local_2c + 0x20)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_2c + 0x20)" ( (binary_expression "local_2c + 0x20" identifier + number_literal) ))))) ;) (expression_statement "pbVar9 = (byte *)pcVar1;" (assignment_expression "pbVar9 = (byte *)pcVar1" identifier = (cast_expression "(byte *)pcVar1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);" do (compound_statement "{\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar8 < *pbVar9;" (assignment_expression "bVar11 = *pbVar8 < *pbVar9" identifier = (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar10 = *pbVar8 == *pbVar9;" (assignment_expression "bVar10 = *pbVar8 == *pbVar9" identifier = (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pbVar8 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar8 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pbVar9 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar9 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" 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          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }" else (compound_statement "{\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }" { (expression_statement "iVar5 = local_30[1];" (assignment_expression "iVar5 = local_30[1]" identifier = (subscript_expression "local_30[1]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = *(undefined4 *)(iVar5 + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(iVar5 + 0x58)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 0x58)" * (cast_expression "(undefined4 *)(iVar5 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x58)" ( (binary_expression "iVar5 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(iVar5 + 0x54);" (assignment_expression "uVar4 = *(uint *)(iVar5 + 0x54)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x54)" * (cast_expression "(uint *)(iVar5 + 0x54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x54)" ( (binary_expression "iVar5 + 0x54" identifier + number_literal) ))))) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar10 = (uVar4 & 0x400) == 0;" (assignment_expression "bVar10 = (uVar4 & 0x400) == 0" identifier = (binary_expression "(uVar4 & 0x400) == 0" (parenthesized_expression "(uVar4 & 0x400)" ( (binary_expression "uVar4 & 0x400" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }" if (parenthesized_expression "(!bVar10)" ( (unary_expression "!bVar10" ! identifier) )) (compound_statement "{\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }" { (do_statement "do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);" do (compound_statement "{\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            }" { (expression_statement "local_30 = piVar7;" (assignment_expression "local_30 = piVar7" identifier = identifier) ;) (expression_statement "uVar2 = FUN_00271a10(uVar4,uVar2);" (assignment_expression "uVar2 = FUN_00271a10(uVar4,uVar2)" identifier = (call_expression "FUN_00271a10(uVar4,uVar2)" identifier (argument_list "(uVar4,uVar2)" ( identifier , identifier )))) ;) (expression_statement "FUN_002cb440(uVar3,*local_30,uVar2);" (call_expression "FUN_002cb440(uVar3,*local_30,uVar2)" identifier (argument_list "(uVar3,*local_30,uVar2)" ( identifier , (pointer_expression "*local_30" * identifier) , identifier ))) ;) (expression_statement "piVar7 = local_30 + 1;" (assignment_expression "piVar7 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (expression_statement "bVar10 = (int *)param_3[1] < piVar7;" (assignment_expression "bVar10 = (int *)param_3[1] < piVar7" identifier = (binary_expression "(int *)param_3[1] < piVar7" (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) < identifier)) ;) (expression_statement "bVar12 = (int *)param_3[1] == piVar7;" (assignment_expression "bVar12 = (int *)param_3[1] == piVar7" identifier = (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (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 "uVar2 = *(undefined4 *)(local_30[1] + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(local_30[1] + 0x58)" identifier = (pointer_expression "*(undefined4 *)(local_30[1] + 0x58)" * (cast_expression "(undefined4 *)(local_30[1] + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30[1] + 0x58)" ( (binary_expression "local_30[1] + 0x58" (subscript_expression "local_30[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(local_30[1] + 0x54);" (assignment_expression "uVar4 = *(uint *)(local_30[1] + 0x54)" identifier = (pointer_expression "*(uint *)(local_30[1] + 0x54)" * (cast_expression "(uint *)(local_30[1] + 0x54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30[1] + 0x54)" ( (binary_expression "local_30[1] + 0x54" (subscript_expression "local_30[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar12 = (uVar4 & 0x400) == 0;" (assignment_expression "bVar12 = (uVar4 & 0x400) == 0" identifier = (binary_expression "(uVar4 & 0x400) == 0" (parenthesized_expression "(uVar4 & 0x400)" ( (binary_expression "uVar4 & 0x400" identifier & number_literal) )) == number_literal)) ;) }) while (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) ;) (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" identifier = (pointer_expression "*local_30" * identifier)) ;) (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (goto_statement "goto LAB_003326f9;" goto statement_identifier ;) })) (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" identifier = number_literal) ;) (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" identifier = (pointer_expression "*local_30" * identifier)) ;) (expression_statement "pbVar8 = *(byte **)(local_2c + 0x20);" (assignment_expression "pbVar8 = *(byte **)(local_2c + 0x20)" identifier = (pointer_expression "*(byte **)(local_2c + 0x20)" * (cast_expression "(byte **)(local_2c + 0x20)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_2c + 0x20)" ( (binary_expression "local_2c + 0x20" identifier + number_literal) ))))) ;) (expression_statement "pbVar9 = (byte *)pcVar1;" (assignment_expression "pbVar9 = (byte *)pcVar1" identifier = (cast_expression "(byte *)pcVar1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);" do (compound_statement "{\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar8 < *pbVar9;" (assignment_expression "bVar11 = *pbVar8 < *pbVar9" identifier = (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar10 = *pbVar8 == *pbVar9;" (assignment_expression "bVar10 = *pbVar8 == *pbVar9" identifier = (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pbVar8 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar8 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pbVar9 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar9 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar10)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\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            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }" { (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (expression_statement "local_30 = piVar7;" (assignment_expression "local_30 = piVar7" identifier = identifier) ;) (expression_statement "local_2c = iVar5;" (assignment_expression "local_2c = iVar5" identifier = identifier) ;) (goto_statement "goto LAB_003326da;" goto statement_identifier ;) })) }))) (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (labeled_statement "LAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));" statement_identifier : (expression_statement "uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));" (assignment_expression "uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58))" identifier = (call_expression "FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58))" identifier (argument_list "(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58))" ( (pointer_expression "*(undefined4 *)(local_2c + 0x54)" * (cast_expression "(undefined4 *)(local_2c + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x54)" ( (binary_expression "local_2c + 0x54" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(local_2c + 0x58)" * (cast_expression "(undefined4 *)(local_2c + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x58)" ( (binary_expression "local_2c + 0x58" identifier + number_literal) )))) )))) ;)) (expression_statement "uVar3 = FUN_00275910(param_2,3,uVar2);" (assignment_expression "uVar3 = FUN_00275910(param_2,3,uVar2)" identifier = (call_expression "FUN_00275910(param_2,3,uVar2)" identifier (argument_list "(param_2,3,uVar2)" ( identifier , number_literal , identifier )))) ;) (expression_statement "FUN_002cb440(uVar3,*local_30,uVar2);" (call_expression "FUN_002cb440(uVar3,*local_30,uVar2)" identifier (argument_list "(uVar3,*local_30,uVar2)" ( identifier , (pointer_expression "*local_30" * identifier) , identifier ))) ;) (if_statement "if ((int *)param_3[1] == piVar7) break;" if (parenthesized_expression "((int *)param_3[1] == piVar7)" ( (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) }))) (expression_statement "local_2c = local_30[1];" (assignment_expression "local_2c = local_30[1]" identifier = (subscript_expression "local_30[1]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = *(undefined4 *)(local_2c + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(local_2c + 0x58)" identifier = (pointer_expression "*(undefined4 *)(local_2c + 0x58)" * (cast_expression "(undefined4 *)(local_2c + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x58)" ( (binary_expression "local_2c + 0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(local_2c + 0x54);" (assignment_expression "uVar4 = *(uint *)(local_2c + 0x54)" identifier = (pointer_expression "*(uint *)(local_2c + 0x54)" * (cast_expression "(uint *)(local_2c + 0x54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x54)" ( (binary_expression "local_2c + 0x54" identifier + number_literal) ))))) ;) (expression_statement "local_30 = piVar7;" (assignment_expression "local_30 = piVar7" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "param_1[0x1f] = '\x01';" (assignment_expression "param_1[0x1f] = '\x01'" (subscript_expression "param_1[0x1f]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* 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}\n\n" comment 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}" 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}" { })))
(translation_unit "void FUN_00332630(char *param_1,undefined4 param_2,uint *param_3)\n\n{\n  char *pcVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int *piVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  int *local_30;\n  int local_2c;\n  \n  bVar13 = 0;\n  if ((*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0)) {\n                    \n    FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  local_30 = (int *)*param_3;\n  if (local_30 != (int *)param_3[1]) {\n    pcVar1 = ".interp";\n    bVar11 = false;\n    local_2c = *local_30;\n    uVar2 = *(undefined4 *)(local_2c + 0x58);\n    uVar4 = *(uint *)(local_2c + 0x54);\nLAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );\n  }\n  param_1[0x1f] = '\x01';\n  return;\n}\n\n" (function_definition "void FUN_00332630(char *param_1,undefined4 param_2,uint *param_3)\n\n{\n  char *pcVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int *piVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  int *local_30;\n  int local_2c;\n  \n  bVar13 = 0;\n  if ((*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0)) {\n                    \n    FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  local_30 = (int *)*param_3;\n  if (local_30 != (int *)param_3[1]) {\n    pcVar1 = ".interp";\n    bVar11 = false;\n    local_2c = *local_30;\n    uVar2 = *(undefined4 *)(local_2c + 0x58);\n    uVar4 = *(uint *)(local_2c + 0x54);\nLAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );\n  }\n  param_1[0x1f] = '\x01';\n  return;\n}" primitive_type (function_declarator "FUN_00332630(char *param_1,undefined4 param_2,uint *param_3)" identifier (parameter_list "(char *param_1,undefined4 param_2,uint *param_3)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int *piVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  int *local_30;\n  int local_2c;\n  \n  bVar13 = 0;\n  if ((*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0)) {\n                    \n    FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  local_30 = (int *)*param_3;\n  if (local_30 != (int *)param_3[1]) {\n    pcVar1 = ".interp";\n    bVar11 = false;\n    local_2c = *local_30;\n    uVar2 = *(undefined4 *)(local_2c + 0x58);\n    uVar4 = *(uint *)(local_2c + 0x54);\nLAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );\n  }\n  param_1[0x1f] = '\x01';\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * 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 ;) (declaration "int *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (if_statement "if ((*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0)) {\n                    \n    FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }" if (parenthesized_expression "((*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0))" ( (binary_expression "(*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0)" (parenthesized_expression "(*param_1 != '\0')" ( (binary_expression "*param_1 != '\0'" (pointer_expression "*param_1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(int *)(param_1 + 0x10) != 0)" ( (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }" { (expression_statement "FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");" (call_expression "FUN_002446e0("../../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 "local_30 = (int *)*param_3;" (assignment_expression "local_30 = (int *)*param_3" identifier = (cast_expression "(int *)*param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (if_statement "if (local_30 != (int *)param_3[1]) {\n    pcVar1 = ".interp";\n    bVar11 = false;\n    local_2c = *local_30;\n    uVar2 = *(undefined4 *)(local_2c + 0x58);\n    uVar4 = *(uint *)(local_2c + 0x54);\nLAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );\n  }" if (parenthesized_expression "(local_30 != (int *)param_3[1])" ( (binary_expression "local_30 != (int *)param_3[1]" identifier != (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    pcVar1 = ".interp";\n    bVar11 = false;\n    local_2c = *local_30;\n    uVar2 = *(undefined4 *)(local_2c + 0x58);\n    uVar4 = *(uint *)(local_2c + 0x54);\nLAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );\n  }" { (expression_statement "pcVar1 = ".interp";" (assignment_expression "pcVar1 = ".interp"" identifier = (string_literal "".interp"" " string_content ")) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" identifier = (pointer_expression "*local_30" * identifier)) ;) (expression_statement "uVar2 = *(undefined4 *)(local_2c + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(local_2c + 0x58)" identifier = (pointer_expression "*(undefined4 *)(local_2c + 0x58)" * (cast_expression "(undefined4 *)(local_2c + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x58)" ( (binary_expression "local_2c + 0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(local_2c + 0x54);" (assignment_expression "uVar4 = *(uint *)(local_2c + 0x54)" identifier = (pointer_expression "*(uint *)(local_2c + 0x54)" * (cast_expression "(uint *)(local_2c + 0x54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x54)" ( (binary_expression "local_2c + 0x54" identifier + number_literal) ))))) ;) (labeled_statement "LAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );" statement_identifier : (do_statement "do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );" do (compound_statement "{\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    }" { (expression_statement "piVar7 = local_30 + 1;" (assignment_expression "piVar7 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (if_statement "if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }" if (parenthesized_expression "(*(int *)(local_2c + 0x50) == 7)" ( (binary_expression "*(int *)(local_2c + 0x50) == 7" (pointer_expression "*(int *)(local_2c + 0x50)" * (cast_expression "(int *)(local_2c + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x50)" ( (binary_expression "local_2c + 0x50" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }" { (expression_statement "uVar2 = FUN_00271a10(uVar4,uVar2);" (assignment_expression "uVar2 = FUN_00271a10(uVar4,uVar2)" identifier = (call_expression "FUN_00271a10(uVar4,uVar2)" identifier (argument_list "(uVar4,uVar2)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = FUN_00275910(param_2,4,uVar2);" (assignment_expression "uVar3 = FUN_00275910(param_2,4,uVar2)" identifier = (call_expression "FUN_00275910(param_2,4,uVar2)" identifier (argument_list "(param_2,4,uVar2)" ( identifier , number_literal , identifier )))) ;) (expression_statement "FUN_002cb440(uVar3,*local_30,uVar2);" (call_expression "FUN_002cb440(uVar3,*local_30,uVar2)" identifier (argument_list "(uVar3,*local_30,uVar2)" ( identifier , (pointer_expression "*local_30" * identifier) , identifier ))) ;) (if_statement "if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }" if (parenthesized_expression "(((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7))" ( (binary_expression "((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)" (parenthesized_expression "((int *)param_3[1] == piVar7)" ( (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier) )) || (parenthesized_expression "(iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)" ( (comma_expression "iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7" (assignment_expression "iVar5 = local_30[1]" identifier = (subscript_expression "local_30[1]" identifier [ number_literal ])) , (binary_expression "*(int *)(iVar5 + 0x50) != 7" (pointer_expression "*(int *)(iVar5 + 0x50)" * (cast_expression "(int *)(iVar5 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x50)" ( (binary_expression "iVar5 + 0x50" identifier + number_literal) )))) != number_literal)) ))) )) (compound_statement "{\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }" { (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" identifier = (pointer_expression "*local_30" * identifier)) ;) (expression_statement "uVar2 = *(undefined4 *)(local_2c + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(local_2c + 0x58)" identifier = (pointer_expression "*(undefined4 *)(local_2c + 0x58)" * (cast_expression "(undefined4 *)(local_2c + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x58)" ( (binary_expression "local_2c + 0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(local_2c + 0x54);" (assignment_expression "uVar4 = *(uint *)(local_2c + 0x54)" identifier = (pointer_expression "*(uint *)(local_2c + 0x54)" * (cast_expression "(uint *)(local_2c + 0x54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x54)" ( (binary_expression "local_2c + 0x54" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }" else (compound_statement "{\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }" { (do_statement "do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);" do (compound_statement "{\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          }" { (expression_statement "local_30 = piVar7;" (assignment_expression "local_30 = piVar7" identifier = identifier) ;) (expression_statement "uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));" (assignment_expression "uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58))" identifier = (call_expression "FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58))" identifier (argument_list "(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58))" ( (pointer_expression "*(undefined4 *)(iVar5 + 0x54)" * (cast_expression "(undefined4 *)(iVar5 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x54)" ( (binary_expression "iVar5 + 0x54" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar5 + 0x58)" * (cast_expression "(undefined4 *)(iVar5 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x58)" ( (binary_expression "iVar5 + 0x58" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_002cb440(uVar3,*local_30,uVar2);" (call_expression "FUN_002cb440(uVar3,*local_30,uVar2)" identifier (argument_list "(uVar3,*local_30,uVar2)" ( identifier , (pointer_expression "*local_30" * identifier) , identifier ))) ;) (expression_statement "piVar7 = local_30 + 1;" (assignment_expression "piVar7 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (if_statement "if ((int *)param_3[1] == piVar7) break;" if (parenthesized_expression "((int *)param_3[1] == piVar7)" ( (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = local_30[1];" (assignment_expression "iVar5 = local_30[1]" identifier = (subscript_expression "local_30[1]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(*(int *)(iVar5 + 0x50) == 7)" ( (binary_expression "*(int *)(iVar5 + 0x50) == 7" (pointer_expression "*(int *)(iVar5 + 0x50)" * (cast_expression "(int *)(iVar5 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x50)" ( (binary_expression "iVar5 + 0x50" identifier + number_literal) )))) == number_literal) )) ;) (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" identifier = (pointer_expression "*local_30" * identifier)) ;) (expression_statement "uVar2 = *(undefined4 *)(local_2c + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(local_2c + 0x58)" identifier = (pointer_expression "*(undefined4 *)(local_2c + 0x58)" * (cast_expression "(undefined4 *)(local_2c + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x58)" ( (binary_expression "local_2c + 0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(local_2c + 0x54);" (assignment_expression "uVar4 = *(uint *)(local_2c + 0x54)" identifier = (pointer_expression "*(uint *)(local_2c + 0x54)" * (cast_expression "(uint *)(local_2c + 0x54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x54)" ( (binary_expression "local_2c + 0x54" identifier + number_literal) ))))) ;) }))) })) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar12 = (uVar4 & 0x400) == 0;" (assignment_expression "bVar12 = (uVar4 & 0x400) == 0" identifier = (binary_expression "(uVar4 & 0x400) == 0" (parenthesized_expression "(uVar4 & 0x400)" ( (binary_expression "uVar4 & 0x400" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }" { (labeled_statement "LAB_003326f9:\n        iVar5 = 8;" statement_identifier : (expression_statement "iVar5 = 8;" (assignment_expression "iVar5 = 8" identifier = number_literal) ;)) (expression_statement "pbVar8 = *(byte **)(local_2c + 0x20);" (assignment_expression "pbVar8 = *(byte **)(local_2c + 0x20)" identifier = (pointer_expression "*(byte **)(local_2c + 0x20)" * (cast_expression "(byte **)(local_2c + 0x20)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_2c + 0x20)" ( (binary_expression "local_2c + 0x20" identifier + number_literal) ))))) ;) (expression_statement "pbVar9 = (byte *)pcVar1;" (assignment_expression "pbVar9 = (byte *)pcVar1" identifier = (cast_expression "(byte *)pcVar1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);" do (compound_statement "{\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar8 < *pbVar9;" (assignment_expression "bVar10 = *pbVar8 < *pbVar9" identifier = (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar12 = *pbVar8 == *pbVar9;" (assignment_expression "bVar12 = *pbVar8 == *pbVar9" identifier = (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pbVar8 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar8 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pbVar9 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar9 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;" 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_00332714;" goto statement_identifier ;)) (if_statement "if ((int *)param_3[1] == piVar7) break;" if (parenthesized_expression "((int *)param_3[1] == piVar7)" ( (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (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_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }" else (compound_statement "{\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }" { (if_statement "if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\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_0023b810(uVar2);" (call_expression "FUN_0023b810(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "uVar2 = *(undefined4 *)(*local_30 + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(*local_30 + 0x58)" identifier = (pointer_expression "*(undefined4 *)(*local_30 + 0x58)" * (cast_expression "(undefined4 *)(*local_30 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_30 + 0x58)" ( (binary_expression "*local_30 + 0x58" (pointer_expression "*local_30" * identifier) + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(*local_30 + 0x54);" (assignment_expression "uVar4 = *(uint *)(*local_30 + 0x54)" identifier = (pointer_expression "*(uint *)(*local_30 + 0x54)" * (cast_expression "(uint *)(*local_30 + 0x54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_30 + 0x54)" ( (binary_expression "*local_30 + 0x54" (pointer_expression "*local_30" * identifier) + number_literal) ))))) ;) })) (expression_statement "uVar2 = FUN_00271a10(uVar4,uVar2);" (assignment_expression "uVar2 = FUN_00271a10(uVar4,uVar2)" identifier = (call_expression "FUN_00271a10(uVar4,uVar2)" identifier (argument_list "(uVar4,uVar2)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = FUN_00275910(param_2,7,uVar2);" (assignment_expression "uVar3 = FUN_00275910(param_2,7,uVar2)" identifier = (call_expression "FUN_00275910(param_2,7,uVar2)" identifier (argument_list "(param_2,7,uVar2)" ( identifier , number_literal , identifier )))) ;) (expression_statement "FUN_002cb440(uVar3,*local_30,uVar2);" (call_expression "FUN_002cb440(uVar3,*local_30,uVar2)" identifier (argument_list "(uVar3,*local_30,uVar2)" ( identifier , (pointer_expression "*local_30" * identifier) , identifier ))) ;) (expression_statement "bVar11 = (int *)param_3[1] < piVar7;" (assignment_expression "bVar11 = (int *)param_3[1] < piVar7" identifier = (binary_expression "(int *)param_3[1] < piVar7" (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) < identifier)) ;) (expression_statement "bVar10 = (int *)param_3[1] == piVar7;" (assignment_expression "bVar10 = (int *)param_3[1] == piVar7" identifier = (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier)) ;) (if_statement "if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }" { (expression_statement "iVar5 = 8;" (assignment_expression "iVar5 = 8" identifier = number_literal) ;) (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" identifier = (pointer_expression "*local_30" * identifier)) ;) (expression_statement "pbVar8 = *(byte **)(local_2c + 0x20);" (assignment_expression "pbVar8 = *(byte **)(local_2c + 0x20)" identifier = (pointer_expression "*(byte **)(local_2c + 0x20)" * (cast_expression "(byte **)(local_2c + 0x20)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_2c + 0x20)" ( (binary_expression "local_2c + 0x20" identifier + number_literal) ))))) ;) (expression_statement "pbVar9 = (byte *)pcVar1;" (assignment_expression "pbVar9 = (byte *)pcVar1" identifier = (cast_expression "(byte *)pcVar1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);" do (compound_statement "{\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar8 < *pbVar9;" (assignment_expression "bVar11 = *pbVar8 < *pbVar9" identifier = (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar10 = *pbVar8 == *pbVar9;" (assignment_expression "bVar10 = *pbVar8 == *pbVar9" identifier = (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pbVar8 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar8 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pbVar9 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar9 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" 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          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }" else (compound_statement "{\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }" { (expression_statement "iVar5 = local_30[1];" (assignment_expression "iVar5 = local_30[1]" identifier = (subscript_expression "local_30[1]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = *(undefined4 *)(iVar5 + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(iVar5 + 0x58)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 0x58)" * (cast_expression "(undefined4 *)(iVar5 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x58)" ( (binary_expression "iVar5 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(iVar5 + 0x54);" (assignment_expression "uVar4 = *(uint *)(iVar5 + 0x54)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x54)" * (cast_expression "(uint *)(iVar5 + 0x54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x54)" ( (binary_expression "iVar5 + 0x54" identifier + number_literal) ))))) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar10 = (uVar4 & 0x400) == 0;" (assignment_expression "bVar10 = (uVar4 & 0x400) == 0" identifier = (binary_expression "(uVar4 & 0x400) == 0" (parenthesized_expression "(uVar4 & 0x400)" ( (binary_expression "uVar4 & 0x400" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }" if (parenthesized_expression "(!bVar10)" ( (unary_expression "!bVar10" ! identifier) )) (compound_statement "{\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }" { (do_statement "do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);" do (compound_statement "{\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            }" { (expression_statement "local_30 = piVar7;" (assignment_expression "local_30 = piVar7" identifier = identifier) ;) (expression_statement "uVar2 = FUN_00271a10(uVar4,uVar2);" (assignment_expression "uVar2 = FUN_00271a10(uVar4,uVar2)" identifier = (call_expression "FUN_00271a10(uVar4,uVar2)" identifier (argument_list "(uVar4,uVar2)" ( identifier , identifier )))) ;) (expression_statement "FUN_002cb440(uVar3,*local_30,uVar2);" (call_expression "FUN_002cb440(uVar3,*local_30,uVar2)" identifier (argument_list "(uVar3,*local_30,uVar2)" ( identifier , (pointer_expression "*local_30" * identifier) , identifier ))) ;) (expression_statement "piVar7 = local_30 + 1;" (assignment_expression "piVar7 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (expression_statement "bVar10 = (int *)param_3[1] < piVar7;" (assignment_expression "bVar10 = (int *)param_3[1] < piVar7" identifier = (binary_expression "(int *)param_3[1] < piVar7" (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) < identifier)) ;) (expression_statement "bVar12 = (int *)param_3[1] == piVar7;" (assignment_expression "bVar12 = (int *)param_3[1] == piVar7" identifier = (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (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 "uVar2 = *(undefined4 *)(local_30[1] + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(local_30[1] + 0x58)" identifier = (pointer_expression "*(undefined4 *)(local_30[1] + 0x58)" * (cast_expression "(undefined4 *)(local_30[1] + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30[1] + 0x58)" ( (binary_expression "local_30[1] + 0x58" (subscript_expression "local_30[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(local_30[1] + 0x54);" (assignment_expression "uVar4 = *(uint *)(local_30[1] + 0x54)" identifier = (pointer_expression "*(uint *)(local_30[1] + 0x54)" * (cast_expression "(uint *)(local_30[1] + 0x54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30[1] + 0x54)" ( (binary_expression "local_30[1] + 0x54" (subscript_expression "local_30[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar12 = (uVar4 & 0x400) == 0;" (assignment_expression "bVar12 = (uVar4 & 0x400) == 0" identifier = (binary_expression "(uVar4 & 0x400) == 0" (parenthesized_expression "(uVar4 & 0x400)" ( (binary_expression "uVar4 & 0x400" identifier & number_literal) )) == number_literal)) ;) }) while (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) ;) (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" identifier = (pointer_expression "*local_30" * identifier)) ;) (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (goto_statement "goto LAB_003326f9;" goto statement_identifier ;) })) (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" identifier = number_literal) ;) (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" identifier = (pointer_expression "*local_30" * identifier)) ;) (expression_statement "pbVar8 = *(byte **)(local_2c + 0x20);" (assignment_expression "pbVar8 = *(byte **)(local_2c + 0x20)" identifier = (pointer_expression "*(byte **)(local_2c + 0x20)" * (cast_expression "(byte **)(local_2c + 0x20)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_2c + 0x20)" ( (binary_expression "local_2c + 0x20" identifier + number_literal) ))))) ;) (expression_statement "pbVar9 = (byte *)pcVar1;" (assignment_expression "pbVar9 = (byte *)pcVar1" identifier = (cast_expression "(byte *)pcVar1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);" do (compound_statement "{\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar8 < *pbVar9;" (assignment_expression "bVar11 = *pbVar8 < *pbVar9" identifier = (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar10 = *pbVar8 == *pbVar9;" (assignment_expression "bVar10 = *pbVar8 == *pbVar9" identifier = (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pbVar8 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar8 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pbVar9 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar9 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar10)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\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            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }" { (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (expression_statement "local_30 = piVar7;" (assignment_expression "local_30 = piVar7" identifier = identifier) ;) (expression_statement "local_2c = iVar5;" (assignment_expression "local_2c = iVar5" identifier = identifier) ;) (goto_statement "goto LAB_003326da;" goto statement_identifier ;) })) }))) (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" identifier = true) ;) (labeled_statement "LAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));" statement_identifier : (expression_statement "uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));" (assignment_expression "uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58))" identifier = (call_expression "FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58))" identifier (argument_list "(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58))" ( (pointer_expression "*(undefined4 *)(local_2c + 0x54)" * (cast_expression "(undefined4 *)(local_2c + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x54)" ( (binary_expression "local_2c + 0x54" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(local_2c + 0x58)" * (cast_expression "(undefined4 *)(local_2c + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x58)" ( (binary_expression "local_2c + 0x58" identifier + number_literal) )))) )))) ;)) (expression_statement "uVar3 = FUN_00275910(param_2,3,uVar2);" (assignment_expression "uVar3 = FUN_00275910(param_2,3,uVar2)" identifier = (call_expression "FUN_00275910(param_2,3,uVar2)" identifier (argument_list "(param_2,3,uVar2)" ( identifier , number_literal , identifier )))) ;) (expression_statement "FUN_002cb440(uVar3,*local_30,uVar2);" (call_expression "FUN_002cb440(uVar3,*local_30,uVar2)" identifier (argument_list "(uVar3,*local_30,uVar2)" ( identifier , (pointer_expression "*local_30" * identifier) , identifier ))) ;) (if_statement "if ((int *)param_3[1] == piVar7) break;" if (parenthesized_expression "((int *)param_3[1] == piVar7)" ( (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) }))) (expression_statement "local_2c = local_30[1];" (assignment_expression "local_2c = local_30[1]" identifier = (subscript_expression "local_30[1]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = *(undefined4 *)(local_2c + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(local_2c + 0x58)" identifier = (pointer_expression "*(undefined4 *)(local_2c + 0x58)" * (cast_expression "(undefined4 *)(local_2c + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x58)" ( (binary_expression "local_2c + 0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(local_2c + 0x54);" (assignment_expression "uVar4 = *(uint *)(local_2c + 0x54)" identifier = (pointer_expression "*(uint *)(local_2c + 0x54)" * (cast_expression "(uint *)(local_2c + 0x54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 0x54)" ( (binary_expression "local_2c + 0x54" identifier + number_literal) ))))) ;) (expression_statement "local_30 = piVar7;" (assignment_expression "local_30 = piVar7" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "param_1[0x1f] = '\x01';" (assignment_expression "param_1[0x1f] = '\x01'" (subscript_expression "param_1[0x1f]" 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 TYPE (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 TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 , 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 TYPE (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) ))))) ;) (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) )))) , (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 TYPE (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 = (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 *)) ) IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (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 TYPE (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 = (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 , 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 TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (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 ( (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 , 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 TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (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 = (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 = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 *)) ) IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (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 = IDENT) ;) (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) )))) , (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 TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (break_statement break ;)) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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_00332630(char *param_1,undefined4 param_2,uint *param_3)\n\n{\n  char *pcVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int *piVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  int *local_30;\n  int local_2c;\n  \n  bVar13 = 0;\n  if ((*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0)) {\n                    \n    FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  local_30 = (int *)*param_3;\n  if (local_30 != (int *)param_3[1]) {\n    pcVar1 = ".interp";\n    bVar11 = false;\n    local_2c = *local_30;\n    uVar2 = *(undefined4 *)(local_2c + 0x58);\n    uVar4 = *(uint *)(local_2c + 0x54);\nLAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );\n  }\n  param_1[0x1f] = '\x01';\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00332630(char *param_1,undefined4 param_2,uint *param_3)" (identifier "FUN_00332630") (parameter_list "(char *param_1,undefined4 param_2,uint *param_3)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "uint *param_3" (type_identifier "uint") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  char *pcVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int *piVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  int *local_30;\n  int local_2c;\n  \n  bVar13 = 0;\n  if ((*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0)) {\n                    \n    FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }\n  local_30 = (int *)*param_3;\n  if (local_30 != (int *)param_3[1]) {\n    pcVar1 = ".interp";\n    bVar11 = false;\n    local_2c = *local_30;\n    uVar2 = *(undefined4 *)(local_2c + 0x58);\n    uVar4 = *(uint *)(local_2c + 0x54);\nLAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );\n  }\n  param_1[0x1f] = '\x01';\n  return;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (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") (; ";")) (declaration "int *local_30;" (primitive_type "int") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" (identifier "bVar13") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0)) {\n                    \n    FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }" (if "if") (parenthesized_expression "((*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0))" (( "(") (binary_expression "(*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 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 "(*(int *)(param_1 + 0x10) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");\n  }" ({ "{") (expression_statement "FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");" (call_expression "FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments")" (identifier "FUN_002446e0") (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 "local_30 = (int *)*param_3;" (assignment_expression "local_30 = (int *)*param_3" (identifier "local_30") (= "=") (cast_expression "(int *)*param_3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3")))) (; ";")) (if_statement "if (local_30 != (int *)param_3[1]) {\n    pcVar1 = ".interp";\n    bVar11 = false;\n    local_2c = *local_30;\n    uVar2 = *(undefined4 *)(local_2c + 0x58);\n    uVar4 = *(uint *)(local_2c + 0x54);\nLAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );\n  }" (if "if") (parenthesized_expression "(local_30 != (int *)param_3[1])" (( "(") (binary_expression "local_30 != (int *)param_3[1]" (identifier "local_30") (!= "!=") (cast_expression "(int *)param_3[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n    pcVar1 = ".interp";\n    bVar11 = false;\n    local_2c = *local_30;\n    uVar2 = *(undefined4 *)(local_2c + 0x58);\n    uVar4 = *(uint *)(local_2c + 0x54);\nLAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );\n  }" ({ "{") (expression_statement "pcVar1 = ".interp";" (assignment_expression "pcVar1 = ".interp"" (identifier "pcVar1") (= "=") (string_literal "".interp"" (" """) (string_content ".interp") (" """))) (; ";")) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (; ";")) (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" (identifier "local_2c") (= "=") (pointer_expression "*local_30" (* "*") (identifier "local_30"))) (; ";")) (expression_statement "uVar2 = *(undefined4 *)(local_2c + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(local_2c + 0x58)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(local_2c + 0x58)" (* "*") (cast_expression "(undefined4 *)(local_2c + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x58)" (( "(") (binary_expression "local_2c + 0x58" (identifier "local_2c") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(local_2c + 0x54);" (assignment_expression "uVar4 = *(uint *)(local_2c + 0x54)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(local_2c + 0x54)" (* "*") (cast_expression "(uint *)(local_2c + 0x54)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x54)" (( "(") (binary_expression "local_2c + 0x54" (identifier "local_2c") (+ "+") (number_literal "0x54")) () ")"))))) (; ";")) (labeled_statement "LAB_003326da:\n    do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );" (statement_identifier "LAB_003326da") (: ":") (do_statement "do {\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    } while( true );" (do "do") (compound_statement "{\n      piVar7 = local_30 + 1;\n      if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }\n      bVar10 = false;\n      bVar12 = (uVar4 & 0x400) == 0;\n      if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      local_2c = local_30[1];\n      uVar2 = *(undefined4 *)(local_2c + 0x58);\n      uVar4 = *(uint *)(local_2c + 0x54);\n      local_30 = piVar7;\n    }" ({ "{") (expression_statement "piVar7 = local_30 + 1;" (assignment_expression "piVar7 = local_30 + 1" (identifier "piVar7") (= "=") (binary_expression "local_30 + 1" (identifier "local_30") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(int *)(local_2c + 0x50) == 7) {\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }" (if "if") (parenthesized_expression "(*(int *)(local_2c + 0x50) == 7)" (( "(") (binary_expression "*(int *)(local_2c + 0x50) == 7" (pointer_expression "*(int *)(local_2c + 0x50)" (* "*") (cast_expression "(int *)(local_2c + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x50)" (( "(") (binary_expression "local_2c + 0x50" (identifier "local_2c") (+ "+") (number_literal "0x50")) () ")")))) (== "==") (number_literal "7")) () ")")) (compound_statement "{\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,4,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n      }" ({ "{") (expression_statement "uVar2 = FUN_00271a10(uVar4,uVar2);" (assignment_expression "uVar2 = FUN_00271a10(uVar4,uVar2)" (identifier "uVar2") (= "=") (call_expression "FUN_00271a10(uVar4,uVar2)" (identifier "FUN_00271a10") (argument_list "(uVar4,uVar2)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar2") () ")")))) (; ";")) (expression_statement "uVar3 = FUN_00275910(param_2,4,uVar2);" (assignment_expression "uVar3 = FUN_00275910(param_2,4,uVar2)" (identifier "uVar3") (= "=") (call_expression "FUN_00275910(param_2,4,uVar2)" (identifier "FUN_00275910") (argument_list "(param_2,4,uVar2)" (( "(") (identifier "param_2") (, ",") (number_literal "4") (, ",") (identifier "uVar2") () ")")))) (; ";")) (expression_statement "FUN_002cb440(uVar3,*local_30,uVar2);" (call_expression "FUN_002cb440(uVar3,*local_30,uVar2)" (identifier "FUN_002cb440") (argument_list "(uVar3,*local_30,uVar2)" (( "(") (identifier "uVar3") (, ",") (pointer_expression "*local_30" (* "*") (identifier "local_30")) (, ",") (identifier "uVar2") () ")"))) (; ";")) (if_statement "if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }\n        else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }" (if "if") (parenthesized_expression "(((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7))" (( "(") (binary_expression "((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)" (parenthesized_expression "((int *)param_3[1] == piVar7)" (( "(") (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "piVar7")) () ")")) (|| "||") (parenthesized_expression "(iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)" (( "(") (comma_expression "iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7" (assignment_expression "iVar5 = local_30[1]" (identifier "iVar5") (= "=") (subscript_expression "local_30[1]" (identifier "local_30") ([ "[") (number_literal "1") (] "]"))) (, ",") (binary_expression "*(int *)(iVar5 + 0x50) != 7" (pointer_expression "*(int *)(iVar5 + 0x50)" (* "*") (cast_expression "(int *)(iVar5 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x50)" (( "(") (binary_expression "iVar5 + 0x50" (identifier "iVar5") (+ "+") (number_literal "0x50")) () ")")))) (!= "!=") (number_literal "7"))) () ")"))) () ")")) (compound_statement "{\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }" ({ "{") (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" (identifier "local_2c") (= "=") (pointer_expression "*local_30" (* "*") (identifier "local_30"))) (; ";")) (expression_statement "uVar2 = *(undefined4 *)(local_2c + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(local_2c + 0x58)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(local_2c + 0x58)" (* "*") (cast_expression "(undefined4 *)(local_2c + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x58)" (( "(") (binary_expression "local_2c + 0x58" (identifier "local_2c") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(local_2c + 0x54);" (assignment_expression "uVar4 = *(uint *)(local_2c + 0x54)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(local_2c + 0x54)" (* "*") (cast_expression "(uint *)(local_2c + 0x54)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x54)" (( "(") (binary_expression "local_2c + 0x54" (identifier "local_2c") (+ "+") (number_literal "0x54")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }" (else "else") (compound_statement "{\n          do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);\n          local_2c = *local_30;\n          uVar2 = *(undefined4 *)(local_2c + 0x58);\n          uVar4 = *(uint *)(local_2c + 0x54);\n        }" ({ "{") (do_statement "do {\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          } while (*(int *)(iVar5 + 0x50) == 7);" (do "do") (compound_statement "{\n            local_30 = piVar7;\n            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));\n            FUN_002cb440(uVar3,*local_30,uVar2);\n            piVar7 = local_30 + 1;\n            if ((int *)param_3[1] == piVar7) break;\n            iVar5 = local_30[1];\n          }" ({ "{") (expression_statement "local_30 = piVar7;" (assignment_expression "local_30 = piVar7" (identifier "local_30") (= "=") (identifier "piVar7")) (; ";")) (expression_statement "uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));" (assignment_expression "uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58))" (identifier "uVar2") (= "=") (call_expression "FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58))" (identifier "FUN_00271a10") (argument_list "(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58))" (( "(") (pointer_expression "*(undefined4 *)(iVar5 + 0x54)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x54)" (( "(") (binary_expression "iVar5 + 0x54" (identifier "iVar5") (+ "+") (number_literal "0x54")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar5 + 0x58)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x58)" (( "(") (binary_expression "iVar5 + 0x58" (identifier "iVar5") (+ "+") (number_literal "0x58")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_002cb440(uVar3,*local_30,uVar2);" (call_expression "FUN_002cb440(uVar3,*local_30,uVar2)" (identifier "FUN_002cb440") (argument_list "(uVar3,*local_30,uVar2)" (( "(") (identifier "uVar3") (, ",") (pointer_expression "*local_30" (* "*") (identifier "local_30")) (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "piVar7 = local_30 + 1;" (assignment_expression "piVar7 = local_30 + 1" (identifier "piVar7") (= "=") (binary_expression "local_30 + 1" (identifier "local_30") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((int *)param_3[1] == piVar7) break;" (if "if") (parenthesized_expression "((int *)param_3[1] == piVar7)" (( "(") (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "piVar7")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = local_30[1];" (assignment_expression "iVar5 = local_30[1]" (identifier "iVar5") (= "=") (subscript_expression "local_30[1]" (identifier "local_30") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(int *)(iVar5 + 0x50) == 7)" (( "(") (binary_expression "*(int *)(iVar5 + 0x50) == 7" (pointer_expression "*(int *)(iVar5 + 0x50)" (* "*") (cast_expression "(int *)(iVar5 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x50)" (( "(") (binary_expression "iVar5 + 0x50" (identifier "iVar5") (+ "+") (number_literal "0x50")) () ")")))) (== "==") (number_literal "7")) () ")")) (; ";")) (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" (identifier "local_2c") (= "=") (pointer_expression "*local_30" (* "*") (identifier "local_30"))) (; ";")) (expression_statement "uVar2 = *(undefined4 *)(local_2c + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(local_2c + 0x58)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(local_2c + 0x58)" (* "*") (cast_expression "(undefined4 *)(local_2c + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x58)" (( "(") (binary_expression "local_2c + 0x58" (identifier "local_2c") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(local_2c + 0x54);" (assignment_expression "uVar4 = *(uint *)(local_2c + 0x54)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(local_2c + 0x54)" (* "*") (cast_expression "(uint *)(local_2c + 0x54)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x54)" (( "(") (binary_expression "local_2c + 0x54" (identifier "local_2c") (+ "+") (number_literal "0x54")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" (identifier "bVar10") (= "=") (false "false")) (; ";")) (expression_statement "bVar12 = (uVar4 & 0x400) == 0;" (assignment_expression "bVar12 = (uVar4 & 0x400) == 0" (identifier "bVar12") (= "=") (binary_expression "(uVar4 & 0x400) == 0" (parenthesized_expression "(uVar4 & 0x400)" (( "(") (binary_expression "uVar4 & 0x400" (identifier "uVar4") (& "&") (number_literal "0x400")) () ")")) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar12) {\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }\n      else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }" (if "if") (parenthesized_expression "(bVar12)" (( "(") (identifier "bVar12") () ")")) (compound_statement "{\nLAB_003326f9:\n        iVar5 = 8;\n        pbVar8 = *(byte **)(local_2c + 0x20);\n        pbVar9 = (byte *)pcVar1;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);\n        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;\n        if ((int *)param_3[1] == piVar7) break;\n      }" ({ "{") (labeled_statement "LAB_003326f9:\n        iVar5 = 8;" (statement_identifier "LAB_003326f9") (: ":") (expression_statement "iVar5 = 8;" (assignment_expression "iVar5 = 8" (identifier "iVar5") (= "=") (number_literal "8")) (; ";"))) (expression_statement "pbVar8 = *(byte **)(local_2c + 0x20);" (assignment_expression "pbVar8 = *(byte **)(local_2c + 0x20)" (identifier "pbVar8") (= "=") (pointer_expression "*(byte **)(local_2c + 0x20)" (* "*") (cast_expression "(byte **)(local_2c + 0x20)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_2c + 0x20)" (( "(") (binary_expression "local_2c + 0x20" (identifier "local_2c") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "pbVar9 = (byte *)pcVar1;" (assignment_expression "pbVar9 = (byte *)pcVar1" (identifier "pbVar9") (= "=") (cast_expression "(byte *)pcVar1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar1"))) (; ";")) (do_statement "do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        } while (bVar12);" (do "do") (compound_statement "{\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar12 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n        }" ({ "{") (if_statement "if (iVar5 == 0) break;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar10 = *pbVar8 < *pbVar9;" (assignment_expression "bVar10 = *pbVar8 < *pbVar9" (identifier "bVar10") (= "=") (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (< "<") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")))) (; ";")) (expression_statement "bVar12 = *pbVar8 == *pbVar9;" (assignment_expression "bVar12 = *pbVar8 == *pbVar9" (identifier "bVar12") (= "=") (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (== "==") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")))) (; ";")) (expression_statement "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar8 + (uint)bVar13 * -2" (identifier "pbVar8") (+ "+") (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar9 + (uint)bVar13 * -2" (identifier "pbVar9") (+ "+") (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar12)" (( "(") (identifier "bVar12") () ")")) (; ";")) (if_statement "if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;" (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_00332714;" (goto "goto") (statement_identifier "LAB_00332714") (; ";"))) (if_statement "if ((int *)param_3[1] == piVar7) break;" (if "if") (parenthesized_expression "((int *)param_3[1] == piVar7)" (( "(") (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "piVar7")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (else_clause "else {\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }" (else "else") (compound_statement "{\n        if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }\n        uVar2 = FUN_00271a10(uVar4,uVar2);\n        uVar3 = FUN_00275910(param_2,7,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        bVar11 = (int *)param_3[1] < piVar7;\n        bVar10 = (int *)param_3[1] == piVar7;\n        if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }\n        bVar11 = true;\nLAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));\n        uVar3 = FUN_00275910(param_2,3,uVar2);\n        FUN_002cb440(uVar3,*local_30,uVar2);\n        if ((int *)param_3[1] == piVar7) break;\n      }" ({ "{") (if_statement "if (bVar11) {\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\n        }" (if "if") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (compound_statement "{\n          uVar2 = gettext("TLS sections are not adjacent");\n          FUN_0023b810(uVar2);\n          uVar2 = *(undefined4 *)(*local_30 + 0x58);\n          uVar4 = *(uint *)(*local_30 + 0x54);\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_0023b810(uVar2);" (call_expression "FUN_0023b810(uVar2)" (identifier "FUN_0023b810") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "uVar2 = *(undefined4 *)(*local_30 + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(*local_30 + 0x58)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(*local_30 + 0x58)" (* "*") (cast_expression "(undefined4 *)(*local_30 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*local_30 + 0x58)" (( "(") (binary_expression "*local_30 + 0x58" (pointer_expression "*local_30" (* "*") (identifier "local_30")) (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(*local_30 + 0x54);" (assignment_expression "uVar4 = *(uint *)(*local_30 + 0x54)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(*local_30 + 0x54)" (* "*") (cast_expression "(uint *)(*local_30 + 0x54)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*local_30 + 0x54)" (( "(") (binary_expression "*local_30 + 0x54" (pointer_expression "*local_30" (* "*") (identifier "local_30")) (+ "+") (number_literal "0x54")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar2 = FUN_00271a10(uVar4,uVar2);" (assignment_expression "uVar2 = FUN_00271a10(uVar4,uVar2)" (identifier "uVar2") (= "=") (call_expression "FUN_00271a10(uVar4,uVar2)" (identifier "FUN_00271a10") (argument_list "(uVar4,uVar2)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar2") () ")")))) (; ";")) (expression_statement "uVar3 = FUN_00275910(param_2,7,uVar2);" (assignment_expression "uVar3 = FUN_00275910(param_2,7,uVar2)" (identifier "uVar3") (= "=") (call_expression "FUN_00275910(param_2,7,uVar2)" (identifier "FUN_00275910") (argument_list "(param_2,7,uVar2)" (( "(") (identifier "param_2") (, ",") (number_literal "7") (, ",") (identifier "uVar2") () ")")))) (; ";")) (expression_statement "FUN_002cb440(uVar3,*local_30,uVar2);" (call_expression "FUN_002cb440(uVar3,*local_30,uVar2)" (identifier "FUN_002cb440") (argument_list "(uVar3,*local_30,uVar2)" (( "(") (identifier "uVar3") (, ",") (pointer_expression "*local_30" (* "*") (identifier "local_30")) (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "bVar11 = (int *)param_3[1] < piVar7;" (assignment_expression "bVar11 = (int *)param_3[1] < piVar7" (identifier "bVar11") (= "=") (binary_expression "(int *)param_3[1] < piVar7" (cast_expression "(int *)param_3[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (< "<") (identifier "piVar7"))) (; ";")) (expression_statement "bVar10 = (int *)param_3[1] == piVar7;" (assignment_expression "bVar10 = (int *)param_3[1] == piVar7" (identifier "bVar10") (= "=") (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "piVar7"))) (; ";")) (if_statement "if (bVar10) {\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }\n        else {\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }" (if "if") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (compound_statement "{\n          iVar5 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) break;\n        }" ({ "{") (expression_statement "iVar5 = 8;" (assignment_expression "iVar5 = 8" (identifier "iVar5") (= "=") (number_literal "8")) (; ";")) (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" (identifier "local_2c") (= "=") (pointer_expression "*local_30" (* "*") (identifier "local_30"))) (; ";")) (expression_statement "pbVar8 = *(byte **)(local_2c + 0x20);" (assignment_expression "pbVar8 = *(byte **)(local_2c + 0x20)" (identifier "pbVar8") (= "=") (pointer_expression "*(byte **)(local_2c + 0x20)" (* "*") (cast_expression "(byte **)(local_2c + 0x20)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_2c + 0x20)" (( "(") (binary_expression "local_2c + 0x20" (identifier "local_2c") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "pbVar9 = (byte *)pcVar1;" (assignment_expression "pbVar9 = (byte *)pcVar1" (identifier "pbVar9") (= "=") (cast_expression "(byte *)pcVar1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar1"))) (; ";")) (do_statement "do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);" (do "do") (compound_statement "{\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          }" ({ "{") (if_statement "if (iVar5 == 0) break;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar11 = *pbVar8 < *pbVar9;" (assignment_expression "bVar11 = *pbVar8 < *pbVar9" (identifier "bVar11") (= "=") (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (< "<") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")))) (; ";")) (expression_statement "bVar10 = *pbVar8 == *pbVar9;" (assignment_expression "bVar10 = *pbVar8 == *pbVar9" (identifier "bVar10") (= "=") (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (== "==") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")))) (; ";")) (expression_statement "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar8 + (uint)bVar13 * -2" (identifier "pbVar8") (+ "+") (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar9 + (uint)bVar13 * -2" (identifier "pbVar9") (+ "+") (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (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          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }" (else "else") (compound_statement "{\n          iVar5 = local_30[1];\n          uVar2 = *(undefined4 *)(iVar5 + 0x58);\n          uVar4 = *(uint *)(iVar5 + 0x54);\n          bVar11 = false;\n          bVar10 = (uVar4 & 0x400) == 0;\n          if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }\n          iVar6 = 8;\n          local_2c = *local_30;\n          pbVar8 = *(byte **)(local_2c + 0x20);\n          pbVar9 = (byte *)pcVar1;\n          do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar11 && !bVar10) != bVar11) {\n            bVar11 = true;\n            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }\n        }" ({ "{") (expression_statement "iVar5 = local_30[1];" (assignment_expression "iVar5 = local_30[1]" (identifier "iVar5") (= "=") (subscript_expression "local_30[1]" (identifier "local_30") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar2 = *(undefined4 *)(iVar5 + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(iVar5 + 0x58)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(iVar5 + 0x58)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x58)" (( "(") (binary_expression "iVar5 + 0x58" (identifier "iVar5") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(iVar5 + 0x54);" (assignment_expression "uVar4 = *(uint *)(iVar5 + 0x54)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(iVar5 + 0x54)" (* "*") (cast_expression "(uint *)(iVar5 + 0x54)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x54)" (( "(") (binary_expression "iVar5 + 0x54" (identifier "iVar5") (+ "+") (number_literal "0x54")) () ")"))))) (; ";")) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (; ";")) (expression_statement "bVar10 = (uVar4 & 0x400) == 0;" (assignment_expression "bVar10 = (uVar4 & 0x400) == 0" (identifier "bVar10") (= "=") (binary_expression "(uVar4 & 0x400) == 0" (parenthesized_expression "(uVar4 & 0x400)" (( "(") (binary_expression "uVar4 & 0x400" (identifier "uVar4") (& "&") (number_literal "0x400")) () ")")) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (!bVar10) {\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }" (if "if") (parenthesized_expression "(!bVar10)" (( "(") (unary_expression "!bVar10" (! "!") (identifier "bVar10")) () ")")) (compound_statement "{\n            do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);\n            local_2c = *local_30;\n            bVar11 = true;\n            goto LAB_003326f9;\n          }" ({ "{") (do_statement "do {\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            } while (!bVar12);" (do "do") (compound_statement "{\n              local_30 = piVar7;\n              uVar2 = FUN_00271a10(uVar4,uVar2);\n              FUN_002cb440(uVar3,*local_30,uVar2);\n              piVar7 = local_30 + 1;\n              bVar10 = (int *)param_3[1] < piVar7;\n              bVar12 = (int *)param_3[1] == piVar7;\n              if (bVar12) break;\n              uVar2 = *(undefined4 *)(local_30[1] + 0x58);\n              uVar4 = *(uint *)(local_30[1] + 0x54);\n              bVar10 = false;\n              bVar12 = (uVar4 & 0x400) == 0;\n            }" ({ "{") (expression_statement "local_30 = piVar7;" (assignment_expression "local_30 = piVar7" (identifier "local_30") (= "=") (identifier "piVar7")) (; ";")) (expression_statement "uVar2 = FUN_00271a10(uVar4,uVar2);" (assignment_expression "uVar2 = FUN_00271a10(uVar4,uVar2)" (identifier "uVar2") (= "=") (call_expression "FUN_00271a10(uVar4,uVar2)" (identifier "FUN_00271a10") (argument_list "(uVar4,uVar2)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar2") () ")")))) (; ";")) (expression_statement "FUN_002cb440(uVar3,*local_30,uVar2);" (call_expression "FUN_002cb440(uVar3,*local_30,uVar2)" (identifier "FUN_002cb440") (argument_list "(uVar3,*local_30,uVar2)" (( "(") (identifier "uVar3") (, ",") (pointer_expression "*local_30" (* "*") (identifier "local_30")) (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "piVar7 = local_30 + 1;" (assignment_expression "piVar7 = local_30 + 1" (identifier "piVar7") (= "=") (binary_expression "local_30 + 1" (identifier "local_30") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar10 = (int *)param_3[1] < piVar7;" (assignment_expression "bVar10 = (int *)param_3[1] < piVar7" (identifier "bVar10") (= "=") (binary_expression "(int *)param_3[1] < piVar7" (cast_expression "(int *)param_3[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (< "<") (identifier "piVar7"))) (; ";")) (expression_statement "bVar12 = (int *)param_3[1] == piVar7;" (assignment_expression "bVar12 = (int *)param_3[1] == piVar7" (identifier "bVar12") (= "=") (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "piVar7"))) (; ";")) (if_statement "if (bVar12) break;" (if "if") (parenthesized_expression "(bVar12)" (( "(") (identifier "bVar12") () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar2 = *(undefined4 *)(local_30[1] + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(local_30[1] + 0x58)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(local_30[1] + 0x58)" (* "*") (cast_expression "(undefined4 *)(local_30[1] + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_30[1] + 0x58)" (( "(") (binary_expression "local_30[1] + 0x58" (subscript_expression "local_30[1]" (identifier "local_30") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(local_30[1] + 0x54);" (assignment_expression "uVar4 = *(uint *)(local_30[1] + 0x54)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(local_30[1] + 0x54)" (* "*") (cast_expression "(uint *)(local_30[1] + 0x54)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_30[1] + 0x54)" (( "(") (binary_expression "local_30[1] + 0x54" (subscript_expression "local_30[1]" (identifier "local_30") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x54")) () ")"))))) (; ";")) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" (identifier "bVar10") (= "=") (false "false")) (; ";")) (expression_statement "bVar12 = (uVar4 & 0x400) == 0;" (assignment_expression "bVar12 = (uVar4 & 0x400) == 0" (identifier "bVar12") (= "=") (binary_expression "(uVar4 & 0x400) == 0" (parenthesized_expression "(uVar4 & 0x400)" (( "(") (binary_expression "uVar4 & 0x400" (identifier "uVar4") (& "&") (number_literal "0x400")) () ")")) (== "==") (number_literal "0"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(!bVar12)" (( "(") (unary_expression "!bVar12" (! "!") (identifier "bVar12")) () ")")) (; ";")) (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" (identifier "local_2c") (= "=") (pointer_expression "*local_30" (* "*") (identifier "local_30"))) (; ";")) (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" (identifier "bVar11") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_003326f9;" (goto "goto") (statement_identifier "LAB_003326f9") (; ";")) (} "}"))) (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" (identifier "iVar6") (= "=") (number_literal "8")) (; ";")) (expression_statement "local_2c = *local_30;" (assignment_expression "local_2c = *local_30" (identifier "local_2c") (= "=") (pointer_expression "*local_30" (* "*") (identifier "local_30"))) (; ";")) (expression_statement "pbVar8 = *(byte **)(local_2c + 0x20);" (assignment_expression "pbVar8 = *(byte **)(local_2c + 0x20)" (identifier "pbVar8") (= "=") (pointer_expression "*(byte **)(local_2c + 0x20)" (* "*") (cast_expression "(byte **)(local_2c + 0x20)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_2c + 0x20)" (( "(") (binary_expression "local_2c + 0x20" (identifier "local_2c") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "pbVar9 = (byte *)pcVar1;" (assignment_expression "pbVar9 = (byte *)pcVar1" (identifier "pbVar9") (= "=") (cast_expression "(byte *)pcVar1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar1"))) (; ";")) (do_statement "do {\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          } while (bVar10);" (do "do") (compound_statement "{\n            if (iVar6 == 0) break;\n            iVar6 = iVar6 + -1;\n            bVar11 = *pbVar8 < *pbVar9;\n            bVar10 = *pbVar8 == *pbVar9;\n            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;\n            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;\n          }" ({ "{") (if_statement "if (iVar6 == 0) break;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar11 = *pbVar8 < *pbVar9;" (assignment_expression "bVar11 = *pbVar8 < *pbVar9" (identifier "bVar11") (= "=") (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (< "<") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")))) (; ";")) (expression_statement "bVar10 = *pbVar8 == *pbVar9;" (assignment_expression "bVar10 = *pbVar8 == *pbVar9" (identifier "bVar10") (= "=") (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (== "==") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")))) (; ";")) (expression_statement "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar8 + (uint)bVar13 * -2" (identifier "pbVar8") (+ "+") (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + (uint)bVar13 * -2 + 1" (binary_expression "pbVar9 + (uint)bVar13 * -2" (identifier "pbVar9") (+ "+") (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (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            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\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            local_30 = piVar7;\n            local_2c = iVar5;\n            goto LAB_003326da;\n          }" ({ "{") (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" (identifier "bVar11") (= "=") (true "true")) (; ";")) (expression_statement "local_30 = piVar7;" (assignment_expression "local_30 = piVar7" (identifier "local_30") (= "=") (identifier "piVar7")) (; ";")) (expression_statement "local_2c = iVar5;" (assignment_expression "local_2c = iVar5" (identifier "local_2c") (= "=") (identifier "iVar5")) (; ";")) (goto_statement "goto LAB_003326da;" (goto "goto") (statement_identifier "LAB_003326da") (; ";")) (} "}"))) (} "}")))) (expression_statement "bVar11 = true;" (assignment_expression "bVar11 = true" (identifier "bVar11") (= "=") (true "true")) (; ";")) (labeled_statement "LAB_00332714:\n        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));" (statement_identifier "LAB_00332714") (: ":") (expression_statement "uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));" (assignment_expression "uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58))" (identifier "uVar2") (= "=") (call_expression "FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58))" (identifier "FUN_00271a10") (argument_list "(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58))" (( "(") (pointer_expression "*(undefined4 *)(local_2c + 0x54)" (* "*") (cast_expression "(undefined4 *)(local_2c + 0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x54)" (( "(") (binary_expression "local_2c + 0x54" (identifier "local_2c") (+ "+") (number_literal "0x54")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(local_2c + 0x58)" (* "*") (cast_expression "(undefined4 *)(local_2c + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x58)" (( "(") (binary_expression "local_2c + 0x58" (identifier "local_2c") (+ "+") (number_literal "0x58")) () ")")))) () ")")))) (; ";"))) (expression_statement "uVar3 = FUN_00275910(param_2,3,uVar2);" (assignment_expression "uVar3 = FUN_00275910(param_2,3,uVar2)" (identifier "uVar3") (= "=") (call_expression "FUN_00275910(param_2,3,uVar2)" (identifier "FUN_00275910") (argument_list "(param_2,3,uVar2)" (( "(") (identifier "param_2") (, ",") (number_literal "3") (, ",") (identifier "uVar2") () ")")))) (; ";")) (expression_statement "FUN_002cb440(uVar3,*local_30,uVar2);" (call_expression "FUN_002cb440(uVar3,*local_30,uVar2)" (identifier "FUN_002cb440") (argument_list "(uVar3,*local_30,uVar2)" (( "(") (identifier "uVar3") (, ",") (pointer_expression "*local_30" (* "*") (identifier "local_30")) (, ",") (identifier "uVar2") () ")"))) (; ";")) (if_statement "if ((int *)param_3[1] == piVar7) break;" (if "if") (parenthesized_expression "((int *)param_3[1] == piVar7)" (( "(") (binary_expression "(int *)param_3[1] == piVar7" (cast_expression "(int *)param_3[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "piVar7")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")))) (expression_statement "local_2c = local_30[1];" (assignment_expression "local_2c = local_30[1]" (identifier "local_2c") (= "=") (subscript_expression "local_30[1]" (identifier "local_30") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar2 = *(undefined4 *)(local_2c + 0x58);" (assignment_expression "uVar2 = *(undefined4 *)(local_2c + 0x58)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(local_2c + 0x58)" (* "*") (cast_expression "(undefined4 *)(local_2c + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x58)" (( "(") (binary_expression "local_2c + 0x58" (identifier "local_2c") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(local_2c + 0x54);" (assignment_expression "uVar4 = *(uint *)(local_2c + 0x54)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(local_2c + 0x54)" (* "*") (cast_expression "(uint *)(local_2c + 0x54)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 0x54)" (( "(") (binary_expression "local_2c + 0x54" (identifier "local_2c") (+ "+") (number_literal "0x54")) () ")"))))) (; ";")) (expression_statement "local_30 = piVar7;" (assignment_expression "local_30 = piVar7" (identifier "local_30") (= "=") (identifier "piVar7")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}"))) (expression_statement "param_1[0x1f] = '\x01';" (assignment_expression "param_1[0x1f] = '\x01'" (subscript_expression "param_1[0x1f]" (identifier "param_1") ([ "[") (number_literal "0x1f") (] "]")) (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* 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::type_1::function_1
          (type_1 *this,type_2 *layout,type_3 *sections)

{
}


(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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) 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)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) 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: (primitive_type) 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: (primitive_type) 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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (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: (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))))))) (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) (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: (primitive_type) 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))))))) (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))))) (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: (primitive_type) 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: (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: (identifier)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (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: (primitive_type) 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: (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) (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: (primitive_type) 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: (primitive_type) 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: (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 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: (identifier)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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 (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) (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: (primitive_type) 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: (primitive_type) 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: (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: (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 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: (identifier)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (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: (identifier))) (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))))) (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: (primitive_type) 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)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (identifier)))) condition: (parenthesized_expression (true)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) (return_statement))))

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

void MASKED(char *param_1,undefined4 param_2,uint *param_3)

{
  char *pcVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  int *piVar7;
  byte *pbVar8;
  byte *pbVar9;
  bool bVar10;
  bool bVar11;
  bool bVar12;
  byte bVar13;
  int *local_30;
  int local_2c;
  
  bVar13 = 0;
  if ((*param_1 != '\0') && (*(int *)(param_1 + 0x10) != 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/script-sections.cc",0x102a,"create_note_and_tls_segments");
  }
  local_30 = (int *)*param_3;
  if (local_30 != (int *)param_3[1]) {
    pcVar1 = ".interp";
    bVar11 = false;
    local_2c = *local_30;
    uVar2 = *(undefined4 *)(local_2c + 0x58);
    uVar4 = *(uint *)(local_2c + 0x54);
LAB_003326da:
    do {
      piVar7 = local_30 + 1;
      if (*(int *)(local_2c + 0x50) == 7) {
        uVar2 = FUN_00271a10(uVar4,uVar2);
        uVar3 = FUN_00275910(param_2,4,uVar2);
        FUN_002cb440(uVar3,*local_30,uVar2);
        if (((int *)param_3[1] == piVar7) || (iVar5 = local_30[1], *(int *)(iVar5 + 0x50) != 7)) {
          local_2c = *local_30;
          uVar2 = *(undefined4 *)(local_2c + 0x58);
          uVar4 = *(uint *)(local_2c + 0x54);
        }
        else {
          do {
            local_30 = piVar7;
            uVar2 = FUN_00271a10(*(undefined4 *)(iVar5 + 0x54),*(undefined4 *)(iVar5 + 0x58));
            FUN_002cb440(uVar3,*local_30,uVar2);
            piVar7 = local_30 + 1;
            if ((int *)param_3[1] == piVar7) break;
            iVar5 = local_30[1];
          } while (*(int *)(iVar5 + 0x50) == 7);
          local_2c = *local_30;
          uVar2 = *(undefined4 *)(local_2c + 0x58);
          uVar4 = *(uint *)(local_2c + 0x54);
        }
      }
      bVar10 = false;
      bVar12 = (uVar4 & 0x400) == 0;
      if (bVar12) {
LAB_003326f9:
        iVar5 = 8;
        pbVar8 = *(byte **)(local_2c + 0x20);
        pbVar9 = (byte *)pcVar1;
        do {
          if (iVar5 == 0) break;
          iVar5 = iVar5 + -1;
          bVar10 = *pbVar8 < *pbVar9;
          bVar12 = *pbVar8 == *pbVar9;
          pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;
          pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;
        } while (bVar12);
        if ((!bVar10 && !bVar12) == bVar10) goto LAB_00332714;
        if ((int *)param_3[1] == piVar7) break;
      }
      else {
        if (bVar11) {
          uVar2 = gettext("TLS sections are not adjacent");
          FUN_0023b810(uVar2);
          uVar2 = *(undefined4 *)(*local_30 + 0x58);
          uVar4 = *(uint *)(*local_30 + 0x54);
        }
        uVar2 = FUN_00271a10(uVar4,uVar2);
        uVar3 = FUN_00275910(param_2,7,uVar2);
        FUN_002cb440(uVar3,*local_30,uVar2);
        bVar11 = (int *)param_3[1] < piVar7;
        bVar10 = (int *)param_3[1] == piVar7;
        if (bVar10) {
          iVar5 = 8;
          local_2c = *local_30;
          pbVar8 = *(byte **)(local_2c + 0x20);
          pbVar9 = (byte *)pcVar1;
          do {
            if (iVar5 == 0) break;
            iVar5 = iVar5 + -1;
            bVar11 = *pbVar8 < *pbVar9;
            bVar10 = *pbVar8 == *pbVar9;
            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;
            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;
          } while (bVar10);
          if ((!bVar11 && !bVar10) != bVar11) break;
        }
        else {
          iVar5 = local_30[1];
          uVar2 = *(undefined4 *)(iVar5 + 0x58);
          uVar4 = *(uint *)(iVar5 + 0x54);
          bVar11 = false;
          bVar10 = (uVar4 & 0x400) == 0;
          if (!bVar10) {
            do {
              local_30 = piVar7;
              uVar2 = FUN_00271a10(uVar4,uVar2);
              FUN_002cb440(uVar3,*local_30,uVar2);
              piVar7 = local_30 + 1;
              bVar10 = (int *)param_3[1] < piVar7;
              bVar12 = (int *)param_3[1] == piVar7;
              if (bVar12) break;
              uVar2 = *(undefined4 *)(local_30[1] + 0x58);
              uVar4 = *(uint *)(local_30[1] + 0x54);
              bVar10 = false;
              bVar12 = (uVar4 & 0x400) == 0;
            } while (!bVar12);
            local_2c = *local_30;
            bVar11 = true;
            goto LAB_003326f9;
          }
          iVar6 = 8;
          local_2c = *local_30;
          pbVar8 = *(byte **)(local_2c + 0x20);
          pbVar9 = (byte *)pcVar1;
          do {
            if (iVar6 == 0) break;
            iVar6 = iVar6 + -1;
            bVar11 = *pbVar8 < *pbVar9;
            bVar10 = *pbVar8 == *pbVar9;
            pbVar8 = pbVar8 + (uint)bVar13 * -2 + 1;
            pbVar9 = pbVar9 + (uint)bVar13 * -2 + 1;
          } while (bVar10);
          if ((!bVar11 && !bVar10) != bVar11) {
            bVar11 = true;
            local_30 = piVar7;
            local_2c = iVar5;
            goto LAB_003326da;
          }
        }
        bVar11 = true;
LAB_00332714:
        uVar2 = FUN_00271a10(*(undefined4 *)(local_2c + 0x54),*(undefined4 *)(local_2c + 0x58));
        uVar3 = FUN_00275910(param_2,3,uVar2);
        FUN_002cb440(uVar3,*local_30,uVar2);
        if ((int *)param_3[1] == piVar7) break;
      }
      local_2c = local_30[1];
      uVar2 = *(undefined4 *)(local_2c + 0x58);
      uVar4 = *(uint *)(local_2c + 0x54);
      local_30 = piVar7;
    } while( true );
  }
  param_1[0x1f] = '\x01';
  return;
}

