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

int popd_builtin(WORD_LIST *list)

{
  byte bVar1;
  int iVar2;
  char **ppcVar3;
  char **ppcVar4;
  char **ppcVar5;
  int iVar6;
  uint uVar7;
  char *pcVar8;
  byte *pbVar9;
  int iVar10;
  byte *pbVar11;
  int iVar12;
  byte *pbVar13;
  int in_GS_OFFSET;
  bool bVar14;
  bool bVar15;
  byte local_45;
  int local_38;
  intmax_t which;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0xa6d59;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (list == (WORD_LIST *)0x0) {
    which._0_4_ = 0;
    which._4_4_ = 0;
    if (((-1 < directory_list_offset >> 0x1f) && (-1 < directory_list_offset)) &&
       (directory_list_offset != 0)) {
      bVar14 = false;
      goto LAB_000a6fcf;
    }
    pcVar8 = "";
    iVar6 = directory_list_offset;
  }
  else {
    pbVar9 = (byte *)list->word->word;
    bVar14 = *pbVar9 < 0x2d;
    bVar15 = *pbVar9 == 0x2d;
    if (bVar15) {
      iVar6 = 7;
      pbVar11 = pbVar9;
      pbVar13 = &DAT_001017a9;
      do {
        if (iVar6 == 0) break;
        iVar6 = iVar6 + -1;
        bVar14 = *pbVar11 < *pbVar13;
        bVar15 = *pbVar11 == *pbVar13;
        pbVar11 = pbVar11 + 1;
        pbVar13 = pbVar13 + 1;
      } while (bVar15);
      if ((!bVar14 && !bVar15) == bVar14) {
        builtin_help();
        iVar6 = 0x102;
        goto LAB_000a6f27;
      }
    }
    which._0_4_ = 0;
    pcVar8 = (char *)0x0;
    which._4_4_ = 0;
    local_45 = 0x2b;
    bVar14 = false;
LAB_000a6dee:
    bVar1 = *pbVar9;
    if (bVar1 == 0x2d) {
      if (pbVar9[1] != 0x6e) {
        if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;
        goto LAB_000a6e10;
      }
      if (pbVar9[2] != 0) goto LAB_000a6db9;
      bVar14 = true;
LAB_000a6de3:
      list = list->next;
      if (list == (word_list *)0x0) goto LAB_000a6e10;
      pbVar9 = (byte *)list->word->word;
      goto LAB_000a6dee;
    }
    if (bVar1 == 0x2b) {
LAB_000a6db9:
      iVar6 = legal_number((char *)(pbVar9 + 1),&which);
      if (iVar6 == 0) {
        sh_invalidnum(list->word->word);
        builtin_usage();
        iVar6 = 0x102;
        goto LAB_000a6f27;
      }
      pcVar8 = list->word->word;
      local_45 = bVar1;
      goto LAB_000a6de3;
    }
    local_45 = 0;
    if (bVar1 != 0) {
      pcVar8 = (char *)dcgettext(0,"%s: invalid argument",5);
      builtin_error(pcVar8,pbVar9);
      builtin_usage();
      iVar6 = 0x102;
      goto LAB_000a6f27;
    }
LAB_000a6e10:
    ppcVar3 = pushd_directory_list;
    iVar6 = directory_list_offset;
    iVar12 = directory_list_offset >> 0x1f;
    if (((SBORROW4(iVar12,which._4_4_) !=
         SBORROW4(iVar12 - which._4_4_,(uint)((uint)directory_list_offset < (uint)which))) ==
         (int)((iVar12 - which._4_4_) - (uint)((uint)directory_list_offset < (uint)which)) < 0) &&
       (iVar10 = -directory_list_offset >> 0x1f,
       uVar7 = (uint)((uint)which < (uint)-directory_list_offset), iVar2 = which._4_4_ - iVar10,
       (SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7)) == (int)(iVar2 - uVar7) < 0)) {
      if ((directory_list_offset != 0) || ((uint)which != 0 || which._4_4_ != 0)) {
        if (local_45 == 0x2b) {
          if ((uint)which != 0 || which._4_4_ != 0) {
            uVar7 = directory_list_offset - (uint)which;
            goto LAB_000a6e85;
          }
LAB_000a6fcf:
          local_38 = directory_list_offset;
          if (!bVar14) {
            iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1]);
            if (iVar6 != 0) goto LAB_000a6f27;
            local_38 = directory_list_offset;
          }
          directory_list_offset = local_38 + -1;
          free(pushd_directory_list[directory_list_offset]);
        }
        else {
          uVar7 = (uint)which;
          if ((local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which))
          goto LAB_000a6fcf;
LAB_000a6e85:
          if (((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)) {
            if (pcVar8 == (char *)0x0) {
              pcVar8 = "";
            }
            pushd_error(directory_list_offset,pcVar8);
            iVar6 = 1;
            goto LAB_000a6f27;
          }
          ppcVar4 = pushd_directory_list + uVar7;
          free(*ppcVar4);
          directory_list_offset = iVar6 + -1;
          if ((int)uVar7 < directory_list_offset) {
            do {
              ppcVar5 = ppcVar4 + 1;
              *ppcVar4 = ppcVar4[1];
              ppcVar4 = ppcVar5;
            } while (ppcVar3 + iVar6 + -1 != ppcVar5);
          }
        }
        dirs_builtin((WORD_LIST *)0x0);
        iVar6 = 0;
        goto LAB_000a6f27;
      }
      iVar6 = 0;
    }
    if (pcVar8 == (char *)0x0) {
      pcVar8 = "";
    }
  }
  pushd_error(iVar6,pcVar8);
  iVar6 = 1;
LAB_000a6f27:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return iVar6;
}



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

int popd_builtin(int *param_1)

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int iVar6;
  undefined4 uVar7;
  uint uVar8;
  byte *pbVar9;
  int iVar10;
  byte *pbVar11;
  int iVar12;
  byte *pbVar13;
  int in_GS_OFFSET;
  bool bVar14;
  bool bVar15;
  byte local_45;
  uint local_38;
  uint local_2c;
  int local_28;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0xa6d59;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (param_1 == (int *)0x0) {
    local_2c = 0;
    local_28 = 0;
    if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {
      bVar14 = false;
      goto LAB_000a6fcf;
    }
    goto LAB_000a6f1b;
  }
  pbVar9 = *(byte **)param_1[1];
  bVar14 = *pbVar9 < 0x2d;
  bVar15 = *pbVar9 == 0x2d;
  if (bVar15) {
    iVar6 = 7;
    pbVar11 = pbVar9;
    pbVar13 = &DAT_001017a9;
    do {
      if (iVar6 == 0) break;
      iVar6 = iVar6 + -1;
      bVar14 = *pbVar11 < *pbVar13;
      bVar15 = *pbVar11 == *pbVar13;
      pbVar11 = pbVar11 + 1;
      pbVar13 = pbVar13 + 1;
    } while (bVar15);
    if ((!bVar14 && !bVar15) == bVar14) {
      builtin_help();
      iVar6 = 0x102;
      goto LAB_000a6f27;
    }
  }
  local_2c = 0;
  local_28 = 0;
  local_45 = 0x2b;
  bVar14 = false;
LAB_000a6dee:
  bVar1 = *pbVar9;
  if (bVar1 == 0x2d) {
    if (pbVar9[1] != 0x6e) {
      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;
      goto LAB_000a6e10;
    }
    if (pbVar9[2] != 0) goto LAB_000a6db9;
    bVar14 = true;
LAB_000a6de3:
    param_1 = (int *)*param_1;
    if (param_1 == (int *)0x0) goto LAB_000a6e10;
    pbVar9 = *(byte **)param_1[1];
    goto LAB_000a6dee;
  }
  if (bVar1 == 0x2b) {
LAB_000a6db9:
    iVar6 = legal_number(pbVar9 + 1,&local_2c);
    local_45 = bVar1;
    if (iVar6 == 0) {
      sh_invalidnum(*(undefined4 *)param_1[1]);
      builtin_usage();
      iVar6 = 0x102;
      goto LAB_000a6f27;
    }
    goto LAB_000a6de3;
  }
  local_45 = 0;
  if (bVar1 != 0) {
    uVar7 = dcgettext(0,"%s: invalid argument",5);
    builtin_error(uVar7,pbVar9);
    builtin_usage();
    iVar6 = 0x102;
    goto LAB_000a6f27;
  }
LAB_000a6e10:
  iVar6 = DAT_0015170c;
  uVar3 = DAT_00151704;
  iVar12 = (int)DAT_00151704 >> 0x1f;
  if (((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==
       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&
     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),
     iVar2 = local_28 - iVar10,
     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)) {
    if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {
      if (local_45 == 0x2b) {
        if (local_2c != 0 || local_28 != 0) {
          uVar8 = DAT_00151704 - local_2c;
          goto LAB_000a6e85;
        }
LAB_000a6fcf:
        local_38 = DAT_00151704;
        if (!bVar14) {
          iVar6 = FUN_000a6140();
          if (iVar6 != 0) goto LAB_000a6f27;
          local_38 = DAT_00151704;
        }
        DAT_00151704 = local_38 - 1;
        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));
      }
      else {
        uVar8 = local_2c;
        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))
        goto LAB_000a6fcf;
LAB_000a6e85:
        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {
          FUN_000a6250();
          iVar6 = 1;
          goto LAB_000a6f27;
        }
        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);
        free((void *)*puVar4);
        DAT_00151704 = uVar3 - 1;
        if ((int)uVar8 < (int)DAT_00151704) {
          do {
            puVar5 = puVar4 + 1;
            *puVar4 = puVar4[1];
            puVar4 = puVar5;
          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);
        }
      }
      dirs_builtin(0);
      iVar6 = 0;
      goto LAB_000a6f27;
    }
  }
LAB_000a6f1b:
  FUN_000a6250();
  iVar6 = 1;
LAB_000a6f27:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000ecc40();
  }
  return iVar6;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00031ed0
ADD EBX,0xa32a7
SUB ESP,0x3c
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x2c],EAX
XOR EAX,EAX
MOV EDX,dword ptr [ESP + 0x50]
TEST EDX,EDX
JZ 0x000a7070
MOV EAX,dword ptr [EDX + 0x4]
MOV EBP,dword ptr [EAX]
CMP byte ptr [EBP],0x2d
JZ 0x000a6fa0
MOV dword ptr [ESP + 0x20],0x0
XOR ECX,ECX
LEA ESI,[ESP + 0x20]
MOV EDI,EDX
MOV dword ptr [ESP + 0x24],0x0
MOV byte ptr [ESP + 0x7],0x2b
MOV dword ptr [ESP + 0x10],0x0
JMP 0x000a6dee
CMP DL,0x2b
JNZ 0x000a6f60
MOV byte ptr [ESP + 0x7],DL
ADD EBP,0x1
SUB ESP,0x8
PUSH ESI
PUSH EBP
CALL 0x00041140
ADD ESP,0x10
MOVZX EDX,byte ptr [ESP + 0x7]
TEST EAX,EAX
JZ 0x000a6f40
MOV EAX,dword ptr [EDI + 0x4]
MOV byte ptr [ESP + 0x7],DL
MOV ECX,dword ptr [EAX]
MOV EDI,dword ptr [EDI]
TEST EDI,EDI
JZ 0x000a6e10
MOV EAX,dword ptr [EDI + 0x4]
MOV EBP,dword ptr [EAX]
MOVZX EDX,byte ptr [EBP]
CMP DL,0x2d
JNZ 0x000a6db0
MOVZX EAX,byte ptr [EBP + 0x1]
CMP AL,0x6e
JZ 0x000a6ef0
CMP AL,0x2d
JNZ 0x000a6db9
CMP byte ptr [EBP + 0x2],0x0
JNZ 0x000a6db9
LEA ESI,[ESI]
MOV EAX,dword ptr [EBX + 0x7704]
MOV EBP,dword ptr [ESP + 0x20]
MOV EDI,EAX
MOV dword ptr [ESP + 0x14],EAX
SAR EDI,0x1f
CMP EAX,EBP
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [ESP + 0xc],EDI
MOV EDI,dword ptr [ESP + 0x24]
MOV EDX,dword ptr [ESP + 0xc]
SBB EDX,EDI
JL 0x000a6f10
MOV EDX,EAX
NEG EDX
MOV ESI,EDX
MOV dword ptr [ESP + 0x18],EDX
SAR ESI,0x1f
CMP EBP,EDX
MOV EDX,EDI
MOV dword ptr [ESP + 0x1c],ESI
SBB EDX,dword ptr [ESP + 0x1c]
JL 0x000a6f10
MOV EDX,EBP
OR EDX,EDI
SETZ DL
TEST EAX,EAX
JNZ 0x000a6e6f
TEST DL,DL
JNZ 0x000a6f07
CMP byte ptr [ESP + 0x7],0x2b
JZ 0x000a6fcb
CMP byte ptr [ESP + 0x7],0x2d
JZ 0x000a704f
TEST EBP,EBP
JS 0x000a702f
CMP EBP,dword ptr [ESP + 0x14]
JG 0x000a702f
MOV EDI,dword ptr [EBX + 0x770c]
SUB ESP,0xc
LEA ESI,[EDI + EBP*0x4]
PUSH dword ptr [ESI]
CALL 0x0002f200
MOV ECX,dword ptr [ESP + 0x24]
ADD ESP,0x10
LEA EAX,[ECX + -0x1]
MOV dword ptr [EBX + 0x7704],EAX
CMP EAX,EBP
JLE 0x000a6ed5
MOV EAX,ESI
LEA ECX,[EDI + ECX*0x4 + -0x4]
LEA ESI,[ESI]
MOV EDX,dword ptr [EAX + 0x4]
ADD EAX,0x4
MOV dword ptr [EAX + -0x4],EDX
CMP ECX,EAX
JNZ 0x000a6ec8
SUB ESP,0xc
PUSH 0x0
CALL 0x000a62c0
ADD ESP,0x10
XOR EAX,EAX
JMP 0x000a6f27
CMP byte ptr [EBP + 0x2],0x0
JNZ 0x000a6db9
MOV dword ptr [ESP + 0x10],0x1
JMP 0x000a6de3
XOR EAX,EAX
LEA ESI,[ESI]
TEST ECX,ECX
LEA EDX,[EBX + 0xfffbc524]
CMOVZ ECX,EDX
MOV EDX,ECX
CALL 0x000a6250
MOV EAX,0x1
MOV ESI,dword ptr [ESP + 0x2c]
XOR ESI,dword ptr GS:[0x14]
JNZ 0x000a70b1
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EDI + 0x4]
SUB ESP,0xc
PUSH dword ptr [EAX]
CALL 0x0009b740
CALL 0x0009b510
ADD ESP,0x10
MOV EAX,0x102
JMP 0x000a6f27
MOV byte ptr [ESP + 0x7],0x0
TEST DL,DL
JZ 0x000a6e10
SUB ESP,0x4
LEA EAX,[EBX + 0xfffb83d5]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x0002f380
POP ECX
POP ESI
PUSH EBP
PUSH EAX
CALL 0x0009b430
CALL 0x0009b510
ADD ESP,0x10
MOV EAX,0x102
JMP 0x000a6f27
MOV ECX,0x7
LEA EDI,[EBX + 0xfffb77a9]
MOV ESI,EBP
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x000a6d89
CALL 0x000a3450
MOV EAX,0x102
JMP 0x000a6f27
TEST DL,DL
JZ 0x000a7022
MOV EDX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EBX + 0x770c]
TEST EDX,EDX
JNZ 0x000a7002
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX + ESI*0x4 + -0x4]
CALL 0x000a6140
TEST EAX,EAX
JNZ 0x000a6f27
MOV ESI,dword ptr [EBX + 0x7704]
MOV EAX,dword ptr [EBX + 0x770c]
MOV dword ptr [ESP + 0x14],ESI
MOV EDX,dword ptr [ESP + 0x14]
SUB ESP,0xc
SUB EDX,0x1
PUSH dword ptr [EAX + EDX*0x4]
MOV dword ptr [EBX + 0x7704],EDX
CALL 0x0002f200
ADD ESP,0x10
JMP 0x000a6ed5
MOV EAX,dword ptr [ESP + 0x14]
SUB EAX,EBP
MOV EBP,EAX
JMP 0x000a6e85
TEST ECX,ECX
LEA EAX,[EBX + 0xfffbc524]
CMOVZ ECX,EAX
MOV EAX,dword ptr [ESP + 0x14]
MOV EDX,ECX
CALL 0x000a6250
MOV EAX,0x1
JMP 0x000a6f27
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
XOR EAX,EBP
XOR EDX,EDI
OR EDX,EAX
JNZ 0x000a6e85
JMP 0x000a6fcf
MOV ECX,dword ptr [EBX + 0x7704]
MOV dword ptr [ESP + 0x20],0x0
MOV dword ptr [ESP + 0x24],0x0
MOV EDI,ECX
MOV dword ptr [ESP + 0x14],ECX
MOV EAX,ECX
SAR EDI,0x1f
JS 0x000a70a6
TEST ECX,ECX
JS 0x000a70a6
JZ 0x000a70a6
MOV dword ptr [ESP + 0x10],0x0
JMP 0x000a6fcf
LEA ECX,[EBX + 0xfffbc524]
JMP 0x000a6f1b
CALL 0x000ecc40
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint popd_builtin(int *param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  byte *pbVar9;\n  int iVar10;\n  byte *pbVar11;\n  int iVar12;\n  byte *pbVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  bool bVar15;\n  byte local_45;\n  uint local_38;\n  uint local_2c;\n  int local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xa6d59;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == (int *)0x0) {\n    local_2c = 0;\n    local_28 = 0;\n    if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    goto LAB_000a6f1b;\n  }\n  pbVar9 = *(byte **)param_1[1];\n  bVar14 = *pbVar9 < 0x2d;\n  bVar15 = *pbVar9 == 0x2d;\n  if (bVar15) {\n    iVar6 = 7;\n    pbVar11 = pbVar9;\n    pbVar13 = &DAT_001017a9;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n  }\n  local_2c = 0;\n  local_28 = 0;\n  local_45 = 0x2b;\n  bVar14 = false;\nLAB_000a6dee:\n  bVar1 = *pbVar9;\n  if (bVar1 == 0x2d) {\n    if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }\n    if (pbVar9[2] != 0) goto LAB_000a6db9;\n    bVar14 = true;\nLAB_000a6de3:\n    param_1 = (int *)*param_1;\n    if (param_1 == (int *)0x0) goto LAB_000a6e10;\n    pbVar9 = *(byte **)param_1[1];\n    goto LAB_000a6dee;\n  }\n  if (bVar1 == 0x2b) {\nLAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);\n    local_45 = bVar1;\n    if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n    goto LAB_000a6de3;\n  }\n  local_45 = 0;\n  if (bVar1 != 0) {\n    uVar7 = dcgettext(0,"%s: invalid argument",5);\n    builtin_error(uVar7,pbVar9);\n    builtin_usage();\n    iVar6 = 0x102;\n    goto LAB_000a6f27;\n  }\nLAB_000a6e10:\n  iVar6 = DAT_0015170c;\n  uVar3 = DAT_00151704;\n  iVar12 = (int)DAT_00151704 >> 0x1f;\n  if (((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)) {\n    if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }\n  }\nLAB_000a6f1b:\n  FUN_000a6250();\n  iVar6 = 1;\nLAB_000a6f27:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000ecc40();\n  }\n  return iVar6;\n}\n\n" comment (function_definition "int popd_builtin(int *param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  byte *pbVar9;\n  int iVar10;\n  byte *pbVar11;\n  int iVar12;\n  byte *pbVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  bool bVar15;\n  byte local_45;\n  uint local_38;\n  uint local_2c;\n  int local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xa6d59;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == (int *)0x0) {\n    local_2c = 0;\n    local_28 = 0;\n    if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    goto LAB_000a6f1b;\n  }\n  pbVar9 = *(byte **)param_1[1];\n  bVar14 = *pbVar9 < 0x2d;\n  bVar15 = *pbVar9 == 0x2d;\n  if (bVar15) {\n    iVar6 = 7;\n    pbVar11 = pbVar9;\n    pbVar13 = &DAT_001017a9;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n  }\n  local_2c = 0;\n  local_28 = 0;\n  local_45 = 0x2b;\n  bVar14 = false;\nLAB_000a6dee:\n  bVar1 = *pbVar9;\n  if (bVar1 == 0x2d) {\n    if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }\n    if (pbVar9[2] != 0) goto LAB_000a6db9;\n    bVar14 = true;\nLAB_000a6de3:\n    param_1 = (int *)*param_1;\n    if (param_1 == (int *)0x0) goto LAB_000a6e10;\n    pbVar9 = *(byte **)param_1[1];\n    goto LAB_000a6dee;\n  }\n  if (bVar1 == 0x2b) {\nLAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);\n    local_45 = bVar1;\n    if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n    goto LAB_000a6de3;\n  }\n  local_45 = 0;\n  if (bVar1 != 0) {\n    uVar7 = dcgettext(0,"%s: invalid argument",5);\n    builtin_error(uVar7,pbVar9);\n    builtin_usage();\n    iVar6 = 0x102;\n    goto LAB_000a6f27;\n  }\nLAB_000a6e10:\n  iVar6 = DAT_0015170c;\n  uVar3 = DAT_00151704;\n  iVar12 = (int)DAT_00151704 >> 0x1f;\n  if (((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)) {\n    if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }\n  }\nLAB_000a6f1b:\n  FUN_000a6250();\n  iVar6 = 1;\nLAB_000a6f27:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000ecc40();\n  }\n  return iVar6;\n}" primitive_type (function_declarator "popd_builtin(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  byte *pbVar9;\n  int iVar10;\n  byte *pbVar11;\n  int iVar12;\n  byte *pbVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  bool bVar15;\n  byte local_45;\n  uint local_38;\n  uint local_2c;\n  int local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xa6d59;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == (int *)0x0) {\n    local_2c = 0;\n    local_28 = 0;\n    if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    goto LAB_000a6f1b;\n  }\n  pbVar9 = *(byte **)param_1[1];\n  bVar14 = *pbVar9 < 0x2d;\n  bVar15 = *pbVar9 == 0x2d;\n  if (bVar15) {\n    iVar6 = 7;\n    pbVar11 = pbVar9;\n    pbVar13 = &DAT_001017a9;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n  }\n  local_2c = 0;\n  local_28 = 0;\n  local_45 = 0x2b;\n  bVar14 = false;\nLAB_000a6dee:\n  bVar1 = *pbVar9;\n  if (bVar1 == 0x2d) {\n    if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }\n    if (pbVar9[2] != 0) goto LAB_000a6db9;\n    bVar14 = true;\nLAB_000a6de3:\n    param_1 = (int *)*param_1;\n    if (param_1 == (int *)0x0) goto LAB_000a6e10;\n    pbVar9 = *(byte **)param_1[1];\n    goto LAB_000a6dee;\n  }\n  if (bVar1 == 0x2b) {\nLAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);\n    local_45 = bVar1;\n    if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n    goto LAB_000a6de3;\n  }\n  local_45 = 0;\n  if (bVar1 != 0) {\n    uVar7 = dcgettext(0,"%s: invalid argument",5);\n    builtin_error(uVar7,pbVar9);\n    builtin_usage();\n    iVar6 = 0x102;\n    goto LAB_000a6f27;\n  }\nLAB_000a6e10:\n  iVar6 = DAT_0015170c;\n  uVar3 = DAT_00151704;\n  iVar12 = (int)DAT_00151704 >> 0x1f;\n  if (((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)) {\n    if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }\n  }\nLAB_000a6f1b:\n  FUN_000a6250();\n  iVar6 = 1;\nLAB_000a6f27:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000ecc40();\n  }\n  return iVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "byte local_45;" type_identifier identifier ;) (declaration "uint local_38;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0xa6d59;" (assignment_expression "uStack_14 = 0xa6d59" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (param_1 == (int *)0x0) {\n    local_2c = 0;\n    local_28 = 0;\n    if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    goto LAB_000a6f1b;\n  }" if (parenthesized_expression "(param_1 == (int *)0x0)" ( (binary_expression "param_1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_2c = 0;\n    local_28 = 0;\n    if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    goto LAB_000a6f1b;\n  }" { (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (if_statement "if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }" if (parenthesized_expression "(((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0))" ( (binary_expression "((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)" (parenthesized_expression "((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704))" ( (binary_expression "(-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)" (parenthesized_expression "(-1 < (int)DAT_00151704 >> 0x1f)" ( (binary_expression "-1 < (int)DAT_00151704 >> 0x1f" number_literal < (binary_expression "(int)DAT_00151704 >> 0x1f" (cast_expression "(int)DAT_00151704" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) )) && (parenthesized_expression "(-1 < (int)DAT_00151704)" ( (binary_expression "-1 < (int)DAT_00151704" number_literal < (cast_expression "(int)DAT_00151704" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) && (parenthesized_expression "(DAT_00151704 != 0)" ( (binary_expression "DAT_00151704 != 0" identifier != number_literal) ))) )) (compound_statement "{\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }" { (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (goto_statement "goto LAB_000a6fcf;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a6f1b;" goto statement_identifier ;) })) (expression_statement "pbVar9 = *(byte **)param_1[1];" (assignment_expression "pbVar9 = *(byte **)param_1[1]" identifier = (pointer_expression "*(byte **)param_1[1]" * (cast_expression "(byte **)param_1[1]" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "param_1[1]" identifier [ number_literal ])))) ;) (expression_statement "bVar14 = *pbVar9 < 0x2d;" (assignment_expression "bVar14 = *pbVar9 < 0x2d" identifier = (binary_expression "*pbVar9 < 0x2d" (pointer_expression "*pbVar9" * identifier) < number_literal)) ;) (expression_statement "bVar15 = *pbVar9 == 0x2d;" (assignment_expression "bVar15 = *pbVar9 == 0x2d" identifier = (binary_expression "*pbVar9 == 0x2d" (pointer_expression "*pbVar9" * identifier) == number_literal)) ;) (if_statement "if (bVar15) {\n    iVar6 = 7;\n    pbVar11 = pbVar9;\n    pbVar13 = &DAT_001017a9;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n  }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n    iVar6 = 7;\n    pbVar11 = pbVar9;\n    pbVar13 = &DAT_001017a9;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n  }" { (expression_statement "iVar6 = 7;" (assignment_expression "iVar6 = 7" identifier = number_literal) ;) (expression_statement "pbVar11 = pbVar9;" (assignment_expression "pbVar11 = pbVar9" identifier = identifier) ;) (expression_statement "pbVar13 = &DAT_001017a9;" (assignment_expression "pbVar13 = &DAT_001017a9" identifier = (pointer_expression "&DAT_001017a9" & identifier)) ;) (do_statement "do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);" do (compound_statement "{\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 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 "bVar14 = *pbVar11 < *pbVar13;" (assignment_expression "bVar14 = *pbVar11 < *pbVar13" identifier = (binary_expression "*pbVar11 < *pbVar13" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar13;" (assignment_expression "bVar15 = *pbVar11 == *pbVar13" identifier = (binary_expression "*pbVar11 == *pbVar13" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }" if (parenthesized_expression "((!bVar14 && !bVar15) == bVar14)" ( (binary_expression "(!bVar14 && !bVar15) == bVar14" (parenthesized_expression "(!bVar14 && !bVar15)" ( (binary_expression "!bVar14 && !bVar15" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )) (compound_statement "{\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }" { (expression_statement "builtin_help();" (call_expression "builtin_help()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = 0x102;" (assignment_expression "iVar6 = 0x102" identifier = number_literal) ;) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;) })) })) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_45 = 0x2b;" (assignment_expression "local_45 = 0x2b" identifier = number_literal) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (labeled_statement "LAB_000a6dee:\n  bVar1 = *pbVar9;" statement_identifier : (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;)) (if_statement "if (bVar1 == 0x2d) {\n    if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }\n    if (pbVar9[2] != 0) goto LAB_000a6db9;\n    bVar14 = true;\nLAB_000a6de3:\n    param_1 = (int *)*param_1;\n    if (param_1 == (int *)0x0) goto LAB_000a6e10;\n    pbVar9 = *(byte **)param_1[1];\n    goto LAB_000a6dee;\n  }" if (parenthesized_expression "(bVar1 == 0x2d)" ( (binary_expression "bVar1 == 0x2d" identifier == number_literal) )) (compound_statement "{\n    if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }\n    if (pbVar9[2] != 0) goto LAB_000a6db9;\n    bVar14 = true;\nLAB_000a6de3:\n    param_1 = (int *)*param_1;\n    if (param_1 == (int *)0x0) goto LAB_000a6e10;\n    pbVar9 = *(byte **)param_1[1];\n    goto LAB_000a6dee;\n  }" { (if_statement "if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }" if (parenthesized_expression "(pbVar9[1] != 0x6e)" ( (binary_expression "pbVar9[1] != 0x6e" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }" { (if_statement "if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;" if (parenthesized_expression "((pbVar9[1] != 0x2d) || (pbVar9[2] != 0))" ( (binary_expression "(pbVar9[1] != 0x2d) || (pbVar9[2] != 0)" (parenthesized_expression "(pbVar9[1] != 0x2d)" ( (binary_expression "pbVar9[1] != 0x2d" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(pbVar9[2] != 0)" ( (binary_expression "pbVar9[2] != 0" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) != number_literal) ))) )) (goto_statement "goto LAB_000a6db9;" goto statement_identifier ;)) (goto_statement "goto LAB_000a6e10;" goto statement_identifier ;) })) (if_statement "if (pbVar9[2] != 0) goto LAB_000a6db9;" if (parenthesized_expression "(pbVar9[2] != 0)" ( (binary_expression "pbVar9[2] != 0" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_000a6db9;" goto statement_identifier ;)) (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" identifier = true) ;) (labeled_statement "LAB_000a6de3:\n    param_1 = (int *)*param_1;" statement_identifier : (expression_statement "param_1 = (int *)*param_1;" (assignment_expression "param_1 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;)) (if_statement "if (param_1 == (int *)0x0) goto LAB_000a6e10;" if (parenthesized_expression "(param_1 == (int *)0x0)" ( (binary_expression "param_1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a6e10;" goto statement_identifier ;)) (expression_statement "pbVar9 = *(byte **)param_1[1];" (assignment_expression "pbVar9 = *(byte **)param_1[1]" identifier = (pointer_expression "*(byte **)param_1[1]" * (cast_expression "(byte **)param_1[1]" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "param_1[1]" identifier [ number_literal ])))) ;) (goto_statement "goto LAB_000a6dee;" goto statement_identifier ;) })) (if_statement "if (bVar1 == 0x2b) {\nLAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);\n    local_45 = bVar1;\n    if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n    goto LAB_000a6de3;\n  }" if (parenthesized_expression "(bVar1 == 0x2b)" ( (binary_expression "bVar1 == 0x2b" identifier == number_literal) )) (compound_statement "{\nLAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);\n    local_45 = bVar1;\n    if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n    goto LAB_000a6de3;\n  }" { (labeled_statement "LAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);" statement_identifier : (expression_statement "iVar6 = legal_number(pbVar9 + 1,&local_2c);" (assignment_expression "iVar6 = legal_number(pbVar9 + 1,&local_2c)" identifier = (call_expression "legal_number(pbVar9 + 1,&local_2c)" identifier (argument_list "(pbVar9 + 1,&local_2c)" ( (binary_expression "pbVar9 + 1" identifier + number_literal) , (pointer_expression "&local_2c" & identifier) )))) ;)) (expression_statement "local_45 = bVar1;" (assignment_expression "local_45 = bVar1" identifier = identifier) ;) (if_statement "if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }" { (expression_statement "sh_invalidnum(*(undefined4 *)param_1[1]);" (call_expression "sh_invalidnum(*(undefined4 *)param_1[1])" identifier (argument_list "(*(undefined4 *)param_1[1])" ( (pointer_expression "*(undefined4 *)param_1[1]" * (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ))) ;) (expression_statement "builtin_usage();" (call_expression "builtin_usage()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = 0x102;" (assignment_expression "iVar6 = 0x102" identifier = number_literal) ;) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a6de3;" goto statement_identifier ;) })) (expression_statement "local_45 = 0;" (assignment_expression "local_45 = 0" identifier = number_literal) ;) (if_statement "if (bVar1 != 0) {\n    uVar7 = dcgettext(0,"%s: invalid argument",5);\n    builtin_error(uVar7,pbVar9);\n    builtin_usage();\n    iVar6 = 0x102;\n    goto LAB_000a6f27;\n  }" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar7 = dcgettext(0,"%s: invalid argument",5);\n    builtin_error(uVar7,pbVar9);\n    builtin_usage();\n    iVar6 = 0x102;\n    goto LAB_000a6f27;\n  }" { (expression_statement "uVar7 = dcgettext(0,"%s: invalid argument",5);" (assignment_expression "uVar7 = dcgettext(0,"%s: invalid argument",5)" identifier = (call_expression "dcgettext(0,"%s: invalid argument",5)" identifier (argument_list "(0,"%s: invalid argument",5)" ( number_literal , (string_literal ""%s: invalid argument"" " string_content ") , number_literal )))) ;) (expression_statement "builtin_error(uVar7,pbVar9);" (call_expression "builtin_error(uVar7,pbVar9)" identifier (argument_list "(uVar7,pbVar9)" ( identifier , identifier ))) ;) (expression_statement "builtin_usage();" (call_expression "builtin_usage()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = 0x102;" (assignment_expression "iVar6 = 0x102" identifier = number_literal) ;) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;) })) (labeled_statement "LAB_000a6e10:\n  iVar6 = DAT_0015170c;" statement_identifier : (expression_statement "iVar6 = DAT_0015170c;" (assignment_expression "iVar6 = DAT_0015170c" identifier = identifier) ;)) (expression_statement "uVar3 = DAT_00151704;" (assignment_expression "uVar3 = DAT_00151704" identifier = identifier) ;) (expression_statement "iVar12 = (int)DAT_00151704 >> 0x1f;" (assignment_expression "iVar12 = (int)DAT_00151704 >> 0x1f" identifier = (binary_expression "(int)DAT_00151704 >> 0x1f" (cast_expression "(int)DAT_00151704" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if (((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)) {\n    if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }\n  }" if (parenthesized_expression "(((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0))" ( (binary_expression "((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)" (parenthesized_expression "((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0)" ( (binary_expression "(SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0" (parenthesized_expression "(SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c)))" ( (binary_expression "SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))" (call_expression "SBORROW4(iVar12,local_28)" identifier (argument_list "(iVar12,local_28)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))" identifier (argument_list "(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))" ( (binary_expression "iVar12 - local_28" identifier - identifier) , (call_expression "(uint)(DAT_00151704 < local_2c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_00151704 < local_2c)" ( (binary_expression "DAT_00151704 < local_2c" identifier < identifier) ))) )))) )) == (binary_expression "(int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0" (cast_expression "(int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c))" ( (binary_expression "(iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)" (parenthesized_expression "(iVar12 - local_28)" ( (binary_expression "iVar12 - local_28" identifier - identifier) )) - (call_expression "(uint)(DAT_00151704 < local_2c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_00151704 < local_2c)" ( (binary_expression "DAT_00151704 < local_2c" identifier < identifier) )))) ))) < number_literal)) )) && (parenthesized_expression "(iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)" ( (comma_expression "iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0" (assignment_expression "iVar10 = (int)-DAT_00151704 >> 0x1f" identifier = (binary_expression "(int)-DAT_00151704 >> 0x1f" (cast_expression "(int)-DAT_00151704" ( (type_descriptor "int" primitive_type) ) (unary_expression "-DAT_00151704" - identifier)) >> number_literal)) , (comma_expression "uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0" (assignment_expression "uVar8 = (uint)(local_2c < -DAT_00151704)" identifier = (call_expression "(uint)(local_2c < -DAT_00151704)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_2c < -DAT_00151704)" ( (binary_expression "local_2c < -DAT_00151704" identifier < (unary_expression "-DAT_00151704" - identifier)) )))) , (comma_expression "iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0" (assignment_expression "iVar2 = local_28 - iVar10" identifier = (binary_expression "local_28 - iVar10" identifier - identifier)) , (binary_expression "(SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0" (parenthesized_expression "(SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8))" ( (binary_expression "SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)" (call_expression "SBORROW4(local_28,iVar10)" identifier (argument_list "(local_28,iVar10)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar2,uVar8)" identifier (argument_list "(iVar2,uVar8)" ( identifier , identifier )))) )) == (binary_expression "(int)(iVar2 - uVar8) < 0" (cast_expression "(int)(iVar2 - uVar8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - uVar8)" ( (binary_expression "iVar2 - uVar8" identifier - identifier) ))) < number_literal))))) ))) )) (compound_statement "{\n    if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }\n  }" { (if_statement "if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }" if (parenthesized_expression "((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0))" ( (binary_expression "(DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)" (parenthesized_expression "(DAT_00151704 != 0)" ( (binary_expression "DAT_00151704 != 0" identifier != number_literal) )) || (parenthesized_expression "(local_2c != 0 || local_28 != 0)" ( (binary_expression "local_2c != 0 || local_28 != 0" (binary_expression "local_2c != 0" identifier != number_literal) || (binary_expression "local_28 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }" { (if_statement "if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }" if (parenthesized_expression "(local_45 == 0x2b)" ( (binary_expression "local_45 == 0x2b" identifier == number_literal) )) (compound_statement "{\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }" { (if_statement "if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }" if (parenthesized_expression "(local_2c != 0 || local_28 != 0)" ( (binary_expression "local_2c != 0 || local_28 != 0" (binary_expression "local_2c != 0" identifier != number_literal) || (binary_expression "local_28 != 0" identifier != number_literal)) )) (compound_statement "{\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }" { (expression_statement "uVar8 = DAT_00151704 - local_2c;" (assignment_expression "uVar8 = DAT_00151704 - local_2c" identifier = (binary_expression "DAT_00151704 - local_2c" identifier - identifier)) ;) (goto_statement "goto LAB_000a6e85;" goto statement_identifier ;) })) (labeled_statement "LAB_000a6fcf:\n        local_38 = DAT_00151704;" statement_identifier : (expression_statement "local_38 = DAT_00151704;" (assignment_expression "local_38 = DAT_00151704" identifier = identifier) ;)) (if_statement "if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }" if (parenthesized_expression "(!bVar14)" ( (unary_expression "!bVar14" ! identifier) )) (compound_statement "{\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }" { (expression_statement "iVar6 = FUN_000a6140();" (assignment_expression "iVar6 = FUN_000a6140()" identifier = (call_expression "FUN_000a6140()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 != 0) goto LAB_000a6f27;" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;)) (expression_statement "local_38 = DAT_00151704;" (assignment_expression "local_38 = DAT_00151704" identifier = identifier) ;) })) (expression_statement "DAT_00151704 = local_38 - 1;" (assignment_expression "DAT_00151704 = local_38 - 1" identifier = (binary_expression "local_38 - 1" identifier - number_literal)) ;) (expression_statement "free(*(void **)(DAT_0015170c + DAT_00151704 * 4));" (call_expression "free(*(void **)(DAT_0015170c + DAT_00151704 * 4))" identifier (argument_list "(*(void **)(DAT_0015170c + DAT_00151704 * 4))" ( (pointer_expression "*(void **)(DAT_0015170c + DAT_00151704 * 4)" * (cast_expression "(void **)(DAT_0015170c + DAT_00151704 * 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_0015170c + DAT_00151704 * 4)" ( (binary_expression "DAT_0015170c + DAT_00151704 * 4" identifier + (binary_expression "DAT_00151704 * 4" identifier * number_literal)) )))) ))) ;) }) (else_clause "else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }" else (compound_statement "{\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }" { (expression_statement "uVar8 = local_2c;" (assignment_expression "uVar8 = local_2c" identifier = identifier) ;) (if_statement "if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;" if (parenthesized_expression "((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))" ( (binary_expression "(local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c)" (parenthesized_expression "(local_45 == 0x2d)" ( (binary_expression "local_45 == 0x2d" identifier == number_literal) )) && (parenthesized_expression "(iVar12 == local_28 && DAT_00151704 == local_2c)" ( (binary_expression "iVar12 == local_28 && DAT_00151704 == local_2c" (binary_expression "iVar12 == local_28" identifier == identifier) && (binary_expression "DAT_00151704 == local_2c" identifier == identifier)) ))) )) (goto_statement "goto LAB_000a6fcf;" goto statement_identifier ;)) (labeled_statement "LAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }" statement_identifier : (if_statement "if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }" if (parenthesized_expression "(((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8))" ( (binary_expression "((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)" (parenthesized_expression "((int)uVar8 < 0)" ( (binary_expression "(int)uVar8 < 0" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "((int)DAT_00151704 < (int)uVar8)" ( (binary_expression "(int)DAT_00151704 < (int)uVar8" (cast_expression "(int)DAT_00151704" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }" { (expression_statement "FUN_000a6250();" (call_expression "FUN_000a6250()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;) }))) (expression_statement "puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);" (assignment_expression "puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4)" identifier = (cast_expression "(undefined4 *)(DAT_0015170c + uVar8 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0015170c + uVar8 * 4)" ( (binary_expression "DAT_0015170c + uVar8 * 4" identifier + (binary_expression "uVar8 * 4" identifier * number_literal)) )))) ;) (expression_statement "free((void *)*puVar4);" (call_expression "free((void *)*puVar4)" identifier (argument_list "((void *)*puVar4)" ( (cast_expression "(void *)*puVar4" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier)) ))) ;) (expression_statement "DAT_00151704 = uVar3 - 1;" (assignment_expression "DAT_00151704 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (if_statement "if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }" if (parenthesized_expression "((int)uVar8 < (int)DAT_00151704)" ( (binary_expression "(int)uVar8 < (int)DAT_00151704" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)DAT_00151704" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }" { (do_statement "do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);" do (compound_statement "{\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          }" { (expression_statement "puVar5 = puVar4 + 1;" (assignment_expression "puVar5 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar4 = puVar4[1];" (assignment_expression "*puVar4 = puVar4[1]" (pointer_expression "*puVar4" * identifier) = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "puVar4 = puVar5;" (assignment_expression "puVar4 = puVar5" identifier = identifier) ;) }) while (parenthesized_expression "((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5)" ( (binary_expression "(undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5" (cast_expression "(undefined4 *)(iVar6 + -4 + uVar3 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -4 + uVar3 * 4)" ( (binary_expression "iVar6 + -4 + uVar3 * 4" (binary_expression "iVar6 + -4" identifier + number_literal) + (binary_expression "uVar3 * 4" identifier * number_literal)) ))) != identifier) )) ;) })) }))) (expression_statement "dirs_builtin(0);" (call_expression "dirs_builtin(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000a6f1b:\n  FUN_000a6250();" statement_identifier : (expression_statement "FUN_000a6250();" (call_expression "FUN_000a6250()" identifier (argument_list "()" ( ))) ;)) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (labeled_statement "LAB_000a6f27:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000ecc40();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000ecc40();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_000ecc40();\n  }" { comment (expression_statement "FUN_000ecc40();" (call_expression "FUN_000ecc40()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar6;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint popd_builtin(WORD_LIST *list)\n\n{\n  byte bVar1;\n  int iVar2;\n  char **ppcVar3;\n  char **ppcVar4;\n  char **ppcVar5;\n  int iVar6;\n  uint uVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  int iVar10;\n  byte *pbVar11;\n  int iVar12;\n  byte *pbVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  bool bVar15;\n  byte local_45;\n  int local_38;\n  intmax_t which;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xa6d59;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (list == (WORD_LIST *)0x0) {\n    which._0_4_ = 0;\n    which._4_4_ = 0;\n    if (((-1 < directory_list_offset >> 0x1f) && (-1 < directory_list_offset)) &&\n       (directory_list_offset != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    pcVar8 = "";\n    iVar6 = directory_list_offset;\n  }\n  else {\n    pbVar9 = (byte *)list->word->word;\n    bVar14 = *pbVar9 < 0x2d;\n    bVar15 = *pbVar9 == 0x2d;\n    if (bVar15) {\n      iVar6 = 7;\n      pbVar11 = pbVar9;\n      pbVar13 = &DAT_001017a9;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar14 = *pbVar11 < *pbVar13;\n        bVar15 = *pbVar11 == *pbVar13;\n        pbVar11 = pbVar11 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar15);\n      if ((!bVar14 && !bVar15) == bVar14) {\n        builtin_help();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }\n    }\n    which._0_4_ = 0;\n    pcVar8 = (char *)0x0;\n    which._4_4_ = 0;\n    local_45 = 0x2b;\n    bVar14 = false;\nLAB_000a6dee:\n    bVar1 = *pbVar9;\n    if (bVar1 == 0x2d) {\n      if (pbVar9[1] != 0x6e) {\n        if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n        goto LAB_000a6e10;\n      }\n      if (pbVar9[2] != 0) goto LAB_000a6db9;\n      bVar14 = true;\nLAB_000a6de3:\n      list = list->next;\n      if (list == (word_list *)0x0) goto LAB_000a6e10;\n      pbVar9 = (byte *)list->word->word;\n      goto LAB_000a6dee;\n    }\n    if (bVar1 == 0x2b) {\nLAB_000a6db9:\n      iVar6 = legal_number((char *)(pbVar9 + 1),&which);\n      if (iVar6 == 0) {\n        sh_invalidnum(list->word->word);\n        builtin_usage();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }\n      pcVar8 = list->word->word;\n      local_45 = bVar1;\n      goto LAB_000a6de3;\n    }\n    local_45 = 0;\n    if (bVar1 != 0) {\n      pcVar8 = (char *)dcgettext(0,"%s: invalid argument",5);\n      builtin_error(pcVar8,pbVar9);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\nLAB_000a6e10:\n    ppcVar3 = pushd_directory_list;\n    iVar6 = directory_list_offset;\n    iVar12 = directory_list_offset >> 0x1f;\n    if (((SBORROW4(iVar12,which._4_4_) !=\n         SBORROW4(iVar12 - which._4_4_,(uint)((uint)directory_list_offset < (uint)which))) ==\n         (int)((iVar12 - which._4_4_) - (uint)((uint)directory_list_offset < (uint)which)) < 0) &&\n       (iVar10 = -directory_list_offset >> 0x1f,\n       uVar7 = (uint)((uint)which < (uint)-directory_list_offset), iVar2 = which._4_4_ - iVar10,\n       (SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7)) == (int)(iVar2 - uVar7) < 0)) {\n      if ((directory_list_offset != 0) || ((uint)which != 0 || which._4_4_ != 0)) {\n        if (local_45 == 0x2b) {\n          if ((uint)which != 0 || which._4_4_ != 0) {\n            uVar7 = directory_list_offset - (uint)which;\n            goto LAB_000a6e85;\n          }\nLAB_000a6fcf:\n          local_38 = directory_list_offset;\n          if (!bVar14) {\n            iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1]);\n            if (iVar6 != 0) goto LAB_000a6f27;\n            local_38 = directory_list_offset;\n          }\n          directory_list_offset = local_38 + -1;\n          free(pushd_directory_list[directory_list_offset]);\n        }\n        else {\n          uVar7 = (uint)which;\n          if ((local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which))\n          goto LAB_000a6fcf;\nLAB_000a6e85:\n          if (((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)) {\n            if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }\n            pushd_error(directory_list_offset,pcVar8);\n            iVar6 = 1;\n            goto LAB_000a6f27;\n          }\n          ppcVar4 = pushd_directory_list + uVar7;\n          free(*ppcVar4);\n          directory_list_offset = iVar6 + -1;\n          if ((int)uVar7 < directory_list_offset) {\n            do {\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            } while (ppcVar3 + iVar6 + -1 != ppcVar5);\n          }\n        }\n        dirs_builtin((WORD_LIST *)0x0);\n        iVar6 = 0;\n        goto LAB_000a6f27;\n      }\n      iVar6 = 0;\n    }\n    if (pcVar8 == (char *)0x0) {\n      pcVar8 = "";\n    }\n  }\n  pushd_error(iVar6,pcVar8);\n  iVar6 = 1;\nLAB_000a6f27:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar6;\n}\n\n" comment (function_definition "int popd_builtin(WORD_LIST *list)\n\n{\n  byte bVar1;\n  int iVar2;\n  char **ppcVar3;\n  char **ppcVar4;\n  char **ppcVar5;\n  int iVar6;\n  uint uVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  int iVar10;\n  byte *pbVar11;\n  int iVar12;\n  byte *pbVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  bool bVar15;\n  byte local_45;\n  int local_38;\n  intmax_t which;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xa6d59;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (list == (WORD_LIST *)0x0) {\n    which._0_4_ = 0;\n    which._4_4_ = 0;\n    if (((-1 < directory_list_offset >> 0x1f) && (-1 < directory_list_offset)) &&\n       (directory_list_offset != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    pcVar8 = "";\n    iVar6 = directory_list_offset;\n  }\n  else {\n    pbVar9 = (byte *)list->word->word;\n    bVar14 = *pbVar9 < 0x2d;\n    bVar15 = *pbVar9 == 0x2d;\n    if (bVar15) {\n      iVar6 = 7;\n      pbVar11 = pbVar9;\n      pbVar13 = &DAT_001017a9;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar14 = *pbVar11 < *pbVar13;\n        bVar15 = *pbVar11 == *pbVar13;\n        pbVar11 = pbVar11 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar15);\n      if ((!bVar14 && !bVar15) == bVar14) {\n        builtin_help();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }\n    }\n    which._0_4_ = 0;\n    pcVar8 = (char *)0x0;\n    which._4_4_ = 0;\n    local_45 = 0x2b;\n    bVar14 = false;\nLAB_000a6dee:\n    bVar1 = *pbVar9;\n    if (bVar1 == 0x2d) {\n      if (pbVar9[1] != 0x6e) {\n        if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n        goto LAB_000a6e10;\n      }\n      if (pbVar9[2] != 0) goto LAB_000a6db9;\n      bVar14 = true;\nLAB_000a6de3:\n      list = list->next;\n      if (list == (word_list *)0x0) goto LAB_000a6e10;\n      pbVar9 = (byte *)list->word->word;\n      goto LAB_000a6dee;\n    }\n    if (bVar1 == 0x2b) {\nLAB_000a6db9:\n      iVar6 = legal_number((char *)(pbVar9 + 1),&which);\n      if (iVar6 == 0) {\n        sh_invalidnum(list->word->word);\n        builtin_usage();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }\n      pcVar8 = list->word->word;\n      local_45 = bVar1;\n      goto LAB_000a6de3;\n    }\n    local_45 = 0;\n    if (bVar1 != 0) {\n      pcVar8 = (char *)dcgettext(0,"%s: invalid argument",5);\n      builtin_error(pcVar8,pbVar9);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\nLAB_000a6e10:\n    ppcVar3 = pushd_directory_list;\n    iVar6 = directory_list_offset;\n    iVar12 = directory_list_offset >> 0x1f;\n    if (((SBORROW4(iVar12,which._4_4_) !=\n         SBORROW4(iVar12 - which._4_4_,(uint)((uint)directory_list_offset < (uint)which))) ==\n         (int)((iVar12 - which._4_4_) - (uint)((uint)directory_list_offset < (uint)which)) < 0) &&\n       (iVar10 = -directory_list_offset >> 0x1f,\n       uVar7 = (uint)((uint)which < (uint)-directory_list_offset), iVar2 = which._4_4_ - iVar10,\n       (SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7)) == (int)(iVar2 - uVar7) < 0)) {\n      if ((directory_list_offset != 0) || ((uint)which != 0 || which._4_4_ != 0)) {\n        if (local_45 == 0x2b) {\n          if ((uint)which != 0 || which._4_4_ != 0) {\n            uVar7 = directory_list_offset - (uint)which;\n            goto LAB_000a6e85;\n          }\nLAB_000a6fcf:\n          local_38 = directory_list_offset;\n          if (!bVar14) {\n            iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1]);\n            if (iVar6 != 0) goto LAB_000a6f27;\n            local_38 = directory_list_offset;\n          }\n          directory_list_offset = local_38 + -1;\n          free(pushd_directory_list[directory_list_offset]);\n        }\n        else {\n          uVar7 = (uint)which;\n          if ((local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which))\n          goto LAB_000a6fcf;\nLAB_000a6e85:\n          if (((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)) {\n            if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }\n            pushd_error(directory_list_offset,pcVar8);\n            iVar6 = 1;\n            goto LAB_000a6f27;\n          }\n          ppcVar4 = pushd_directory_list + uVar7;\n          free(*ppcVar4);\n          directory_list_offset = iVar6 + -1;\n          if ((int)uVar7 < directory_list_offset) {\n            do {\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            } while (ppcVar3 + iVar6 + -1 != ppcVar5);\n          }\n        }\n        dirs_builtin((WORD_LIST *)0x0);\n        iVar6 = 0;\n        goto LAB_000a6f27;\n      }\n      iVar6 = 0;\n    }\n    if (pcVar8 == (char *)0x0) {\n      pcVar8 = "";\n    }\n  }\n  pushd_error(iVar6,pcVar8);\n  iVar6 = 1;\nLAB_000a6f27:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar6;\n}" primitive_type (function_declarator "popd_builtin(WORD_LIST *list)" identifier (parameter_list "(WORD_LIST *list)" ( (parameter_declaration "WORD_LIST *list" type_identifier (pointer_declarator "*list" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  char **ppcVar3;\n  char **ppcVar4;\n  char **ppcVar5;\n  int iVar6;\n  uint uVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  int iVar10;\n  byte *pbVar11;\n  int iVar12;\n  byte *pbVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  bool bVar15;\n  byte local_45;\n  int local_38;\n  intmax_t which;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xa6d59;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (list == (WORD_LIST *)0x0) {\n    which._0_4_ = 0;\n    which._4_4_ = 0;\n    if (((-1 < directory_list_offset >> 0x1f) && (-1 < directory_list_offset)) &&\n       (directory_list_offset != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    pcVar8 = "";\n    iVar6 = directory_list_offset;\n  }\n  else {\n    pbVar9 = (byte *)list->word->word;\n    bVar14 = *pbVar9 < 0x2d;\n    bVar15 = *pbVar9 == 0x2d;\n    if (bVar15) {\n      iVar6 = 7;\n      pbVar11 = pbVar9;\n      pbVar13 = &DAT_001017a9;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar14 = *pbVar11 < *pbVar13;\n        bVar15 = *pbVar11 == *pbVar13;\n        pbVar11 = pbVar11 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar15);\n      if ((!bVar14 && !bVar15) == bVar14) {\n        builtin_help();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }\n    }\n    which._0_4_ = 0;\n    pcVar8 = (char *)0x0;\n    which._4_4_ = 0;\n    local_45 = 0x2b;\n    bVar14 = false;\nLAB_000a6dee:\n    bVar1 = *pbVar9;\n    if (bVar1 == 0x2d) {\n      if (pbVar9[1] != 0x6e) {\n        if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n        goto LAB_000a6e10;\n      }\n      if (pbVar9[2] != 0) goto LAB_000a6db9;\n      bVar14 = true;\nLAB_000a6de3:\n      list = list->next;\n      if (list == (word_list *)0x0) goto LAB_000a6e10;\n      pbVar9 = (byte *)list->word->word;\n      goto LAB_000a6dee;\n    }\n    if (bVar1 == 0x2b) {\nLAB_000a6db9:\n      iVar6 = legal_number((char *)(pbVar9 + 1),&which);\n      if (iVar6 == 0) {\n        sh_invalidnum(list->word->word);\n        builtin_usage();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }\n      pcVar8 = list->word->word;\n      local_45 = bVar1;\n      goto LAB_000a6de3;\n    }\n    local_45 = 0;\n    if (bVar1 != 0) {\n      pcVar8 = (char *)dcgettext(0,"%s: invalid argument",5);\n      builtin_error(pcVar8,pbVar9);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\nLAB_000a6e10:\n    ppcVar3 = pushd_directory_list;\n    iVar6 = directory_list_offset;\n    iVar12 = directory_list_offset >> 0x1f;\n    if (((SBORROW4(iVar12,which._4_4_) !=\n         SBORROW4(iVar12 - which._4_4_,(uint)((uint)directory_list_offset < (uint)which))) ==\n         (int)((iVar12 - which._4_4_) - (uint)((uint)directory_list_offset < (uint)which)) < 0) &&\n       (iVar10 = -directory_list_offset >> 0x1f,\n       uVar7 = (uint)((uint)which < (uint)-directory_list_offset), iVar2 = which._4_4_ - iVar10,\n       (SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7)) == (int)(iVar2 - uVar7) < 0)) {\n      if ((directory_list_offset != 0) || ((uint)which != 0 || which._4_4_ != 0)) {\n        if (local_45 == 0x2b) {\n          if ((uint)which != 0 || which._4_4_ != 0) {\n            uVar7 = directory_list_offset - (uint)which;\n            goto LAB_000a6e85;\n          }\nLAB_000a6fcf:\n          local_38 = directory_list_offset;\n          if (!bVar14) {\n            iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1]);\n            if (iVar6 != 0) goto LAB_000a6f27;\n            local_38 = directory_list_offset;\n          }\n          directory_list_offset = local_38 + -1;\n          free(pushd_directory_list[directory_list_offset]);\n        }\n        else {\n          uVar7 = (uint)which;\n          if ((local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which))\n          goto LAB_000a6fcf;\nLAB_000a6e85:\n          if (((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)) {\n            if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }\n            pushd_error(directory_list_offset,pcVar8);\n            iVar6 = 1;\n            goto LAB_000a6f27;\n          }\n          ppcVar4 = pushd_directory_list + uVar7;\n          free(*ppcVar4);\n          directory_list_offset = iVar6 + -1;\n          if ((int)uVar7 < directory_list_offset) {\n            do {\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            } while (ppcVar3 + iVar6 + -1 != ppcVar5);\n          }\n        }\n        dirs_builtin((WORD_LIST *)0x0);\n        iVar6 = 0;\n        goto LAB_000a6f27;\n      }\n      iVar6 = 0;\n    }\n    if (pcVar8 == (char *)0x0) {\n      pcVar8 = "";\n    }\n  }\n  pushd_error(iVar6,pcVar8);\n  iVar6 = 1;\nLAB_000a6f27:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char **ppcVar3;" primitive_type (pointer_declarator "**ppcVar3" * (pointer_declarator "*ppcVar3" * identifier)) ;) (declaration "char **ppcVar4;" primitive_type (pointer_declarator "**ppcVar4" * (pointer_declarator "*ppcVar4" * identifier)) ;) (declaration "char **ppcVar5;" primitive_type (pointer_declarator "**ppcVar5" * (pointer_declarator "*ppcVar5" * identifier)) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "byte local_45;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "intmax_t which;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0xa6d59;" (assignment_expression "uStack_14 = 0xa6d59" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (list == (WORD_LIST *)0x0) {\n    which._0_4_ = 0;\n    which._4_4_ = 0;\n    if (((-1 < directory_list_offset >> 0x1f) && (-1 < directory_list_offset)) &&\n       (directory_list_offset != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    pcVar8 = "";\n    iVar6 = directory_list_offset;\n  }\n  else {\n    pbVar9 = (byte *)list->word->word;\n    bVar14 = *pbVar9 < 0x2d;\n    bVar15 = *pbVar9 == 0x2d;\n    if (bVar15) {\n      iVar6 = 7;\n      pbVar11 = pbVar9;\n      pbVar13 = &DAT_001017a9;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar14 = *pbVar11 < *pbVar13;\n        bVar15 = *pbVar11 == *pbVar13;\n        pbVar11 = pbVar11 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar15);\n      if ((!bVar14 && !bVar15) == bVar14) {\n        builtin_help();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }\n    }\n    which._0_4_ = 0;\n    pcVar8 = (char *)0x0;\n    which._4_4_ = 0;\n    local_45 = 0x2b;\n    bVar14 = false;\nLAB_000a6dee:\n    bVar1 = *pbVar9;\n    if (bVar1 == 0x2d) {\n      if (pbVar9[1] != 0x6e) {\n        if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n        goto LAB_000a6e10;\n      }\n      if (pbVar9[2] != 0) goto LAB_000a6db9;\n      bVar14 = true;\nLAB_000a6de3:\n      list = list->next;\n      if (list == (word_list *)0x0) goto LAB_000a6e10;\n      pbVar9 = (byte *)list->word->word;\n      goto LAB_000a6dee;\n    }\n    if (bVar1 == 0x2b) {\nLAB_000a6db9:\n      iVar6 = legal_number((char *)(pbVar9 + 1),&which);\n      if (iVar6 == 0) {\n        sh_invalidnum(list->word->word);\n        builtin_usage();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }\n      pcVar8 = list->word->word;\n      local_45 = bVar1;\n      goto LAB_000a6de3;\n    }\n    local_45 = 0;\n    if (bVar1 != 0) {\n      pcVar8 = (char *)dcgettext(0,"%s: invalid argument",5);\n      builtin_error(pcVar8,pbVar9);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\nLAB_000a6e10:\n    ppcVar3 = pushd_directory_list;\n    iVar6 = directory_list_offset;\n    iVar12 = directory_list_offset >> 0x1f;\n    if (((SBORROW4(iVar12,which._4_4_) !=\n         SBORROW4(iVar12 - which._4_4_,(uint)((uint)directory_list_offset < (uint)which))) ==\n         (int)((iVar12 - which._4_4_) - (uint)((uint)directory_list_offset < (uint)which)) < 0) &&\n       (iVar10 = -directory_list_offset >> 0x1f,\n       uVar7 = (uint)((uint)which < (uint)-directory_list_offset), iVar2 = which._4_4_ - iVar10,\n       (SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7)) == (int)(iVar2 - uVar7) < 0)) {\n      if ((directory_list_offset != 0) || ((uint)which != 0 || which._4_4_ != 0)) {\n        if (local_45 == 0x2b) {\n          if ((uint)which != 0 || which._4_4_ != 0) {\n            uVar7 = directory_list_offset - (uint)which;\n            goto LAB_000a6e85;\n          }\nLAB_000a6fcf:\n          local_38 = directory_list_offset;\n          if (!bVar14) {\n            iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1]);\n            if (iVar6 != 0) goto LAB_000a6f27;\n            local_38 = directory_list_offset;\n          }\n          directory_list_offset = local_38 + -1;\n          free(pushd_directory_list[directory_list_offset]);\n        }\n        else {\n          uVar7 = (uint)which;\n          if ((local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which))\n          goto LAB_000a6fcf;\nLAB_000a6e85:\n          if (((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)) {\n            if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }\n            pushd_error(directory_list_offset,pcVar8);\n            iVar6 = 1;\n            goto LAB_000a6f27;\n          }\n          ppcVar4 = pushd_directory_list + uVar7;\n          free(*ppcVar4);\n          directory_list_offset = iVar6 + -1;\n          if ((int)uVar7 < directory_list_offset) {\n            do {\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            } while (ppcVar3 + iVar6 + -1 != ppcVar5);\n          }\n        }\n        dirs_builtin((WORD_LIST *)0x0);\n        iVar6 = 0;\n        goto LAB_000a6f27;\n      }\n      iVar6 = 0;\n    }\n    if (pcVar8 == (char *)0x0) {\n      pcVar8 = "";\n    }\n  }" if (parenthesized_expression "(list == (WORD_LIST *)0x0)" ( (binary_expression "list == (WORD_LIST *)0x0" identifier == (cast_expression "(WORD_LIST *)0x0" ( (type_descriptor "WORD_LIST *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    which._0_4_ = 0;\n    which._4_4_ = 0;\n    if (((-1 < directory_list_offset >> 0x1f) && (-1 < directory_list_offset)) &&\n       (directory_list_offset != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    pcVar8 = "";\n    iVar6 = directory_list_offset;\n  }" { (expression_statement "which._0_4_ = 0;" (assignment_expression "which._0_4_ = 0" (field_expression "which._0_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "which._4_4_ = 0;" (assignment_expression "which._4_4_ = 0" (field_expression "which._4_4_" identifier . field_identifier) = number_literal) ;) (if_statement "if (((-1 < directory_list_offset >> 0x1f) && (-1 < directory_list_offset)) &&\n       (directory_list_offset != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }" if (parenthesized_expression "(((-1 < directory_list_offset >> 0x1f) && (-1 < directory_list_offset)) &&\n       (directory_list_offset != 0))" ( (binary_expression "((-1 < directory_list_offset >> 0x1f) && (-1 < directory_list_offset)) &&\n       (directory_list_offset != 0)" (parenthesized_expression "((-1 < directory_list_offset >> 0x1f) && (-1 < directory_list_offset))" ( (binary_expression "(-1 < directory_list_offset >> 0x1f) && (-1 < directory_list_offset)" (parenthesized_expression "(-1 < directory_list_offset >> 0x1f)" ( (binary_expression "-1 < directory_list_offset >> 0x1f" number_literal < (binary_expression "directory_list_offset >> 0x1f" identifier >> number_literal)) )) && (parenthesized_expression "(-1 < directory_list_offset)" ( (binary_expression "-1 < directory_list_offset" number_literal < identifier) ))) )) && (parenthesized_expression "(directory_list_offset != 0)" ( (binary_expression "directory_list_offset != 0" identifier != number_literal) ))) )) (compound_statement "{\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }" { (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (goto_statement "goto LAB_000a6fcf;" goto statement_identifier ;) })) (expression_statement "pcVar8 = "";" (assignment_expression "pcVar8 = """ identifier = (string_literal """" " ")) ;) (expression_statement "iVar6 = directory_list_offset;" (assignment_expression "iVar6 = directory_list_offset" identifier = identifier) ;) }) (else_clause "else {\n    pbVar9 = (byte *)list->word->word;\n    bVar14 = *pbVar9 < 0x2d;\n    bVar15 = *pbVar9 == 0x2d;\n    if (bVar15) {\n      iVar6 = 7;\n      pbVar11 = pbVar9;\n      pbVar13 = &DAT_001017a9;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar14 = *pbVar11 < *pbVar13;\n        bVar15 = *pbVar11 == *pbVar13;\n        pbVar11 = pbVar11 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar15);\n      if ((!bVar14 && !bVar15) == bVar14) {\n        builtin_help();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }\n    }\n    which._0_4_ = 0;\n    pcVar8 = (char *)0x0;\n    which._4_4_ = 0;\n    local_45 = 0x2b;\n    bVar14 = false;\nLAB_000a6dee:\n    bVar1 = *pbVar9;\n    if (bVar1 == 0x2d) {\n      if (pbVar9[1] != 0x6e) {\n        if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n        goto LAB_000a6e10;\n      }\n      if (pbVar9[2] != 0) goto LAB_000a6db9;\n      bVar14 = true;\nLAB_000a6de3:\n      list = list->next;\n      if (list == (word_list *)0x0) goto LAB_000a6e10;\n      pbVar9 = (byte *)list->word->word;\n      goto LAB_000a6dee;\n    }\n    if (bVar1 == 0x2b) {\nLAB_000a6db9:\n      iVar6 = legal_number((char *)(pbVar9 + 1),&which);\n      if (iVar6 == 0) {\n        sh_invalidnum(list->word->word);\n        builtin_usage();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }\n      pcVar8 = list->word->word;\n      local_45 = bVar1;\n      goto LAB_000a6de3;\n    }\n    local_45 = 0;\n    if (bVar1 != 0) {\n      pcVar8 = (char *)dcgettext(0,"%s: invalid argument",5);\n      builtin_error(pcVar8,pbVar9);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\nLAB_000a6e10:\n    ppcVar3 = pushd_directory_list;\n    iVar6 = directory_list_offset;\n    iVar12 = directory_list_offset >> 0x1f;\n    if (((SBORROW4(iVar12,which._4_4_) !=\n         SBORROW4(iVar12 - which._4_4_,(uint)((uint)directory_list_offset < (uint)which))) ==\n         (int)((iVar12 - which._4_4_) - (uint)((uint)directory_list_offset < (uint)which)) < 0) &&\n       (iVar10 = -directory_list_offset >> 0x1f,\n       uVar7 = (uint)((uint)which < (uint)-directory_list_offset), iVar2 = which._4_4_ - iVar10,\n       (SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7)) == (int)(iVar2 - uVar7) < 0)) {\n      if ((directory_list_offset != 0) || ((uint)which != 0 || which._4_4_ != 0)) {\n        if (local_45 == 0x2b) {\n          if ((uint)which != 0 || which._4_4_ != 0) {\n            uVar7 = directory_list_offset - (uint)which;\n            goto LAB_000a6e85;\n          }\nLAB_000a6fcf:\n          local_38 = directory_list_offset;\n          if (!bVar14) {\n            iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1]);\n            if (iVar6 != 0) goto LAB_000a6f27;\n            local_38 = directory_list_offset;\n          }\n          directory_list_offset = local_38 + -1;\n          free(pushd_directory_list[directory_list_offset]);\n        }\n        else {\n          uVar7 = (uint)which;\n          if ((local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which))\n          goto LAB_000a6fcf;\nLAB_000a6e85:\n          if (((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)) {\n            if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }\n            pushd_error(directory_list_offset,pcVar8);\n            iVar6 = 1;\n            goto LAB_000a6f27;\n          }\n          ppcVar4 = pushd_directory_list + uVar7;\n          free(*ppcVar4);\n          directory_list_offset = iVar6 + -1;\n          if ((int)uVar7 < directory_list_offset) {\n            do {\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            } while (ppcVar3 + iVar6 + -1 != ppcVar5);\n          }\n        }\n        dirs_builtin((WORD_LIST *)0x0);\n        iVar6 = 0;\n        goto LAB_000a6f27;\n      }\n      iVar6 = 0;\n    }\n    if (pcVar8 == (char *)0x0) {\n      pcVar8 = "";\n    }\n  }" else (compound_statement "{\n    pbVar9 = (byte *)list->word->word;\n    bVar14 = *pbVar9 < 0x2d;\n    bVar15 = *pbVar9 == 0x2d;\n    if (bVar15) {\n      iVar6 = 7;\n      pbVar11 = pbVar9;\n      pbVar13 = &DAT_001017a9;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar14 = *pbVar11 < *pbVar13;\n        bVar15 = *pbVar11 == *pbVar13;\n        pbVar11 = pbVar11 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar15);\n      if ((!bVar14 && !bVar15) == bVar14) {\n        builtin_help();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }\n    }\n    which._0_4_ = 0;\n    pcVar8 = (char *)0x0;\n    which._4_4_ = 0;\n    local_45 = 0x2b;\n    bVar14 = false;\nLAB_000a6dee:\n    bVar1 = *pbVar9;\n    if (bVar1 == 0x2d) {\n      if (pbVar9[1] != 0x6e) {\n        if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n        goto LAB_000a6e10;\n      }\n      if (pbVar9[2] != 0) goto LAB_000a6db9;\n      bVar14 = true;\nLAB_000a6de3:\n      list = list->next;\n      if (list == (word_list *)0x0) goto LAB_000a6e10;\n      pbVar9 = (byte *)list->word->word;\n      goto LAB_000a6dee;\n    }\n    if (bVar1 == 0x2b) {\nLAB_000a6db9:\n      iVar6 = legal_number((char *)(pbVar9 + 1),&which);\n      if (iVar6 == 0) {\n        sh_invalidnum(list->word->word);\n        builtin_usage();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }\n      pcVar8 = list->word->word;\n      local_45 = bVar1;\n      goto LAB_000a6de3;\n    }\n    local_45 = 0;\n    if (bVar1 != 0) {\n      pcVar8 = (char *)dcgettext(0,"%s: invalid argument",5);\n      builtin_error(pcVar8,pbVar9);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\nLAB_000a6e10:\n    ppcVar3 = pushd_directory_list;\n    iVar6 = directory_list_offset;\n    iVar12 = directory_list_offset >> 0x1f;\n    if (((SBORROW4(iVar12,which._4_4_) !=\n         SBORROW4(iVar12 - which._4_4_,(uint)((uint)directory_list_offset < (uint)which))) ==\n         (int)((iVar12 - which._4_4_) - (uint)((uint)directory_list_offset < (uint)which)) < 0) &&\n       (iVar10 = -directory_list_offset >> 0x1f,\n       uVar7 = (uint)((uint)which < (uint)-directory_list_offset), iVar2 = which._4_4_ - iVar10,\n       (SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7)) == (int)(iVar2 - uVar7) < 0)) {\n      if ((directory_list_offset != 0) || ((uint)which != 0 || which._4_4_ != 0)) {\n        if (local_45 == 0x2b) {\n          if ((uint)which != 0 || which._4_4_ != 0) {\n            uVar7 = directory_list_offset - (uint)which;\n            goto LAB_000a6e85;\n          }\nLAB_000a6fcf:\n          local_38 = directory_list_offset;\n          if (!bVar14) {\n            iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1]);\n            if (iVar6 != 0) goto LAB_000a6f27;\n            local_38 = directory_list_offset;\n          }\n          directory_list_offset = local_38 + -1;\n          free(pushd_directory_list[directory_list_offset]);\n        }\n        else {\n          uVar7 = (uint)which;\n          if ((local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which))\n          goto LAB_000a6fcf;\nLAB_000a6e85:\n          if (((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)) {\n            if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }\n            pushd_error(directory_list_offset,pcVar8);\n            iVar6 = 1;\n            goto LAB_000a6f27;\n          }\n          ppcVar4 = pushd_directory_list + uVar7;\n          free(*ppcVar4);\n          directory_list_offset = iVar6 + -1;\n          if ((int)uVar7 < directory_list_offset) {\n            do {\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            } while (ppcVar3 + iVar6 + -1 != ppcVar5);\n          }\n        }\n        dirs_builtin((WORD_LIST *)0x0);\n        iVar6 = 0;\n        goto LAB_000a6f27;\n      }\n      iVar6 = 0;\n    }\n    if (pcVar8 == (char *)0x0) {\n      pcVar8 = "";\n    }\n  }" { (expression_statement "pbVar9 = (byte *)list->word->word;" (assignment_expression "pbVar9 = (byte *)list->word->word" identifier = (cast_expression "(byte *)list->word->word" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "list->word->word" (field_expression "list->word" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "bVar14 = *pbVar9 < 0x2d;" (assignment_expression "bVar14 = *pbVar9 < 0x2d" identifier = (binary_expression "*pbVar9 < 0x2d" (pointer_expression "*pbVar9" * identifier) < number_literal)) ;) (expression_statement "bVar15 = *pbVar9 == 0x2d;" (assignment_expression "bVar15 = *pbVar9 == 0x2d" identifier = (binary_expression "*pbVar9 == 0x2d" (pointer_expression "*pbVar9" * identifier) == number_literal)) ;) (if_statement "if (bVar15) {\n      iVar6 = 7;\n      pbVar11 = pbVar9;\n      pbVar13 = &DAT_001017a9;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar14 = *pbVar11 < *pbVar13;\n        bVar15 = *pbVar11 == *pbVar13;\n        pbVar11 = pbVar11 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar15);\n      if ((!bVar14 && !bVar15) == bVar14) {\n        builtin_help();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }\n    }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n      iVar6 = 7;\n      pbVar11 = pbVar9;\n      pbVar13 = &DAT_001017a9;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar14 = *pbVar11 < *pbVar13;\n        bVar15 = *pbVar11 == *pbVar13;\n        pbVar11 = pbVar11 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar15);\n      if ((!bVar14 && !bVar15) == bVar14) {\n        builtin_help();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }\n    }" { (expression_statement "iVar6 = 7;" (assignment_expression "iVar6 = 7" identifier = number_literal) ;) (expression_statement "pbVar11 = pbVar9;" (assignment_expression "pbVar11 = pbVar9" identifier = identifier) ;) (expression_statement "pbVar13 = &DAT_001017a9;" (assignment_expression "pbVar13 = &DAT_001017a9" identifier = (pointer_expression "&DAT_001017a9" & identifier)) ;) (do_statement "do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar14 = *pbVar11 < *pbVar13;\n        bVar15 = *pbVar11 == *pbVar13;\n        pbVar11 = pbVar11 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar15);" do (compound_statement "{\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar14 = *pbVar11 < *pbVar13;\n        bVar15 = *pbVar11 == *pbVar13;\n        pbVar11 = pbVar11 + 1;\n        pbVar13 = pbVar13 + 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 "bVar14 = *pbVar11 < *pbVar13;" (assignment_expression "bVar14 = *pbVar11 < *pbVar13" identifier = (binary_expression "*pbVar11 < *pbVar13" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar13;" (assignment_expression "bVar15 = *pbVar11 == *pbVar13" identifier = (binary_expression "*pbVar11 == *pbVar13" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar15) == bVar14) {\n        builtin_help();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }" if (parenthesized_expression "((!bVar14 && !bVar15) == bVar14)" ( (binary_expression "(!bVar14 && !bVar15) == bVar14" (parenthesized_expression "(!bVar14 && !bVar15)" ( (binary_expression "!bVar14 && !bVar15" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )) (compound_statement "{\n        builtin_help();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }" { (expression_statement "builtin_help();" (call_expression "builtin_help()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = 0x102;" (assignment_expression "iVar6 = 0x102" identifier = number_literal) ;) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;) })) })) (expression_statement "which._0_4_ = 0;" (assignment_expression "which._0_4_ = 0" (field_expression "which._0_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "pcVar8 = (char *)0x0;" (assignment_expression "pcVar8 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "which._4_4_ = 0;" (assignment_expression "which._4_4_ = 0" (field_expression "which._4_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "local_45 = 0x2b;" (assignment_expression "local_45 = 0x2b" identifier = number_literal) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (labeled_statement "LAB_000a6dee:\n    bVar1 = *pbVar9;" statement_identifier : (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;)) (if_statement "if (bVar1 == 0x2d) {\n      if (pbVar9[1] != 0x6e) {\n        if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n        goto LAB_000a6e10;\n      }\n      if (pbVar9[2] != 0) goto LAB_000a6db9;\n      bVar14 = true;\nLAB_000a6de3:\n      list = list->next;\n      if (list == (word_list *)0x0) goto LAB_000a6e10;\n      pbVar9 = (byte *)list->word->word;\n      goto LAB_000a6dee;\n    }" if (parenthesized_expression "(bVar1 == 0x2d)" ( (binary_expression "bVar1 == 0x2d" identifier == number_literal) )) (compound_statement "{\n      if (pbVar9[1] != 0x6e) {\n        if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n        goto LAB_000a6e10;\n      }\n      if (pbVar9[2] != 0) goto LAB_000a6db9;\n      bVar14 = true;\nLAB_000a6de3:\n      list = list->next;\n      if (list == (word_list *)0x0) goto LAB_000a6e10;\n      pbVar9 = (byte *)list->word->word;\n      goto LAB_000a6dee;\n    }" { (if_statement "if (pbVar9[1] != 0x6e) {\n        if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n        goto LAB_000a6e10;\n      }" if (parenthesized_expression "(pbVar9[1] != 0x6e)" ( (binary_expression "pbVar9[1] != 0x6e" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n        goto LAB_000a6e10;\n      }" { (if_statement "if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;" if (parenthesized_expression "((pbVar9[1] != 0x2d) || (pbVar9[2] != 0))" ( (binary_expression "(pbVar9[1] != 0x2d) || (pbVar9[2] != 0)" (parenthesized_expression "(pbVar9[1] != 0x2d)" ( (binary_expression "pbVar9[1] != 0x2d" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(pbVar9[2] != 0)" ( (binary_expression "pbVar9[2] != 0" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) != number_literal) ))) )) (goto_statement "goto LAB_000a6db9;" goto statement_identifier ;)) (goto_statement "goto LAB_000a6e10;" goto statement_identifier ;) })) (if_statement "if (pbVar9[2] != 0) goto LAB_000a6db9;" if (parenthesized_expression "(pbVar9[2] != 0)" ( (binary_expression "pbVar9[2] != 0" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_000a6db9;" goto statement_identifier ;)) (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" identifier = true) ;) (labeled_statement "LAB_000a6de3:\n      list = list->next;" statement_identifier : (expression_statement "list = list->next;" (assignment_expression "list = list->next" identifier = (field_expression "list->next" identifier -> field_identifier)) ;)) (if_statement "if (list == (word_list *)0x0) goto LAB_000a6e10;" if (parenthesized_expression "(list == (word_list *)0x0)" ( (binary_expression "list == (word_list *)0x0" identifier == (cast_expression "(word_list *)0x0" ( (type_descriptor "word_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a6e10;" goto statement_identifier ;)) (expression_statement "pbVar9 = (byte *)list->word->word;" (assignment_expression "pbVar9 = (byte *)list->word->word" identifier = (cast_expression "(byte *)list->word->word" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "list->word->word" (field_expression "list->word" identifier -> field_identifier) -> field_identifier))) ;) (goto_statement "goto LAB_000a6dee;" goto statement_identifier ;) })) (if_statement "if (bVar1 == 0x2b) {\nLAB_000a6db9:\n      iVar6 = legal_number((char *)(pbVar9 + 1),&which);\n      if (iVar6 == 0) {\n        sh_invalidnum(list->word->word);\n        builtin_usage();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }\n      pcVar8 = list->word->word;\n      local_45 = bVar1;\n      goto LAB_000a6de3;\n    }" if (parenthesized_expression "(bVar1 == 0x2b)" ( (binary_expression "bVar1 == 0x2b" identifier == number_literal) )) (compound_statement "{\nLAB_000a6db9:\n      iVar6 = legal_number((char *)(pbVar9 + 1),&which);\n      if (iVar6 == 0) {\n        sh_invalidnum(list->word->word);\n        builtin_usage();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }\n      pcVar8 = list->word->word;\n      local_45 = bVar1;\n      goto LAB_000a6de3;\n    }" { (labeled_statement "LAB_000a6db9:\n      iVar6 = legal_number((char *)(pbVar9 + 1),&which);" statement_identifier : (expression_statement "iVar6 = legal_number((char *)(pbVar9 + 1),&which);" (assignment_expression "iVar6 = legal_number((char *)(pbVar9 + 1),&which)" identifier = (call_expression "legal_number((char *)(pbVar9 + 1),&which)" identifier (argument_list "((char *)(pbVar9 + 1),&which)" ( (cast_expression "(char *)(pbVar9 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar9 + 1)" ( (binary_expression "pbVar9 + 1" identifier + number_literal) ))) , (pointer_expression "&which" & identifier) )))) ;)) (if_statement "if (iVar6 == 0) {\n        sh_invalidnum(list->word->word);\n        builtin_usage();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        sh_invalidnum(list->word->word);\n        builtin_usage();\n        iVar6 = 0x102;\n        goto LAB_000a6f27;\n      }" { (expression_statement "sh_invalidnum(list->word->word);" (call_expression "sh_invalidnum(list->word->word)" identifier (argument_list "(list->word->word)" ( (field_expression "list->word->word" (field_expression "list->word" identifier -> field_identifier) -> field_identifier) ))) ;) (expression_statement "builtin_usage();" (call_expression "builtin_usage()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = 0x102;" (assignment_expression "iVar6 = 0x102" identifier = number_literal) ;) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;) })) (expression_statement "pcVar8 = list->word->word;" (assignment_expression "pcVar8 = list->word->word" identifier = (field_expression "list->word->word" (field_expression "list->word" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "local_45 = bVar1;" (assignment_expression "local_45 = bVar1" identifier = identifier) ;) (goto_statement "goto LAB_000a6de3;" goto statement_identifier ;) })) (expression_statement "local_45 = 0;" (assignment_expression "local_45 = 0" identifier = number_literal) ;) (if_statement "if (bVar1 != 0) {\n      pcVar8 = (char *)dcgettext(0,"%s: invalid argument",5);\n      builtin_error(pcVar8,pbVar9);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar8 = (char *)dcgettext(0,"%s: invalid argument",5);\n      builtin_error(pcVar8,pbVar9);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }" { (expression_statement "pcVar8 = (char *)dcgettext(0,"%s: invalid argument",5);" (assignment_expression "pcVar8 = (char *)dcgettext(0,"%s: invalid argument",5)" identifier = (cast_expression "(char *)dcgettext(0,"%s: invalid argument",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%s: invalid argument",5)" identifier (argument_list "(0,"%s: invalid argument",5)" ( number_literal , (string_literal ""%s: invalid argument"" " string_content ") , number_literal ))))) ;) (expression_statement "builtin_error(pcVar8,pbVar9);" (call_expression "builtin_error(pcVar8,pbVar9)" identifier (argument_list "(pcVar8,pbVar9)" ( identifier , identifier ))) ;) (expression_statement "builtin_usage();" (call_expression "builtin_usage()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = 0x102;" (assignment_expression "iVar6 = 0x102" identifier = number_literal) ;) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;) })) (labeled_statement "LAB_000a6e10:\n    ppcVar3 = pushd_directory_list;" statement_identifier : (expression_statement "ppcVar3 = pushd_directory_list;" (assignment_expression "ppcVar3 = pushd_directory_list" identifier = identifier) ;)) (expression_statement "iVar6 = directory_list_offset;" (assignment_expression "iVar6 = directory_list_offset" identifier = identifier) ;) (expression_statement "iVar12 = directory_list_offset >> 0x1f;" (assignment_expression "iVar12 = directory_list_offset >> 0x1f" identifier = (binary_expression "directory_list_offset >> 0x1f" identifier >> number_literal)) ;) (if_statement "if (((SBORROW4(iVar12,which._4_4_) !=\n         SBORROW4(iVar12 - which._4_4_,(uint)((uint)directory_list_offset < (uint)which))) ==\n         (int)((iVar12 - which._4_4_) - (uint)((uint)directory_list_offset < (uint)which)) < 0) &&\n       (iVar10 = -directory_list_offset >> 0x1f,\n       uVar7 = (uint)((uint)which < (uint)-directory_list_offset), iVar2 = which._4_4_ - iVar10,\n       (SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7)) == (int)(iVar2 - uVar7) < 0)) {\n      if ((directory_list_offset != 0) || ((uint)which != 0 || which._4_4_ != 0)) {\n        if (local_45 == 0x2b) {\n          if ((uint)which != 0 || which._4_4_ != 0) {\n            uVar7 = directory_list_offset - (uint)which;\n            goto LAB_000a6e85;\n          }\nLAB_000a6fcf:\n          local_38 = directory_list_offset;\n          if (!bVar14) {\n            iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1]);\n            if (iVar6 != 0) goto LAB_000a6f27;\n            local_38 = directory_list_offset;\n          }\n          directory_list_offset = local_38 + -1;\n          free(pushd_directory_list[directory_list_offset]);\n        }\n        else {\n          uVar7 = (uint)which;\n          if ((local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which))\n          goto LAB_000a6fcf;\nLAB_000a6e85:\n          if (((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)) {\n            if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }\n            pushd_error(directory_list_offset,pcVar8);\n            iVar6 = 1;\n            goto LAB_000a6f27;\n          }\n          ppcVar4 = pushd_directory_list + uVar7;\n          free(*ppcVar4);\n          directory_list_offset = iVar6 + -1;\n          if ((int)uVar7 < directory_list_offset) {\n            do {\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            } while (ppcVar3 + iVar6 + -1 != ppcVar5);\n          }\n        }\n        dirs_builtin((WORD_LIST *)0x0);\n        iVar6 = 0;\n        goto LAB_000a6f27;\n      }\n      iVar6 = 0;\n    }" if (parenthesized_expression "(((SBORROW4(iVar12,which._4_4_) !=\n         SBORROW4(iVar12 - which._4_4_,(uint)((uint)directory_list_offset < (uint)which))) ==\n         (int)((iVar12 - which._4_4_) - (uint)((uint)directory_list_offset < (uint)which)) < 0) &&\n       (iVar10 = -directory_list_offset >> 0x1f,\n       uVar7 = (uint)((uint)which < (uint)-directory_list_offset), iVar2 = which._4_4_ - iVar10,\n       (SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7)) == (int)(iVar2 - uVar7) < 0))" ( (binary_expression "((SBORROW4(iVar12,which._4_4_) !=\n         SBORROW4(iVar12 - which._4_4_,(uint)((uint)directory_list_offset < (uint)which))) ==\n         (int)((iVar12 - which._4_4_) - (uint)((uint)directory_list_offset < (uint)which)) < 0) &&\n       (iVar10 = -directory_list_offset >> 0x1f,\n       uVar7 = (uint)((uint)which < (uint)-directory_list_offset), iVar2 = which._4_4_ - iVar10,\n       (SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7)) == (int)(iVar2 - uVar7) < 0)" (parenthesized_expression "((SBORROW4(iVar12,which._4_4_) !=\n         SBORROW4(iVar12 - which._4_4_,(uint)((uint)directory_list_offset < (uint)which))) ==\n         (int)((iVar12 - which._4_4_) - (uint)((uint)directory_list_offset < (uint)which)) < 0)" ( (binary_expression "(SBORROW4(iVar12,which._4_4_) !=\n         SBORROW4(iVar12 - which._4_4_,(uint)((uint)directory_list_offset < (uint)which))) ==\n         (int)((iVar12 - which._4_4_) - (uint)((uint)directory_list_offset < (uint)which)) < 0" (parenthesized_expression "(SBORROW4(iVar12,which._4_4_) !=\n         SBORROW4(iVar12 - which._4_4_,(uint)((uint)directory_list_offset < (uint)which)))" ( (binary_expression "SBORROW4(iVar12,which._4_4_) !=\n         SBORROW4(iVar12 - which._4_4_,(uint)((uint)directory_list_offset < (uint)which))" (call_expression "SBORROW4(iVar12,which._4_4_)" identifier (argument_list "(iVar12,which._4_4_)" ( identifier , (field_expression "which._4_4_" identifier . field_identifier) ))) != (call_expression "SBORROW4(iVar12 - which._4_4_,(uint)((uint)directory_list_offset < (uint)which))" identifier (argument_list "(iVar12 - which._4_4_,(uint)((uint)directory_list_offset < (uint)which))" ( (binary_expression "iVar12 - which._4_4_" identifier - (field_expression "which._4_4_" identifier . field_identifier)) , (call_expression "(uint)((uint)directory_list_offset < (uint)which)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)directory_list_offset < (uint)which)" ( (binary_expression "(uint)directory_list_offset < (uint)which" (cast_expression "(uint)directory_list_offset" ( (type_descriptor "uint" type_identifier) ) identifier) < (cast_expression "(uint)which" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) )))) )) == (binary_expression "(int)((iVar12 - which._4_4_) - (uint)((uint)directory_list_offset < (uint)which)) < 0" (cast_expression "(int)((iVar12 - which._4_4_) - (uint)((uint)directory_list_offset < (uint)which))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar12 - which._4_4_) - (uint)((uint)directory_list_offset < (uint)which))" ( (binary_expression "(iVar12 - which._4_4_) - (uint)((uint)directory_list_offset < (uint)which)" (parenthesized_expression "(iVar12 - which._4_4_)" ( (binary_expression "iVar12 - which._4_4_" identifier - (field_expression "which._4_4_" identifier . field_identifier)) )) - (call_expression "(uint)((uint)directory_list_offset < (uint)which)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)directory_list_offset < (uint)which)" ( (binary_expression "(uint)directory_list_offset < (uint)which" (cast_expression "(uint)directory_list_offset" ( (type_descriptor "uint" type_identifier) ) identifier) < (cast_expression "(uint)which" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) ))) < number_literal)) )) && (parenthesized_expression "(iVar10 = -directory_list_offset >> 0x1f,\n       uVar7 = (uint)((uint)which < (uint)-directory_list_offset), iVar2 = which._4_4_ - iVar10,\n       (SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7)) == (int)(iVar2 - uVar7) < 0)" ( (comma_expression "iVar10 = -directory_list_offset >> 0x1f,\n       uVar7 = (uint)((uint)which < (uint)-directory_list_offset), iVar2 = which._4_4_ - iVar10,\n       (SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7)) == (int)(iVar2 - uVar7) < 0" (assignment_expression "iVar10 = -directory_list_offset >> 0x1f" identifier = (binary_expression "-directory_list_offset >> 0x1f" (unary_expression "-directory_list_offset" - identifier) >> number_literal)) , (comma_expression "uVar7 = (uint)((uint)which < (uint)-directory_list_offset), iVar2 = which._4_4_ - iVar10,\n       (SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7)) == (int)(iVar2 - uVar7) < 0" (assignment_expression "uVar7 = (uint)((uint)which < (uint)-directory_list_offset)" identifier = (call_expression "(uint)((uint)which < (uint)-directory_list_offset)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)which < (uint)-directory_list_offset)" ( (binary_expression "(uint)which < (uint)-directory_list_offset" (cast_expression "(uint)which" ( (type_descriptor "uint" type_identifier) ) identifier) < (binary_expression "(uint)-directory_list_offset" (parenthesized_expression "(uint)" ( identifier )) - identifier)) )))) , (comma_expression "iVar2 = which._4_4_ - iVar10,\n       (SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7)) == (int)(iVar2 - uVar7) < 0" (assignment_expression "iVar2 = which._4_4_ - iVar10" identifier = (binary_expression "which._4_4_ - iVar10" (field_expression "which._4_4_" identifier . field_identifier) - identifier)) , (binary_expression "(SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7)) == (int)(iVar2 - uVar7) < 0" (parenthesized_expression "(SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7))" ( (binary_expression "SBORROW4(which._4_4_,iVar10) != SBORROW4(iVar2,uVar7)" (call_expression "SBORROW4(which._4_4_,iVar10)" identifier (argument_list "(which._4_4_,iVar10)" ( (field_expression "which._4_4_" identifier . field_identifier) , identifier ))) != (call_expression "SBORROW4(iVar2,uVar7)" identifier (argument_list "(iVar2,uVar7)" ( identifier , identifier )))) )) == (binary_expression "(int)(iVar2 - uVar7) < 0" (cast_expression "(int)(iVar2 - uVar7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - uVar7)" ( (binary_expression "iVar2 - uVar7" identifier - identifier) ))) < number_literal))))) ))) )) (compound_statement "{\n      if ((directory_list_offset != 0) || ((uint)which != 0 || which._4_4_ != 0)) {\n        if (local_45 == 0x2b) {\n          if ((uint)which != 0 || which._4_4_ != 0) {\n            uVar7 = directory_list_offset - (uint)which;\n            goto LAB_000a6e85;\n          }\nLAB_000a6fcf:\n          local_38 = directory_list_offset;\n          if (!bVar14) {\n            iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1]);\n            if (iVar6 != 0) goto LAB_000a6f27;\n            local_38 = directory_list_offset;\n          }\n          directory_list_offset = local_38 + -1;\n          free(pushd_directory_list[directory_list_offset]);\n        }\n        else {\n          uVar7 = (uint)which;\n          if ((local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which))\n          goto LAB_000a6fcf;\nLAB_000a6e85:\n          if (((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)) {\n            if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }\n            pushd_error(directory_list_offset,pcVar8);\n            iVar6 = 1;\n            goto LAB_000a6f27;\n          }\n          ppcVar4 = pushd_directory_list + uVar7;\n          free(*ppcVar4);\n          directory_list_offset = iVar6 + -1;\n          if ((int)uVar7 < directory_list_offset) {\n            do {\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            } while (ppcVar3 + iVar6 + -1 != ppcVar5);\n          }\n        }\n        dirs_builtin((WORD_LIST *)0x0);\n        iVar6 = 0;\n        goto LAB_000a6f27;\n      }\n      iVar6 = 0;\n    }" { (if_statement "if ((directory_list_offset != 0) || ((uint)which != 0 || which._4_4_ != 0)) {\n        if (local_45 == 0x2b) {\n          if ((uint)which != 0 || which._4_4_ != 0) {\n            uVar7 = directory_list_offset - (uint)which;\n            goto LAB_000a6e85;\n          }\nLAB_000a6fcf:\n          local_38 = directory_list_offset;\n          if (!bVar14) {\n            iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1]);\n            if (iVar6 != 0) goto LAB_000a6f27;\n            local_38 = directory_list_offset;\n          }\n          directory_list_offset = local_38 + -1;\n          free(pushd_directory_list[directory_list_offset]);\n        }\n        else {\n          uVar7 = (uint)which;\n          if ((local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which))\n          goto LAB_000a6fcf;\nLAB_000a6e85:\n          if (((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)) {\n            if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }\n            pushd_error(directory_list_offset,pcVar8);\n            iVar6 = 1;\n            goto LAB_000a6f27;\n          }\n          ppcVar4 = pushd_directory_list + uVar7;\n          free(*ppcVar4);\n          directory_list_offset = iVar6 + -1;\n          if ((int)uVar7 < directory_list_offset) {\n            do {\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            } while (ppcVar3 + iVar6 + -1 != ppcVar5);\n          }\n        }\n        dirs_builtin((WORD_LIST *)0x0);\n        iVar6 = 0;\n        goto LAB_000a6f27;\n      }" if (parenthesized_expression "((directory_list_offset != 0) || ((uint)which != 0 || which._4_4_ != 0))" ( (binary_expression "(directory_list_offset != 0) || ((uint)which != 0 || which._4_4_ != 0)" (parenthesized_expression "(directory_list_offset != 0)" ( (binary_expression "directory_list_offset != 0" identifier != number_literal) )) || (parenthesized_expression "((uint)which != 0 || which._4_4_ != 0)" ( (binary_expression "(uint)which != 0 || which._4_4_ != 0" (binary_expression "(uint)which != 0" (cast_expression "(uint)which" ( (type_descriptor "uint" type_identifier) ) identifier) != number_literal) || (binary_expression "which._4_4_ != 0" (field_expression "which._4_4_" identifier . field_identifier) != number_literal)) ))) )) (compound_statement "{\n        if (local_45 == 0x2b) {\n          if ((uint)which != 0 || which._4_4_ != 0) {\n            uVar7 = directory_list_offset - (uint)which;\n            goto LAB_000a6e85;\n          }\nLAB_000a6fcf:\n          local_38 = directory_list_offset;\n          if (!bVar14) {\n            iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1]);\n            if (iVar6 != 0) goto LAB_000a6f27;\n            local_38 = directory_list_offset;\n          }\n          directory_list_offset = local_38 + -1;\n          free(pushd_directory_list[directory_list_offset]);\n        }\n        else {\n          uVar7 = (uint)which;\n          if ((local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which))\n          goto LAB_000a6fcf;\nLAB_000a6e85:\n          if (((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)) {\n            if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }\n            pushd_error(directory_list_offset,pcVar8);\n            iVar6 = 1;\n            goto LAB_000a6f27;\n          }\n          ppcVar4 = pushd_directory_list + uVar7;\n          free(*ppcVar4);\n          directory_list_offset = iVar6 + -1;\n          if ((int)uVar7 < directory_list_offset) {\n            do {\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            } while (ppcVar3 + iVar6 + -1 != ppcVar5);\n          }\n        }\n        dirs_builtin((WORD_LIST *)0x0);\n        iVar6 = 0;\n        goto LAB_000a6f27;\n      }" { (if_statement "if (local_45 == 0x2b) {\n          if ((uint)which != 0 || which._4_4_ != 0) {\n            uVar7 = directory_list_offset - (uint)which;\n            goto LAB_000a6e85;\n          }\nLAB_000a6fcf:\n          local_38 = directory_list_offset;\n          if (!bVar14) {\n            iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1]);\n            if (iVar6 != 0) goto LAB_000a6f27;\n            local_38 = directory_list_offset;\n          }\n          directory_list_offset = local_38 + -1;\n          free(pushd_directory_list[directory_list_offset]);\n        }\n        else {\n          uVar7 = (uint)which;\n          if ((local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which))\n          goto LAB_000a6fcf;\nLAB_000a6e85:\n          if (((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)) {\n            if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }\n            pushd_error(directory_list_offset,pcVar8);\n            iVar6 = 1;\n            goto LAB_000a6f27;\n          }\n          ppcVar4 = pushd_directory_list + uVar7;\n          free(*ppcVar4);\n          directory_list_offset = iVar6 + -1;\n          if ((int)uVar7 < directory_list_offset) {\n            do {\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            } while (ppcVar3 + iVar6 + -1 != ppcVar5);\n          }\n        }" if (parenthesized_expression "(local_45 == 0x2b)" ( (binary_expression "local_45 == 0x2b" identifier == number_literal) )) (compound_statement "{\n          if ((uint)which != 0 || which._4_4_ != 0) {\n            uVar7 = directory_list_offset - (uint)which;\n            goto LAB_000a6e85;\n          }\nLAB_000a6fcf:\n          local_38 = directory_list_offset;\n          if (!bVar14) {\n            iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1]);\n            if (iVar6 != 0) goto LAB_000a6f27;\n            local_38 = directory_list_offset;\n          }\n          directory_list_offset = local_38 + -1;\n          free(pushd_directory_list[directory_list_offset]);\n        }" { (if_statement "if ((uint)which != 0 || which._4_4_ != 0) {\n            uVar7 = directory_list_offset - (uint)which;\n            goto LAB_000a6e85;\n          }" if (parenthesized_expression "((uint)which != 0 || which._4_4_ != 0)" ( (binary_expression "(uint)which != 0 || which._4_4_ != 0" (binary_expression "(uint)which != 0" (cast_expression "(uint)which" ( (type_descriptor "uint" type_identifier) ) identifier) != number_literal) || (binary_expression "which._4_4_ != 0" (field_expression "which._4_4_" identifier . field_identifier) != number_literal)) )) (compound_statement "{\n            uVar7 = directory_list_offset - (uint)which;\n            goto LAB_000a6e85;\n          }" { (expression_statement "uVar7 = directory_list_offset - (uint)which;" (assignment_expression "uVar7 = directory_list_offset - (uint)which" identifier = (binary_expression "directory_list_offset - (uint)which" identifier - (cast_expression "(uint)which" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (goto_statement "goto LAB_000a6e85;" goto statement_identifier ;) })) (labeled_statement "LAB_000a6fcf:\n          local_38 = directory_list_offset;" statement_identifier : (expression_statement "local_38 = directory_list_offset;" (assignment_expression "local_38 = directory_list_offset" identifier = identifier) ;)) (if_statement "if (!bVar14) {\n            iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1]);\n            if (iVar6 != 0) goto LAB_000a6f27;\n            local_38 = directory_list_offset;\n          }" if (parenthesized_expression "(!bVar14)" ( (unary_expression "!bVar14" ! identifier) )) (compound_statement "{\n            iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1]);\n            if (iVar6 != 0) goto LAB_000a6f27;\n            local_38 = directory_list_offset;\n          }" { (expression_statement "iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1]);" (assignment_expression "iVar6 = cd_to_string(pushd_directory_list[directory_list_offset + -1])" identifier = (call_expression "cd_to_string(pushd_directory_list[directory_list_offset + -1])" identifier (argument_list "(pushd_directory_list[directory_list_offset + -1])" ( (subscript_expression "pushd_directory_list[directory_list_offset + -1]" identifier [ (binary_expression "directory_list_offset + -1" identifier + number_literal) ]) )))) ;) (if_statement "if (iVar6 != 0) goto LAB_000a6f27;" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;)) (expression_statement "local_38 = directory_list_offset;" (assignment_expression "local_38 = directory_list_offset" identifier = identifier) ;) })) (expression_statement "directory_list_offset = local_38 + -1;" (assignment_expression "directory_list_offset = local_38 + -1" identifier = (binary_expression "local_38 + -1" identifier + number_literal)) ;) (expression_statement "free(pushd_directory_list[directory_list_offset]);" (call_expression "free(pushd_directory_list[directory_list_offset])" identifier (argument_list "(pushd_directory_list[directory_list_offset])" ( (subscript_expression "pushd_directory_list[directory_list_offset]" identifier [ identifier ]) ))) ;) }) (else_clause "else {\n          uVar7 = (uint)which;\n          if ((local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which))\n          goto LAB_000a6fcf;\nLAB_000a6e85:\n          if (((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)) {\n            if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }\n            pushd_error(directory_list_offset,pcVar8);\n            iVar6 = 1;\n            goto LAB_000a6f27;\n          }\n          ppcVar4 = pushd_directory_list + uVar7;\n          free(*ppcVar4);\n          directory_list_offset = iVar6 + -1;\n          if ((int)uVar7 < directory_list_offset) {\n            do {\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            } while (ppcVar3 + iVar6 + -1 != ppcVar5);\n          }\n        }" else (compound_statement "{\n          uVar7 = (uint)which;\n          if ((local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which))\n          goto LAB_000a6fcf;\nLAB_000a6e85:\n          if (((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)) {\n            if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }\n            pushd_error(directory_list_offset,pcVar8);\n            iVar6 = 1;\n            goto LAB_000a6f27;\n          }\n          ppcVar4 = pushd_directory_list + uVar7;\n          free(*ppcVar4);\n          directory_list_offset = iVar6 + -1;\n          if ((int)uVar7 < directory_list_offset) {\n            do {\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            } while (ppcVar3 + iVar6 + -1 != ppcVar5);\n          }\n        }" { (expression_statement "uVar7 = (uint)which;" (assignment_expression "uVar7 = (uint)which" identifier = (cast_expression "(uint)which" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which))\n          goto LAB_000a6fcf;" if (parenthesized_expression "((local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which))" ( (binary_expression "(local_45 == 0x2d) && (iVar12 == which._4_4_ && directory_list_offset == (uint)which)" (parenthesized_expression "(local_45 == 0x2d)" ( (binary_expression "local_45 == 0x2d" identifier == number_literal) )) && (parenthesized_expression "(iVar12 == which._4_4_ && directory_list_offset == (uint)which)" ( (binary_expression "iVar12 == which._4_4_ && directory_list_offset == (uint)which" (binary_expression "iVar12 == which._4_4_" identifier == (field_expression "which._4_4_" identifier . field_identifier)) && (binary_expression "directory_list_offset == (uint)which" identifier == (cast_expression "(uint)which" ( (type_descriptor "uint" type_identifier) ) identifier))) ))) )) (goto_statement "goto LAB_000a6fcf;" goto statement_identifier ;)) (labeled_statement "LAB_000a6e85:\n          if (((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)) {\n            if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }\n            pushd_error(directory_list_offset,pcVar8);\n            iVar6 = 1;\n            goto LAB_000a6f27;\n          }" statement_identifier : (if_statement "if (((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)) {\n            if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }\n            pushd_error(directory_list_offset,pcVar8);\n            iVar6 = 1;\n            goto LAB_000a6f27;\n          }" if (parenthesized_expression "(((int)uVar7 < 0) || (directory_list_offset < (int)uVar7))" ( (binary_expression "((int)uVar7 < 0) || (directory_list_offset < (int)uVar7)" (parenthesized_expression "((int)uVar7 < 0)" ( (binary_expression "(int)uVar7 < 0" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(directory_list_offset < (int)uVar7)" ( (binary_expression "directory_list_offset < (int)uVar7" identifier < (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n            if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }\n            pushd_error(directory_list_offset,pcVar8);\n            iVar6 = 1;\n            goto LAB_000a6f27;\n          }" { (if_statement "if (pcVar8 == (char *)0x0) {\n              pcVar8 = "";\n            }" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pcVar8 = "";\n            }" { (expression_statement "pcVar8 = "";" (assignment_expression "pcVar8 = """ identifier = (string_literal """" " ")) ;) })) (expression_statement "pushd_error(directory_list_offset,pcVar8);" (call_expression "pushd_error(directory_list_offset,pcVar8)" identifier (argument_list "(directory_list_offset,pcVar8)" ( identifier , identifier ))) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;) }))) (expression_statement "ppcVar4 = pushd_directory_list + uVar7;" (assignment_expression "ppcVar4 = pushd_directory_list + uVar7" identifier = (binary_expression "pushd_directory_list + uVar7" identifier + identifier)) ;) (expression_statement "free(*ppcVar4);" (call_expression "free(*ppcVar4)" identifier (argument_list "(*ppcVar4)" ( (pointer_expression "*ppcVar4" * identifier) ))) ;) (expression_statement "directory_list_offset = iVar6 + -1;" (assignment_expression "directory_list_offset = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (if_statement "if ((int)uVar7 < directory_list_offset) {\n            do {\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            } while (ppcVar3 + iVar6 + -1 != ppcVar5);\n          }" if (parenthesized_expression "((int)uVar7 < directory_list_offset)" ( (binary_expression "(int)uVar7 < directory_list_offset" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n            do {\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            } while (ppcVar3 + iVar6 + -1 != ppcVar5);\n          }" { (do_statement "do {\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            } while (ppcVar3 + iVar6 + -1 != ppcVar5);" do (compound_statement "{\n              ppcVar5 = ppcVar4 + 1;\n              *ppcVar4 = ppcVar4[1];\n              ppcVar4 = ppcVar5;\n            }" { (expression_statement "ppcVar5 = ppcVar4 + 1;" (assignment_expression "ppcVar5 = ppcVar4 + 1" identifier = (binary_expression "ppcVar4 + 1" identifier + number_literal)) ;) (expression_statement "*ppcVar4 = ppcVar4[1];" (assignment_expression "*ppcVar4 = ppcVar4[1]" (pointer_expression "*ppcVar4" * identifier) = (subscript_expression "ppcVar4[1]" identifier [ number_literal ])) ;) (expression_statement "ppcVar4 = ppcVar5;" (assignment_expression "ppcVar4 = ppcVar5" identifier = identifier) ;) }) while (parenthesized_expression "(ppcVar3 + iVar6 + -1 != ppcVar5)" ( (binary_expression "ppcVar3 + iVar6 + -1 != ppcVar5" (binary_expression "ppcVar3 + iVar6 + -1" (binary_expression "ppcVar3 + iVar6" identifier + identifier) + number_literal) != identifier) )) ;) })) }))) (expression_statement "dirs_builtin((WORD_LIST *)0x0);" (call_expression "dirs_builtin((WORD_LIST *)0x0)" identifier (argument_list "((WORD_LIST *)0x0)" ( (cast_expression "(WORD_LIST *)0x0" ( (type_descriptor "WORD_LIST *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;) })) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) })) (if_statement "if (pcVar8 == (char *)0x0) {\n      pcVar8 = "";\n    }" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar8 = "";\n    }" { (expression_statement "pcVar8 = "";" (assignment_expression "pcVar8 = """ identifier = (string_literal """" " ")) ;) })) }))) (expression_statement "pushd_error(iVar6,pcVar8);" (call_expression "pushd_error(iVar6,pcVar8)" identifier (argument_list "(iVar6,pcVar8)" ( identifier , identifier ))) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (labeled_statement "LAB_000a6f27:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar6;" return identifier ;) })))
(translation_unit "int popd_builtin(int *param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  byte *pbVar9;\n  int iVar10;\n  byte *pbVar11;\n  int iVar12;\n  byte *pbVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  bool bVar15;\n  byte local_45;\n  uint local_38;\n  uint local_2c;\n  int local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xa6d59;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == (int *)0x0) {\n    local_2c = 0;\n    local_28 = 0;\n    if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    goto LAB_000a6f1b;\n  }\n  pbVar9 = *(byte **)param_1[1];\n  bVar14 = *pbVar9 < 0x2d;\n  bVar15 = *pbVar9 == 0x2d;\n  if (bVar15) {\n    iVar6 = 7;\n    pbVar11 = pbVar9;\n    pbVar13 = &DAT_001017a9;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n  }\n  local_2c = 0;\n  local_28 = 0;\n  local_45 = 0x2b;\n  bVar14 = false;\nLAB_000a6dee:\n  bVar1 = *pbVar9;\n  if (bVar1 == 0x2d) {\n    if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }\n    if (pbVar9[2] != 0) goto LAB_000a6db9;\n    bVar14 = true;\nLAB_000a6de3:\n    param_1 = (int *)*param_1;\n    if (param_1 == (int *)0x0) goto LAB_000a6e10;\n    pbVar9 = *(byte **)param_1[1];\n    goto LAB_000a6dee;\n  }\n  if (bVar1 == 0x2b) {\nLAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);\n    local_45 = bVar1;\n    if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n    goto LAB_000a6de3;\n  }\n  local_45 = 0;\n  if (bVar1 != 0) {\n    uVar7 = dcgettext(0,"%s: invalid argument",5);\n    builtin_error(uVar7,pbVar9);\n    builtin_usage();\n    iVar6 = 0x102;\n    goto LAB_000a6f27;\n  }\nLAB_000a6e10:\n  iVar6 = DAT_0015170c;\n  uVar3 = DAT_00151704;\n  iVar12 = (int)DAT_00151704 >> 0x1f;\n  if (((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)) {\n    if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }\n  }\nLAB_000a6f1b:\n  FUN_000a6250();\n  iVar6 = 1;\nLAB_000a6f27:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }\n  return iVar6;\n}\n\n" (function_definition "int popd_builtin(int *param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  byte *pbVar9;\n  int iVar10;\n  byte *pbVar11;\n  int iVar12;\n  byte *pbVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  bool bVar15;\n  byte local_45;\n  uint local_38;\n  uint local_2c;\n  int local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xa6d59;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == (int *)0x0) {\n    local_2c = 0;\n    local_28 = 0;\n    if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    goto LAB_000a6f1b;\n  }\n  pbVar9 = *(byte **)param_1[1];\n  bVar14 = *pbVar9 < 0x2d;\n  bVar15 = *pbVar9 == 0x2d;\n  if (bVar15) {\n    iVar6 = 7;\n    pbVar11 = pbVar9;\n    pbVar13 = &DAT_001017a9;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n  }\n  local_2c = 0;\n  local_28 = 0;\n  local_45 = 0x2b;\n  bVar14 = false;\nLAB_000a6dee:\n  bVar1 = *pbVar9;\n  if (bVar1 == 0x2d) {\n    if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }\n    if (pbVar9[2] != 0) goto LAB_000a6db9;\n    bVar14 = true;\nLAB_000a6de3:\n    param_1 = (int *)*param_1;\n    if (param_1 == (int *)0x0) goto LAB_000a6e10;\n    pbVar9 = *(byte **)param_1[1];\n    goto LAB_000a6dee;\n  }\n  if (bVar1 == 0x2b) {\nLAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);\n    local_45 = bVar1;\n    if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n    goto LAB_000a6de3;\n  }\n  local_45 = 0;\n  if (bVar1 != 0) {\n    uVar7 = dcgettext(0,"%s: invalid argument",5);\n    builtin_error(uVar7,pbVar9);\n    builtin_usage();\n    iVar6 = 0x102;\n    goto LAB_000a6f27;\n  }\nLAB_000a6e10:\n  iVar6 = DAT_0015170c;\n  uVar3 = DAT_00151704;\n  iVar12 = (int)DAT_00151704 >> 0x1f;\n  if (((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)) {\n    if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }\n  }\nLAB_000a6f1b:\n  FUN_000a6250();\n  iVar6 = 1;\nLAB_000a6f27:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }\n  return iVar6;\n}" primitive_type (function_declarator "popd_builtin(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  byte *pbVar9;\n  int iVar10;\n  byte *pbVar11;\n  int iVar12;\n  byte *pbVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  bool bVar15;\n  byte local_45;\n  uint local_38;\n  uint local_2c;\n  int local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xa6d59;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == (int *)0x0) {\n    local_2c = 0;\n    local_28 = 0;\n    if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    goto LAB_000a6f1b;\n  }\n  pbVar9 = *(byte **)param_1[1];\n  bVar14 = *pbVar9 < 0x2d;\n  bVar15 = *pbVar9 == 0x2d;\n  if (bVar15) {\n    iVar6 = 7;\n    pbVar11 = pbVar9;\n    pbVar13 = &DAT_001017a9;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n  }\n  local_2c = 0;\n  local_28 = 0;\n  local_45 = 0x2b;\n  bVar14 = false;\nLAB_000a6dee:\n  bVar1 = *pbVar9;\n  if (bVar1 == 0x2d) {\n    if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }\n    if (pbVar9[2] != 0) goto LAB_000a6db9;\n    bVar14 = true;\nLAB_000a6de3:\n    param_1 = (int *)*param_1;\n    if (param_1 == (int *)0x0) goto LAB_000a6e10;\n    pbVar9 = *(byte **)param_1[1];\n    goto LAB_000a6dee;\n  }\n  if (bVar1 == 0x2b) {\nLAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);\n    local_45 = bVar1;\n    if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n    goto LAB_000a6de3;\n  }\n  local_45 = 0;\n  if (bVar1 != 0) {\n    uVar7 = dcgettext(0,"%s: invalid argument",5);\n    builtin_error(uVar7,pbVar9);\n    builtin_usage();\n    iVar6 = 0x102;\n    goto LAB_000a6f27;\n  }\nLAB_000a6e10:\n  iVar6 = DAT_0015170c;\n  uVar3 = DAT_00151704;\n  iVar12 = (int)DAT_00151704 >> 0x1f;\n  if (((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)) {\n    if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }\n  }\nLAB_000a6f1b:\n  FUN_000a6250();\n  iVar6 = 1;\nLAB_000a6f27:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }\n  return iVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "byte local_45;" type_identifier identifier ;) (declaration "uint local_38;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0xa6d59;" (assignment_expression "uStack_14 = 0xa6d59" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (param_1 == (int *)0x0) {\n    local_2c = 0;\n    local_28 = 0;\n    if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    goto LAB_000a6f1b;\n  }" if (parenthesized_expression "(param_1 == (int *)0x0)" ( (binary_expression "param_1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_2c = 0;\n    local_28 = 0;\n    if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    goto LAB_000a6f1b;\n  }" { (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (if_statement "if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }" if (parenthesized_expression "(((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0))" ( (binary_expression "((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)" (parenthesized_expression "((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704))" ( (binary_expression "(-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)" (parenthesized_expression "(-1 < (int)DAT_00151704 >> 0x1f)" ( (binary_expression "-1 < (int)DAT_00151704 >> 0x1f" number_literal < (binary_expression "(int)DAT_00151704 >> 0x1f" (cast_expression "(int)DAT_00151704" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) )) && (parenthesized_expression "(-1 < (int)DAT_00151704)" ( (binary_expression "-1 < (int)DAT_00151704" number_literal < (cast_expression "(int)DAT_00151704" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) && (parenthesized_expression "(DAT_00151704 != 0)" ( (binary_expression "DAT_00151704 != 0" identifier != number_literal) ))) )) (compound_statement "{\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }" { (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (goto_statement "goto LAB_000a6fcf;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a6f1b;" goto statement_identifier ;) })) (expression_statement "pbVar9 = *(byte **)param_1[1];" (assignment_expression "pbVar9 = *(byte **)param_1[1]" identifier = (pointer_expression "*(byte **)param_1[1]" * (cast_expression "(byte **)param_1[1]" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "param_1[1]" identifier [ number_literal ])))) ;) (expression_statement "bVar14 = *pbVar9 < 0x2d;" (assignment_expression "bVar14 = *pbVar9 < 0x2d" identifier = (binary_expression "*pbVar9 < 0x2d" (pointer_expression "*pbVar9" * identifier) < number_literal)) ;) (expression_statement "bVar15 = *pbVar9 == 0x2d;" (assignment_expression "bVar15 = *pbVar9 == 0x2d" identifier = (binary_expression "*pbVar9 == 0x2d" (pointer_expression "*pbVar9" * identifier) == number_literal)) ;) (if_statement "if (bVar15) {\n    iVar6 = 7;\n    pbVar11 = pbVar9;\n    pbVar13 = &DAT_001017a9;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n  }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n    iVar6 = 7;\n    pbVar11 = pbVar9;\n    pbVar13 = &DAT_001017a9;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n  }" { (expression_statement "iVar6 = 7;" (assignment_expression "iVar6 = 7" identifier = number_literal) ;) (expression_statement "pbVar11 = pbVar9;" (assignment_expression "pbVar11 = pbVar9" identifier = identifier) ;) (expression_statement "pbVar13 = &DAT_001017a9;" (assignment_expression "pbVar13 = &DAT_001017a9" identifier = (pointer_expression "&DAT_001017a9" & identifier)) ;) (do_statement "do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);" do (compound_statement "{\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 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 "bVar14 = *pbVar11 < *pbVar13;" (assignment_expression "bVar14 = *pbVar11 < *pbVar13" identifier = (binary_expression "*pbVar11 < *pbVar13" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar13;" (assignment_expression "bVar15 = *pbVar11 == *pbVar13" identifier = (binary_expression "*pbVar11 == *pbVar13" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }" if (parenthesized_expression "((!bVar14 && !bVar15) == bVar14)" ( (binary_expression "(!bVar14 && !bVar15) == bVar14" (parenthesized_expression "(!bVar14 && !bVar15)" ( (binary_expression "!bVar14 && !bVar15" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )) (compound_statement "{\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }" { (expression_statement "builtin_help();" (call_expression "builtin_help()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = 0x102;" (assignment_expression "iVar6 = 0x102" identifier = number_literal) ;) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;) })) })) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_45 = 0x2b;" (assignment_expression "local_45 = 0x2b" identifier = number_literal) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (labeled_statement "LAB_000a6dee:\n  bVar1 = *pbVar9;" statement_identifier : (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;)) (if_statement "if (bVar1 == 0x2d) {\n    if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }\n    if (pbVar9[2] != 0) goto LAB_000a6db9;\n    bVar14 = true;\nLAB_000a6de3:\n    param_1 = (int *)*param_1;\n    if (param_1 == (int *)0x0) goto LAB_000a6e10;\n    pbVar9 = *(byte **)param_1[1];\n    goto LAB_000a6dee;\n  }" if (parenthesized_expression "(bVar1 == 0x2d)" ( (binary_expression "bVar1 == 0x2d" identifier == number_literal) )) (compound_statement "{\n    if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }\n    if (pbVar9[2] != 0) goto LAB_000a6db9;\n    bVar14 = true;\nLAB_000a6de3:\n    param_1 = (int *)*param_1;\n    if (param_1 == (int *)0x0) goto LAB_000a6e10;\n    pbVar9 = *(byte **)param_1[1];\n    goto LAB_000a6dee;\n  }" { (if_statement "if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }" if (parenthesized_expression "(pbVar9[1] != 0x6e)" ( (binary_expression "pbVar9[1] != 0x6e" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }" { (if_statement "if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;" if (parenthesized_expression "((pbVar9[1] != 0x2d) || (pbVar9[2] != 0))" ( (binary_expression "(pbVar9[1] != 0x2d) || (pbVar9[2] != 0)" (parenthesized_expression "(pbVar9[1] != 0x2d)" ( (binary_expression "pbVar9[1] != 0x2d" (subscript_expression "pbVar9[1]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(pbVar9[2] != 0)" ( (binary_expression "pbVar9[2] != 0" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) != number_literal) ))) )) (goto_statement "goto LAB_000a6db9;" goto statement_identifier ;)) (goto_statement "goto LAB_000a6e10;" goto statement_identifier ;) })) (if_statement "if (pbVar9[2] != 0) goto LAB_000a6db9;" if (parenthesized_expression "(pbVar9[2] != 0)" ( (binary_expression "pbVar9[2] != 0" (subscript_expression "pbVar9[2]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_000a6db9;" goto statement_identifier ;)) (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" identifier = true) ;) (labeled_statement "LAB_000a6de3:\n    param_1 = (int *)*param_1;" statement_identifier : (expression_statement "param_1 = (int *)*param_1;" (assignment_expression "param_1 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;)) (if_statement "if (param_1 == (int *)0x0) goto LAB_000a6e10;" if (parenthesized_expression "(param_1 == (int *)0x0)" ( (binary_expression "param_1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a6e10;" goto statement_identifier ;)) (expression_statement "pbVar9 = *(byte **)param_1[1];" (assignment_expression "pbVar9 = *(byte **)param_1[1]" identifier = (pointer_expression "*(byte **)param_1[1]" * (cast_expression "(byte **)param_1[1]" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "param_1[1]" identifier [ number_literal ])))) ;) (goto_statement "goto LAB_000a6dee;" goto statement_identifier ;) })) (if_statement "if (bVar1 == 0x2b) {\nLAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);\n    local_45 = bVar1;\n    if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n    goto LAB_000a6de3;\n  }" if (parenthesized_expression "(bVar1 == 0x2b)" ( (binary_expression "bVar1 == 0x2b" identifier == number_literal) )) (compound_statement "{\nLAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);\n    local_45 = bVar1;\n    if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n    goto LAB_000a6de3;\n  }" { (labeled_statement "LAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);" statement_identifier : (expression_statement "iVar6 = legal_number(pbVar9 + 1,&local_2c);" (assignment_expression "iVar6 = legal_number(pbVar9 + 1,&local_2c)" identifier = (call_expression "legal_number(pbVar9 + 1,&local_2c)" identifier (argument_list "(pbVar9 + 1,&local_2c)" ( (binary_expression "pbVar9 + 1" identifier + number_literal) , (pointer_expression "&local_2c" & identifier) )))) ;)) (expression_statement "local_45 = bVar1;" (assignment_expression "local_45 = bVar1" identifier = identifier) ;) (if_statement "if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }" { (expression_statement "sh_invalidnum(*(undefined4 *)param_1[1]);" (call_expression "sh_invalidnum(*(undefined4 *)param_1[1])" identifier (argument_list "(*(undefined4 *)param_1[1])" ( (pointer_expression "*(undefined4 *)param_1[1]" * (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ))) ;) (expression_statement "builtin_usage();" (call_expression "builtin_usage()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = 0x102;" (assignment_expression "iVar6 = 0x102" identifier = number_literal) ;) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a6de3;" goto statement_identifier ;) })) (expression_statement "local_45 = 0;" (assignment_expression "local_45 = 0" identifier = number_literal) ;) (if_statement "if (bVar1 != 0) {\n    uVar7 = dcgettext(0,"%s: invalid argument",5);\n    builtin_error(uVar7,pbVar9);\n    builtin_usage();\n    iVar6 = 0x102;\n    goto LAB_000a6f27;\n  }" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar7 = dcgettext(0,"%s: invalid argument",5);\n    builtin_error(uVar7,pbVar9);\n    builtin_usage();\n    iVar6 = 0x102;\n    goto LAB_000a6f27;\n  }" { (expression_statement "uVar7 = dcgettext(0,"%s: invalid argument",5);" (assignment_expression "uVar7 = dcgettext(0,"%s: invalid argument",5)" identifier = (call_expression "dcgettext(0,"%s: invalid argument",5)" identifier (argument_list "(0,"%s: invalid argument",5)" ( number_literal , (string_literal ""%s: invalid argument"" " string_content ") , number_literal )))) ;) (expression_statement "builtin_error(uVar7,pbVar9);" (call_expression "builtin_error(uVar7,pbVar9)" identifier (argument_list "(uVar7,pbVar9)" ( identifier , identifier ))) ;) (expression_statement "builtin_usage();" (call_expression "builtin_usage()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = 0x102;" (assignment_expression "iVar6 = 0x102" identifier = number_literal) ;) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;) })) (labeled_statement "LAB_000a6e10:\n  iVar6 = DAT_0015170c;" statement_identifier : (expression_statement "iVar6 = DAT_0015170c;" (assignment_expression "iVar6 = DAT_0015170c" identifier = identifier) ;)) (expression_statement "uVar3 = DAT_00151704;" (assignment_expression "uVar3 = DAT_00151704" identifier = identifier) ;) (expression_statement "iVar12 = (int)DAT_00151704 >> 0x1f;" (assignment_expression "iVar12 = (int)DAT_00151704 >> 0x1f" identifier = (binary_expression "(int)DAT_00151704 >> 0x1f" (cast_expression "(int)DAT_00151704" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if (((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)) {\n    if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }\n  }" if (parenthesized_expression "(((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0))" ( (binary_expression "((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)" (parenthesized_expression "((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0)" ( (binary_expression "(SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0" (parenthesized_expression "(SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c)))" ( (binary_expression "SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))" (call_expression "SBORROW4(iVar12,local_28)" identifier (argument_list "(iVar12,local_28)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))" identifier (argument_list "(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))" ( (binary_expression "iVar12 - local_28" identifier - identifier) , (call_expression "(uint)(DAT_00151704 < local_2c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_00151704 < local_2c)" ( (binary_expression "DAT_00151704 < local_2c" identifier < identifier) ))) )))) )) == (binary_expression "(int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0" (cast_expression "(int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c))" ( (binary_expression "(iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)" (parenthesized_expression "(iVar12 - local_28)" ( (binary_expression "iVar12 - local_28" identifier - identifier) )) - (call_expression "(uint)(DAT_00151704 < local_2c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_00151704 < local_2c)" ( (binary_expression "DAT_00151704 < local_2c" identifier < identifier) )))) ))) < number_literal)) )) && (parenthesized_expression "(iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)" ( (comma_expression "iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0" (assignment_expression "iVar10 = (int)-DAT_00151704 >> 0x1f" identifier = (binary_expression "(int)-DAT_00151704 >> 0x1f" (cast_expression "(int)-DAT_00151704" ( (type_descriptor "int" primitive_type) ) (unary_expression "-DAT_00151704" - identifier)) >> number_literal)) , (comma_expression "uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0" (assignment_expression "uVar8 = (uint)(local_2c < -DAT_00151704)" identifier = (call_expression "(uint)(local_2c < -DAT_00151704)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_2c < -DAT_00151704)" ( (binary_expression "local_2c < -DAT_00151704" identifier < (unary_expression "-DAT_00151704" - identifier)) )))) , (comma_expression "iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0" (assignment_expression "iVar2 = local_28 - iVar10" identifier = (binary_expression "local_28 - iVar10" identifier - identifier)) , (binary_expression "(SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0" (parenthesized_expression "(SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8))" ( (binary_expression "SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)" (call_expression "SBORROW4(local_28,iVar10)" identifier (argument_list "(local_28,iVar10)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar2,uVar8)" identifier (argument_list "(iVar2,uVar8)" ( identifier , identifier )))) )) == (binary_expression "(int)(iVar2 - uVar8) < 0" (cast_expression "(int)(iVar2 - uVar8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - uVar8)" ( (binary_expression "iVar2 - uVar8" identifier - identifier) ))) < number_literal))))) ))) )) (compound_statement "{\n    if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }\n  }" { (if_statement "if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }" if (parenthesized_expression "((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0))" ( (binary_expression "(DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)" (parenthesized_expression "(DAT_00151704 != 0)" ( (binary_expression "DAT_00151704 != 0" identifier != number_literal) )) || (parenthesized_expression "(local_2c != 0 || local_28 != 0)" ( (binary_expression "local_2c != 0 || local_28 != 0" (binary_expression "local_2c != 0" identifier != number_literal) || (binary_expression "local_28 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }" { (if_statement "if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }" if (parenthesized_expression "(local_45 == 0x2b)" ( (binary_expression "local_45 == 0x2b" identifier == number_literal) )) (compound_statement "{\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }" { (if_statement "if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }" if (parenthesized_expression "(local_2c != 0 || local_28 != 0)" ( (binary_expression "local_2c != 0 || local_28 != 0" (binary_expression "local_2c != 0" identifier != number_literal) || (binary_expression "local_28 != 0" identifier != number_literal)) )) (compound_statement "{\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }" { (expression_statement "uVar8 = DAT_00151704 - local_2c;" (assignment_expression "uVar8 = DAT_00151704 - local_2c" identifier = (binary_expression "DAT_00151704 - local_2c" identifier - identifier)) ;) (goto_statement "goto LAB_000a6e85;" goto statement_identifier ;) })) (labeled_statement "LAB_000a6fcf:\n        local_38 = DAT_00151704;" statement_identifier : (expression_statement "local_38 = DAT_00151704;" (assignment_expression "local_38 = DAT_00151704" identifier = identifier) ;)) (if_statement "if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }" if (parenthesized_expression "(!bVar14)" ( (unary_expression "!bVar14" ! identifier) )) (compound_statement "{\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }" { (expression_statement "iVar6 = FUN_000a6140();" (assignment_expression "iVar6 = FUN_000a6140()" identifier = (call_expression "FUN_000a6140()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 != 0) goto LAB_000a6f27;" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;)) (expression_statement "local_38 = DAT_00151704;" (assignment_expression "local_38 = DAT_00151704" identifier = identifier) ;) })) (expression_statement "DAT_00151704 = local_38 - 1;" (assignment_expression "DAT_00151704 = local_38 - 1" identifier = (binary_expression "local_38 - 1" identifier - number_literal)) ;) (expression_statement "free(*(void **)(DAT_0015170c + DAT_00151704 * 4));" (call_expression "free(*(void **)(DAT_0015170c + DAT_00151704 * 4))" identifier (argument_list "(*(void **)(DAT_0015170c + DAT_00151704 * 4))" ( (pointer_expression "*(void **)(DAT_0015170c + DAT_00151704 * 4)" * (cast_expression "(void **)(DAT_0015170c + DAT_00151704 * 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_0015170c + DAT_00151704 * 4)" ( (binary_expression "DAT_0015170c + DAT_00151704 * 4" identifier + (binary_expression "DAT_00151704 * 4" identifier * number_literal)) )))) ))) ;) }) (else_clause "else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }" else (compound_statement "{\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }" { (expression_statement "uVar8 = local_2c;" (assignment_expression "uVar8 = local_2c" identifier = identifier) ;) (if_statement "if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;" if (parenthesized_expression "((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))" ( (binary_expression "(local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c)" (parenthesized_expression "(local_45 == 0x2d)" ( (binary_expression "local_45 == 0x2d" identifier == number_literal) )) && (parenthesized_expression "(iVar12 == local_28 && DAT_00151704 == local_2c)" ( (binary_expression "iVar12 == local_28 && DAT_00151704 == local_2c" (binary_expression "iVar12 == local_28" identifier == identifier) && (binary_expression "DAT_00151704 == local_2c" identifier == identifier)) ))) )) (goto_statement "goto LAB_000a6fcf;" goto statement_identifier ;)) (labeled_statement "LAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }" statement_identifier : (if_statement "if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }" if (parenthesized_expression "(((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8))" ( (binary_expression "((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)" (parenthesized_expression "((int)uVar8 < 0)" ( (binary_expression "(int)uVar8 < 0" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "((int)DAT_00151704 < (int)uVar8)" ( (binary_expression "(int)DAT_00151704 < (int)uVar8" (cast_expression "(int)DAT_00151704" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }" { (expression_statement "FUN_000a6250();" (call_expression "FUN_000a6250()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;) }))) (expression_statement "puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);" (assignment_expression "puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4)" identifier = (cast_expression "(undefined4 *)(DAT_0015170c + uVar8 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0015170c + uVar8 * 4)" ( (binary_expression "DAT_0015170c + uVar8 * 4" identifier + (binary_expression "uVar8 * 4" identifier * number_literal)) )))) ;) (expression_statement "free((void *)*puVar4);" (call_expression "free((void *)*puVar4)" identifier (argument_list "((void *)*puVar4)" ( (cast_expression "(void *)*puVar4" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier)) ))) ;) (expression_statement "DAT_00151704 = uVar3 - 1;" (assignment_expression "DAT_00151704 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (if_statement "if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }" if (parenthesized_expression "((int)uVar8 < (int)DAT_00151704)" ( (binary_expression "(int)uVar8 < (int)DAT_00151704" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)DAT_00151704" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }" { (do_statement "do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);" do (compound_statement "{\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          }" { (expression_statement "puVar5 = puVar4 + 1;" (assignment_expression "puVar5 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar4 = puVar4[1];" (assignment_expression "*puVar4 = puVar4[1]" (pointer_expression "*puVar4" * identifier) = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "puVar4 = puVar5;" (assignment_expression "puVar4 = puVar5" identifier = identifier) ;) }) while (parenthesized_expression "((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5)" ( (binary_expression "(undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5" (cast_expression "(undefined4 *)(iVar6 + -4 + uVar3 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -4 + uVar3 * 4)" ( (binary_expression "iVar6 + -4 + uVar3 * 4" (binary_expression "iVar6 + -4" identifier + number_literal) + (binary_expression "uVar3 * 4" identifier * number_literal)) ))) != identifier) )) ;) })) }))) (expression_statement "dirs_builtin(0);" (call_expression "dirs_builtin(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000a6f27;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000a6f1b:\n  FUN_000a6250();" statement_identifier : (expression_statement "FUN_000a6250();" (call_expression "FUN_000a6250()" identifier (argument_list "()" ( ))) ;)) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (labeled_statement "LAB_000a6f27:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_000ecc40();\n  }" { (expression_statement "FUN_000ecc40();" (call_expression "FUN_000ecc40()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar6;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) )) && (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & 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 IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + 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 (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (labeled_statement statement_identifier : (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 *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ])))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) )))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (unary_expression - IDENT)) >> LIT)) , (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (unary_expression - IDENT)) )))) , (comma_expression (assignment_expression IDENT = (binary_expression IDENT - IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT))))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (binary_expression IDENT == IDENT)) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))) != IDENT) )) ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int popd_builtin(int *param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  byte *pbVar9;\n  int iVar10;\n  byte *pbVar11;\n  int iVar12;\n  byte *pbVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  bool bVar15;\n  byte local_45;\n  uint local_38;\n  uint local_2c;\n  int local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xa6d59;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == (int *)0x0) {\n    local_2c = 0;\n    local_28 = 0;\n    if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    goto LAB_000a6f1b;\n  }\n  pbVar9 = *(byte **)param_1[1];\n  bVar14 = *pbVar9 < 0x2d;\n  bVar15 = *pbVar9 == 0x2d;\n  if (bVar15) {\n    iVar6 = 7;\n    pbVar11 = pbVar9;\n    pbVar13 = &DAT_001017a9;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n  }\n  local_2c = 0;\n  local_28 = 0;\n  local_45 = 0x2b;\n  bVar14 = false;\nLAB_000a6dee:\n  bVar1 = *pbVar9;\n  if (bVar1 == 0x2d) {\n    if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }\n    if (pbVar9[2] != 0) goto LAB_000a6db9;\n    bVar14 = true;\nLAB_000a6de3:\n    param_1 = (int *)*param_1;\n    if (param_1 == (int *)0x0) goto LAB_000a6e10;\n    pbVar9 = *(byte **)param_1[1];\n    goto LAB_000a6dee;\n  }\n  if (bVar1 == 0x2b) {\nLAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);\n    local_45 = bVar1;\n    if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n    goto LAB_000a6de3;\n  }\n  local_45 = 0;\n  if (bVar1 != 0) {\n    uVar7 = dcgettext(0,"%s: invalid argument",5);\n    builtin_error(uVar7,pbVar9);\n    builtin_usage();\n    iVar6 = 0x102;\n    goto LAB_000a6f27;\n  }\nLAB_000a6e10:\n  iVar6 = DAT_0015170c;\n  uVar3 = DAT_00151704;\n  iVar12 = (int)DAT_00151704 >> 0x1f;\n  if (((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)) {\n    if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }\n  }\nLAB_000a6f1b:\n  FUN_000a6250();\n  iVar6 = 1;\nLAB_000a6f27:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }\n  return iVar6;\n}" (primitive_type "int") (function_declarator "popd_builtin(int *param_1)" (identifier "popd_builtin") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  byte *pbVar9;\n  int iVar10;\n  byte *pbVar11;\n  int iVar12;\n  byte *pbVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  bool bVar15;\n  byte local_45;\n  uint local_38;\n  uint local_2c;\n  int local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xa6d59;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == (int *)0x0) {\n    local_2c = 0;\n    local_28 = 0;\n    if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    goto LAB_000a6f1b;\n  }\n  pbVar9 = *(byte **)param_1[1];\n  bVar14 = *pbVar9 < 0x2d;\n  bVar15 = *pbVar9 == 0x2d;\n  if (bVar15) {\n    iVar6 = 7;\n    pbVar11 = pbVar9;\n    pbVar13 = &DAT_001017a9;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n  }\n  local_2c = 0;\n  local_28 = 0;\n  local_45 = 0x2b;\n  bVar14 = false;\nLAB_000a6dee:\n  bVar1 = *pbVar9;\n  if (bVar1 == 0x2d) {\n    if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }\n    if (pbVar9[2] != 0) goto LAB_000a6db9;\n    bVar14 = true;\nLAB_000a6de3:\n    param_1 = (int *)*param_1;\n    if (param_1 == (int *)0x0) goto LAB_000a6e10;\n    pbVar9 = *(byte **)param_1[1];\n    goto LAB_000a6dee;\n  }\n  if (bVar1 == 0x2b) {\nLAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);\n    local_45 = bVar1;\n    if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n    goto LAB_000a6de3;\n  }\n  local_45 = 0;\n  if (bVar1 != 0) {\n    uVar7 = dcgettext(0,"%s: invalid argument",5);\n    builtin_error(uVar7,pbVar9);\n    builtin_usage();\n    iVar6 = 0x102;\n    goto LAB_000a6f27;\n  }\nLAB_000a6e10:\n  iVar6 = DAT_0015170c;\n  uVar3 = DAT_00151704;\n  iVar12 = (int)DAT_00151704 >> 0x1f;\n  if (((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)) {\n    if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }\n  }\nLAB_000a6f1b:\n  FUN_000a6250();\n  iVar6 = 1;\nLAB_000a6f27:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }\n  return iVar6;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "byte *pbVar13;" (type_identifier "byte") (pointer_declarator "*pbVar13" (* "*") (identifier "pbVar13")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (declaration "bool bVar15;" (primitive_type "bool") (identifier "bVar15") (; ";")) (declaration "byte local_45;" (type_identifier "byte") (identifier "local_45") (; ";")) (declaration "uint local_38;" (type_identifier "uint") (identifier "local_38") (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0xa6d59;" (assignment_expression "uStack_14 = 0xa6d59" (identifier "uStack_14") (= "=") (number_literal "0xa6d59")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (param_1 == (int *)0x0) {\n    local_2c = 0;\n    local_28 = 0;\n    if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    goto LAB_000a6f1b;\n  }" (if "if") (parenthesized_expression "(param_1 == (int *)0x0)" (( "(") (binary_expression "param_1 == (int *)0x0" (identifier "param_1") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    local_2c = 0;\n    local_28 = 0;\n    if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }\n    goto LAB_000a6f1b;\n  }" ({ "{") (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (if_statement "if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }" (if "if") (parenthesized_expression "(((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0))" (( "(") (binary_expression "((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)" (parenthesized_expression "((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704))" (( "(") (binary_expression "(-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)" (parenthesized_expression "(-1 < (int)DAT_00151704 >> 0x1f)" (( "(") (binary_expression "-1 < (int)DAT_00151704 >> 0x1f" (number_literal "-1") (< "<") (binary_expression "(int)DAT_00151704 >> 0x1f" (cast_expression "(int)DAT_00151704" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00151704")) (>> ">>") (number_literal "0x1f"))) () ")")) (&& "&&") (parenthesized_expression "(-1 < (int)DAT_00151704)" (( "(") (binary_expression "-1 < (int)DAT_00151704" (number_literal "-1") (< "<") (cast_expression "(int)DAT_00151704" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00151704"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(DAT_00151704 != 0)" (( "(") (binary_expression "DAT_00151704 != 0" (identifier "DAT_00151704") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      bVar14 = false;\n      goto LAB_000a6fcf;\n    }" ({ "{") (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (goto_statement "goto LAB_000a6fcf;" (goto "goto") (statement_identifier "LAB_000a6fcf") (; ";")) (} "}"))) (goto_statement "goto LAB_000a6f1b;" (goto "goto") (statement_identifier "LAB_000a6f1b") (; ";")) (} "}"))) (expression_statement "pbVar9 = *(byte **)param_1[1];" (assignment_expression "pbVar9 = *(byte **)param_1[1]" (identifier "pbVar9") (= "=") (pointer_expression "*(byte **)param_1[1]" (* "*") (cast_expression "(byte **)param_1[1]" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))))) (; ";")) (expression_statement "bVar14 = *pbVar9 < 0x2d;" (assignment_expression "bVar14 = *pbVar9 < 0x2d" (identifier "bVar14") (= "=") (binary_expression "*pbVar9 < 0x2d" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (< "<") (number_literal "0x2d"))) (; ";")) (expression_statement "bVar15 = *pbVar9 == 0x2d;" (assignment_expression "bVar15 = *pbVar9 == 0x2d" (identifier "bVar15") (= "=") (binary_expression "*pbVar9 == 0x2d" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (== "==") (number_literal "0x2d"))) (; ";")) (if_statement "if (bVar15) {\n    iVar6 = 7;\n    pbVar11 = pbVar9;\n    pbVar13 = &DAT_001017a9;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n  }" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (compound_statement "{\n    iVar6 = 7;\n    pbVar11 = pbVar9;\n    pbVar13 = &DAT_001017a9;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n  }" ({ "{") (expression_statement "iVar6 = 7;" (assignment_expression "iVar6 = 7" (identifier "iVar6") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar11 = pbVar9;" (assignment_expression "pbVar11 = pbVar9" (identifier "pbVar11") (= "=") (identifier "pbVar9")) (; ";")) (expression_statement "pbVar13 = &DAT_001017a9;" (assignment_expression "pbVar13 = &DAT_001017a9" (identifier "pbVar13") (= "=") (pointer_expression "&DAT_001017a9" (& "&") (identifier "DAT_001017a9"))) (; ";")) (do_statement "do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);" (do "do") (compound_statement "{\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar14 = *pbVar11 < *pbVar13;\n      bVar15 = *pbVar11 == *pbVar13;\n      pbVar11 = pbVar11 + 1;\n      pbVar13 = pbVar13 + 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 "bVar14 = *pbVar11 < *pbVar13;" (assignment_expression "bVar14 = *pbVar11 < *pbVar13" (identifier "bVar14") (= "=") (binary_expression "*pbVar11 < *pbVar13" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar11 == *pbVar13;" (assignment_expression "bVar15 = *pbVar11 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar11 == *pbVar13" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (if_statement "if ((!bVar14 && !bVar15) == bVar14) {\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }" (if "if") (parenthesized_expression "((!bVar14 && !bVar15) == bVar14)" (( "(") (binary_expression "(!bVar14 && !bVar15) == bVar14" (parenthesized_expression "(!bVar14 && !bVar15)" (( "(") (binary_expression "!bVar14 && !bVar15" (unary_expression "!bVar14" (! "!") (identifier "bVar14")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar14")) () ")")) (compound_statement "{\n      builtin_help();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }" ({ "{") (expression_statement "builtin_help();" (call_expression "builtin_help()" (identifier "builtin_help") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar6 = 0x102;" (assignment_expression "iVar6 = 0x102" (identifier "iVar6") (= "=") (number_literal "0x102")) (; ";")) (goto_statement "goto LAB_000a6f27;" (goto "goto") (statement_identifier "LAB_000a6f27") (; ";")) (} "}"))) (} "}"))) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_45 = 0x2b;" (assignment_expression "local_45 = 0x2b" (identifier "local_45") (= "=") (number_literal "0x2b")) (; ";")) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (labeled_statement "LAB_000a6dee:\n  bVar1 = *pbVar9;" (statement_identifier "LAB_000a6dee") (: ":") (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" (identifier "bVar1") (= "=") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9"))) (; ";"))) (if_statement "if (bVar1 == 0x2d) {\n    if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }\n    if (pbVar9[2] != 0) goto LAB_000a6db9;\n    bVar14 = true;\nLAB_000a6de3:\n    param_1 = (int *)*param_1;\n    if (param_1 == (int *)0x0) goto LAB_000a6e10;\n    pbVar9 = *(byte **)param_1[1];\n    goto LAB_000a6dee;\n  }" (if "if") (parenthesized_expression "(bVar1 == 0x2d)" (( "(") (binary_expression "bVar1 == 0x2d" (identifier "bVar1") (== "==") (number_literal "0x2d")) () ")")) (compound_statement "{\n    if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }\n    if (pbVar9[2] != 0) goto LAB_000a6db9;\n    bVar14 = true;\nLAB_000a6de3:\n    param_1 = (int *)*param_1;\n    if (param_1 == (int *)0x0) goto LAB_000a6e10;\n    pbVar9 = *(byte **)param_1[1];\n    goto LAB_000a6dee;\n  }" ({ "{") (if_statement "if (pbVar9[1] != 0x6e) {\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }" (if "if") (parenthesized_expression "(pbVar9[1] != 0x6e)" (( "(") (binary_expression "pbVar9[1] != 0x6e" (subscript_expression "pbVar9[1]" (identifier "pbVar9") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0x6e")) () ")")) (compound_statement "{\n      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;\n      goto LAB_000a6e10;\n    }" ({ "{") (if_statement "if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;" (if "if") (parenthesized_expression "((pbVar9[1] != 0x2d) || (pbVar9[2] != 0))" (( "(") (binary_expression "(pbVar9[1] != 0x2d) || (pbVar9[2] != 0)" (parenthesized_expression "(pbVar9[1] != 0x2d)" (( "(") (binary_expression "pbVar9[1] != 0x2d" (subscript_expression "pbVar9[1]" (identifier "pbVar9") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0x2d")) () ")")) (|| "||") (parenthesized_expression "(pbVar9[2] != 0)" (( "(") (binary_expression "pbVar9[2] != 0" (subscript_expression "pbVar9[2]" (identifier "pbVar9") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_000a6db9;" (goto "goto") (statement_identifier "LAB_000a6db9") (; ";"))) (goto_statement "goto LAB_000a6e10;" (goto "goto") (statement_identifier "LAB_000a6e10") (; ";")) (} "}"))) (if_statement "if (pbVar9[2] != 0) goto LAB_000a6db9;" (if "if") (parenthesized_expression "(pbVar9[2] != 0)" (( "(") (binary_expression "pbVar9[2] != 0" (subscript_expression "pbVar9[2]" (identifier "pbVar9") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a6db9;" (goto "goto") (statement_identifier "LAB_000a6db9") (; ";"))) (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" (identifier "bVar14") (= "=") (true "true")) (; ";")) (labeled_statement "LAB_000a6de3:\n    param_1 = (int *)*param_1;" (statement_identifier "LAB_000a6de3") (: ":") (expression_statement "param_1 = (int *)*param_1;" (assignment_expression "param_1 = (int *)*param_1" (identifier "param_1") (= "=") (cast_expression "(int *)*param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";"))) (if_statement "if (param_1 == (int *)0x0) goto LAB_000a6e10;" (if "if") (parenthesized_expression "(param_1 == (int *)0x0)" (( "(") (binary_expression "param_1 == (int *)0x0" (identifier "param_1") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000a6e10;" (goto "goto") (statement_identifier "LAB_000a6e10") (; ";"))) (expression_statement "pbVar9 = *(byte **)param_1[1];" (assignment_expression "pbVar9 = *(byte **)param_1[1]" (identifier "pbVar9") (= "=") (pointer_expression "*(byte **)param_1[1]" (* "*") (cast_expression "(byte **)param_1[1]" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))))) (; ";")) (goto_statement "goto LAB_000a6dee;" (goto "goto") (statement_identifier "LAB_000a6dee") (; ";")) (} "}"))) (if_statement "if (bVar1 == 0x2b) {\nLAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);\n    local_45 = bVar1;\n    if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n    goto LAB_000a6de3;\n  }" (if "if") (parenthesized_expression "(bVar1 == 0x2b)" (( "(") (binary_expression "bVar1 == 0x2b" (identifier "bVar1") (== "==") (number_literal "0x2b")) () ")")) (compound_statement "{\nLAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);\n    local_45 = bVar1;\n    if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }\n    goto LAB_000a6de3;\n  }" ({ "{") (labeled_statement "LAB_000a6db9:\n    iVar6 = legal_number(pbVar9 + 1,&local_2c);" (statement_identifier "LAB_000a6db9") (: ":") (expression_statement "iVar6 = legal_number(pbVar9 + 1,&local_2c);" (assignment_expression "iVar6 = legal_number(pbVar9 + 1,&local_2c)" (identifier "iVar6") (= "=") (call_expression "legal_number(pbVar9 + 1,&local_2c)" (identifier "legal_number") (argument_list "(pbVar9 + 1,&local_2c)" (( "(") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1")) (, ",") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) () ")")))) (; ";"))) (expression_statement "local_45 = bVar1;" (assignment_expression "local_45 = bVar1" (identifier "local_45") (= "=") (identifier "bVar1")) (; ";")) (if_statement "if (iVar6 == 0) {\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      sh_invalidnum(*(undefined4 *)param_1[1]);\n      builtin_usage();\n      iVar6 = 0x102;\n      goto LAB_000a6f27;\n    }" ({ "{") (expression_statement "sh_invalidnum(*(undefined4 *)param_1[1]);" (call_expression "sh_invalidnum(*(undefined4 *)param_1[1])" (identifier "sh_invalidnum") (argument_list "(*(undefined4 *)param_1[1])" (( "(") (pointer_expression "*(undefined4 *)param_1[1]" (* "*") (cast_expression "(undefined4 *)param_1[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) () ")"))) (; ";")) (expression_statement "builtin_usage();" (call_expression "builtin_usage()" (identifier "builtin_usage") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar6 = 0x102;" (assignment_expression "iVar6 = 0x102" (identifier "iVar6") (= "=") (number_literal "0x102")) (; ";")) (goto_statement "goto LAB_000a6f27;" (goto "goto") (statement_identifier "LAB_000a6f27") (; ";")) (} "}"))) (goto_statement "goto LAB_000a6de3;" (goto "goto") (statement_identifier "LAB_000a6de3") (; ";")) (} "}"))) (expression_statement "local_45 = 0;" (assignment_expression "local_45 = 0" (identifier "local_45") (= "=") (number_literal "0")) (; ";")) (if_statement "if (bVar1 != 0) {\n    uVar7 = dcgettext(0,"%s: invalid argument",5);\n    builtin_error(uVar7,pbVar9);\n    builtin_usage();\n    iVar6 = 0x102;\n    goto LAB_000a6f27;\n  }" (if "if") (parenthesized_expression "(bVar1 != 0)" (( "(") (binary_expression "bVar1 != 0" (identifier "bVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar7 = dcgettext(0,"%s: invalid argument",5);\n    builtin_error(uVar7,pbVar9);\n    builtin_usage();\n    iVar6 = 0x102;\n    goto LAB_000a6f27;\n  }" ({ "{") (expression_statement "uVar7 = dcgettext(0,"%s: invalid argument",5);" (assignment_expression "uVar7 = dcgettext(0,"%s: invalid argument",5)" (identifier "uVar7") (= "=") (call_expression "dcgettext(0,"%s: invalid argument",5)" (identifier "dcgettext") (argument_list "(0,"%s: invalid argument",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%s: invalid argument"" (" """) (string_content "%s: invalid argument") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "builtin_error(uVar7,pbVar9);" (call_expression "builtin_error(uVar7,pbVar9)" (identifier "builtin_error") (argument_list "(uVar7,pbVar9)" (( "(") (identifier "uVar7") (, ",") (identifier "pbVar9") () ")"))) (; ";")) (expression_statement "builtin_usage();" (call_expression "builtin_usage()" (identifier "builtin_usage") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar6 = 0x102;" (assignment_expression "iVar6 = 0x102" (identifier "iVar6") (= "=") (number_literal "0x102")) (; ";")) (goto_statement "goto LAB_000a6f27;" (goto "goto") (statement_identifier "LAB_000a6f27") (; ";")) (} "}"))) (labeled_statement "LAB_000a6e10:\n  iVar6 = DAT_0015170c;" (statement_identifier "LAB_000a6e10") (: ":") (expression_statement "iVar6 = DAT_0015170c;" (assignment_expression "iVar6 = DAT_0015170c" (identifier "iVar6") (= "=") (identifier "DAT_0015170c")) (; ";"))) (expression_statement "uVar3 = DAT_00151704;" (assignment_expression "uVar3 = DAT_00151704" (identifier "uVar3") (= "=") (identifier "DAT_00151704")) (; ";")) (expression_statement "iVar12 = (int)DAT_00151704 >> 0x1f;" (assignment_expression "iVar12 = (int)DAT_00151704 >> 0x1f" (identifier "iVar12") (= "=") (binary_expression "(int)DAT_00151704 >> 0x1f" (cast_expression "(int)DAT_00151704" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00151704")) (>> ">>") (number_literal "0x1f"))) (; ";")) (if_statement "if (((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)) {\n    if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }\n  }" (if "if") (parenthesized_expression "(((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0))" (( "(") (binary_expression "((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&\n     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)" (parenthesized_expression "((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0)" (( "(") (binary_expression "(SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==\n       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0" (parenthesized_expression "(SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c)))" (( "(") (binary_expression "SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))" (call_expression "SBORROW4(iVar12,local_28)" (identifier "SBORROW4") (argument_list "(iVar12,local_28)" (( "(") (identifier "iVar12") (, ",") (identifier "local_28") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))" (identifier "SBORROW4") (argument_list "(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))" (( "(") (binary_expression "iVar12 - local_28" (identifier "iVar12") (- "-") (identifier "local_28")) (, ",") (call_expression "(uint)(DAT_00151704 < local_2c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(DAT_00151704 < local_2c)" (( "(") (binary_expression "DAT_00151704 < local_2c" (identifier "DAT_00151704") (< "<") (identifier "local_2c")) () ")"))) () ")")))) () ")")) (== "==") (binary_expression "(int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0" (cast_expression "(int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c))" (( "(") (binary_expression "(iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)" (parenthesized_expression "(iVar12 - local_28)" (( "(") (binary_expression "iVar12 - local_28" (identifier "iVar12") (- "-") (identifier "local_28")) () ")")) (- "-") (call_expression "(uint)(DAT_00151704 < local_2c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(DAT_00151704 < local_2c)" (( "(") (binary_expression "DAT_00151704 < local_2c" (identifier "DAT_00151704") (< "<") (identifier "local_2c")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (&& "&&") (parenthesized_expression "(iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)" (( "(") (comma_expression "iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0" (assignment_expression "iVar10 = (int)-DAT_00151704 >> 0x1f" (identifier "iVar10") (= "=") (binary_expression "(int)-DAT_00151704 >> 0x1f" (cast_expression "(int)-DAT_00151704" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (unary_expression "-DAT_00151704" (- "-") (identifier "DAT_00151704"))) (>> ">>") (number_literal "0x1f"))) (, ",") (comma_expression "uVar8 = (uint)(local_2c < -DAT_00151704),\n     iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0" (assignment_expression "uVar8 = (uint)(local_2c < -DAT_00151704)" (identifier "uVar8") (= "=") (call_expression "(uint)(local_2c < -DAT_00151704)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_2c < -DAT_00151704)" (( "(") (binary_expression "local_2c < -DAT_00151704" (identifier "local_2c") (< "<") (unary_expression "-DAT_00151704" (- "-") (identifier "DAT_00151704"))) () ")")))) (, ",") (comma_expression "iVar2 = local_28 - iVar10,\n     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0" (assignment_expression "iVar2 = local_28 - iVar10" (identifier "iVar2") (= "=") (binary_expression "local_28 - iVar10" (identifier "local_28") (- "-") (identifier "iVar10"))) (, ",") (binary_expression "(SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0" (parenthesized_expression "(SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8))" (( "(") (binary_expression "SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)" (call_expression "SBORROW4(local_28,iVar10)" (identifier "SBORROW4") (argument_list "(local_28,iVar10)" (( "(") (identifier "local_28") (, ",") (identifier "iVar10") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar2,uVar8)" (identifier "SBORROW4") (argument_list "(iVar2,uVar8)" (( "(") (identifier "iVar2") (, ",") (identifier "uVar8") () ")")))) () ")")) (== "==") (binary_expression "(int)(iVar2 - uVar8) < 0" (cast_expression "(int)(iVar2 - uVar8)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar2 - uVar8)" (( "(") (binary_expression "iVar2 - uVar8" (identifier "iVar2") (- "-") (identifier "uVar8")) () ")"))) (< "<") (number_literal "0")))))) () ")"))) () ")")) (compound_statement "{\n    if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }\n  }" ({ "{") (if_statement "if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }" (if "if") (parenthesized_expression "((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0))" (( "(") (binary_expression "(DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)" (parenthesized_expression "(DAT_00151704 != 0)" (( "(") (binary_expression "DAT_00151704 != 0" (identifier "DAT_00151704") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(local_2c != 0 || local_28 != 0)" (( "(") (binary_expression "local_2c != 0 || local_28 != 0" (binary_expression "local_2c != 0" (identifier "local_2c") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "local_28 != 0" (identifier "local_28") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }\n      dirs_builtin(0);\n      iVar6 = 0;\n      goto LAB_000a6f27;\n    }" ({ "{") (if_statement "if (local_45 == 0x2b) {\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }\n      else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }" (if "if") (parenthesized_expression "(local_45 == 0x2b)" (( "(") (binary_expression "local_45 == 0x2b" (identifier "local_45") (== "==") (number_literal "0x2b")) () ")")) (compound_statement "{\n        if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }\nLAB_000a6fcf:\n        local_38 = DAT_00151704;\n        if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }\n        DAT_00151704 = local_38 - 1;\n        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));\n      }" ({ "{") (if_statement "if (local_2c != 0 || local_28 != 0) {\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }" (if "if") (parenthesized_expression "(local_2c != 0 || local_28 != 0)" (( "(") (binary_expression "local_2c != 0 || local_28 != 0" (binary_expression "local_2c != 0" (identifier "local_2c") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "local_28 != 0" (identifier "local_28") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n          uVar8 = DAT_00151704 - local_2c;\n          goto LAB_000a6e85;\n        }" ({ "{") (expression_statement "uVar8 = DAT_00151704 - local_2c;" (assignment_expression "uVar8 = DAT_00151704 - local_2c" (identifier "uVar8") (= "=") (binary_expression "DAT_00151704 - local_2c" (identifier "DAT_00151704") (- "-") (identifier "local_2c"))) (; ";")) (goto_statement "goto LAB_000a6e85;" (goto "goto") (statement_identifier "LAB_000a6e85") (; ";")) (} "}"))) (labeled_statement "LAB_000a6fcf:\n        local_38 = DAT_00151704;" (statement_identifier "LAB_000a6fcf") (: ":") (expression_statement "local_38 = DAT_00151704;" (assignment_expression "local_38 = DAT_00151704" (identifier "local_38") (= "=") (identifier "DAT_00151704")) (; ";"))) (if_statement "if (!bVar14) {\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }" (if "if") (parenthesized_expression "(!bVar14)" (( "(") (unary_expression "!bVar14" (! "!") (identifier "bVar14")) () ")")) (compound_statement "{\n          iVar6 = FUN_000a6140();\n          if (iVar6 != 0) goto LAB_000a6f27;\n          local_38 = DAT_00151704;\n        }" ({ "{") (expression_statement "iVar6 = FUN_000a6140();" (assignment_expression "iVar6 = FUN_000a6140()" (identifier "iVar6") (= "=") (call_expression "FUN_000a6140()" (identifier "FUN_000a6140") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar6 != 0) goto LAB_000a6f27;" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a6f27;" (goto "goto") (statement_identifier "LAB_000a6f27") (; ";"))) (expression_statement "local_38 = DAT_00151704;" (assignment_expression "local_38 = DAT_00151704" (identifier "local_38") (= "=") (identifier "DAT_00151704")) (; ";")) (} "}"))) (expression_statement "DAT_00151704 = local_38 - 1;" (assignment_expression "DAT_00151704 = local_38 - 1" (identifier "DAT_00151704") (= "=") (binary_expression "local_38 - 1" (identifier "local_38") (- "-") (number_literal "1"))) (; ";")) (expression_statement "free(*(void **)(DAT_0015170c + DAT_00151704 * 4));" (call_expression "free(*(void **)(DAT_0015170c + DAT_00151704 * 4))" (identifier "free") (argument_list "(*(void **)(DAT_0015170c + DAT_00151704 * 4))" (( "(") (pointer_expression "*(void **)(DAT_0015170c + DAT_00151704 * 4)" (* "*") (cast_expression "(void **)(DAT_0015170c + DAT_00151704 * 4)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(DAT_0015170c + DAT_00151704 * 4)" (( "(") (binary_expression "DAT_0015170c + DAT_00151704 * 4" (identifier "DAT_0015170c") (+ "+") (binary_expression "DAT_00151704 * 4" (identifier "DAT_00151704") (* "*") (number_literal "4"))) () ")")))) () ")"))) (; ";")) (} "}")) (else_clause "else {\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }" (else "else") (compound_statement "{\n        uVar8 = local_2c;\n        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;\nLAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }\n        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);\n        free((void *)*puVar4);\n        DAT_00151704 = uVar3 - 1;\n        if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }\n      }" ({ "{") (expression_statement "uVar8 = local_2c;" (assignment_expression "uVar8 = local_2c" (identifier "uVar8") (= "=") (identifier "local_2c")) (; ";")) (if_statement "if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))\n        goto LAB_000a6fcf;" (if "if") (parenthesized_expression "((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))" (( "(") (binary_expression "(local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c)" (parenthesized_expression "(local_45 == 0x2d)" (( "(") (binary_expression "local_45 == 0x2d" (identifier "local_45") (== "==") (number_literal "0x2d")) () ")")) (&& "&&") (parenthesized_expression "(iVar12 == local_28 && DAT_00151704 == local_2c)" (( "(") (binary_expression "iVar12 == local_28 && DAT_00151704 == local_2c" (binary_expression "iVar12 == local_28" (identifier "iVar12") (== "==") (identifier "local_28")) (&& "&&") (binary_expression "DAT_00151704 == local_2c" (identifier "DAT_00151704") (== "==") (identifier "local_2c"))) () ")"))) () ")")) (goto_statement "goto LAB_000a6fcf;" (goto "goto") (statement_identifier "LAB_000a6fcf") (; ";"))) (labeled_statement "LAB_000a6e85:\n        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }" (statement_identifier "LAB_000a6e85") (: ":") (if_statement "if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }" (if "if") (parenthesized_expression "(((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8))" (( "(") (binary_expression "((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)" (parenthesized_expression "((int)uVar8 < 0)" (( "(") (binary_expression "(int)uVar8 < 0" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((int)DAT_00151704 < (int)uVar8)" (( "(") (binary_expression "(int)DAT_00151704 < (int)uVar8" (cast_expression "(int)DAT_00151704" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00151704")) (< "<") (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8"))) () ")"))) () ")")) (compound_statement "{\n          FUN_000a6250();\n          iVar6 = 1;\n          goto LAB_000a6f27;\n        }" ({ "{") (expression_statement "FUN_000a6250();" (call_expression "FUN_000a6250()" (identifier "FUN_000a6250") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_000a6f27;" (goto "goto") (statement_identifier "LAB_000a6f27") (; ";")) (} "}")))) (expression_statement "puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);" (assignment_expression "puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)(DAT_0015170c + uVar8 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0015170c + uVar8 * 4)" (( "(") (binary_expression "DAT_0015170c + uVar8 * 4" (identifier "DAT_0015170c") (+ "+") (binary_expression "uVar8 * 4" (identifier "uVar8") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "free((void *)*puVar4);" (call_expression "free((void *)*puVar4)" (identifier "free") (argument_list "((void *)*puVar4)" (( "(") (cast_expression "(void *)*puVar4" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) () ")"))) (; ";")) (expression_statement "DAT_00151704 = uVar3 - 1;" (assignment_expression "DAT_00151704 = uVar3 - 1" (identifier "DAT_00151704") (= "=") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((int)uVar8 < (int)DAT_00151704) {\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }" (if "if") (parenthesized_expression "((int)uVar8 < (int)DAT_00151704)" (( "(") (binary_expression "(int)uVar8 < (int)DAT_00151704" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (< "<") (cast_expression "(int)DAT_00151704" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00151704"))) () ")")) (compound_statement "{\n          do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);\n        }" ({ "{") (do_statement "do {\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);" (do "do") (compound_statement "{\n            puVar5 = puVar4 + 1;\n            *puVar4 = puVar4[1];\n            puVar4 = puVar5;\n          }" ({ "{") (expression_statement "puVar5 = puVar4 + 1;" (assignment_expression "puVar5 = puVar4 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar4 = puVar4[1];" (assignment_expression "*puVar4 = puVar4[1]" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar4 = puVar5;" (assignment_expression "puVar4 = puVar5" (identifier "puVar4") (= "=") (identifier "puVar5")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5)" (( "(") (binary_expression "(undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5" (cast_expression "(undefined4 *)(iVar6 + -4 + uVar3 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + -4 + uVar3 * 4)" (( "(") (binary_expression "iVar6 + -4 + uVar3 * 4" (binary_expression "iVar6 + -4" (identifier "iVar6") (+ "+") (number_literal "-4")) (+ "+") (binary_expression "uVar3 * 4" (identifier "uVar3") (* "*") (number_literal "4"))) () ")"))) (!= "!=") (identifier "puVar5")) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "dirs_builtin(0);" (call_expression "dirs_builtin(0)" (identifier "dirs_builtin") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_000a6f27;" (goto "goto") (statement_identifier "LAB_000a6f27") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000a6f1b:\n  FUN_000a6250();" (statement_identifier "LAB_000a6f1b") (: ":") (expression_statement "FUN_000a6250();" (call_expression "FUN_000a6250()" (identifier "FUN_000a6250") (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_000a6f27:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }" (statement_identifier "LAB_000a6f27") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_000ecc40();\n  }" ({ "{") (expression_statement "FUN_000ecc40();" (call_expression "FUN_000ecc40()" (identifier "FUN_000ecc40") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return iVar6;" (return "return") (identifier "iVar6") (; ";")) (} "}")))

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

int function_1(type_1 *var_2)

{
  type_2 var_9;
  int var_19;
  char **var_29;
  char **var_28;
  char **var_30;
  int var_4;
  type_3 var_20;
  char *var_25;
  type_2 *var_11;
  int var_18;
  type_2 *var_5;
  int var_17;
  type_2 *var_6;
  int var_1;
  bool var_7;
  bool bVar15;
  type_2 var_21;
  int var_23;
  type_4 which;
  int var_32;
  type_5 uStack_14;
  
  uStack_14 = 0xa6d59;
  var_32 = *(int *)(var_1 + 0x14);
  if (var_2 == (type_1 *)0x0) {
    which._0_4_ = 0;
    which._4_4_ = 0;
    if (((-1 < var_3 >> 0x1f) && (-1 < var_3)) &&
       (var_3 != 0)) {
      var_7 = false;
      goto LAB_000a6fcf;
    }
    var_25 = "";
    var_4 = var_3;
  }
  else {
    var_11 = (type_2 *)var_2->word->word;
    var_7 = *var_11 < 0x2d;
    bVar15 = *var_11 == 0x2d;
    if (bVar15) {
      var_4 = 7;
      var_5 = var_11;
      var_6 = &DAT_001017a9;
      do {
        if (var_4 == 0) break;
        var_4 = var_4 + -1;
        var_7 = *var_5 < *var_6;
        bVar15 = *var_5 == *var_6;
        var_5 = var_5 + 1;
        var_6 = var_6 + 1;
      } while (bVar15);
      if ((!var_7 && !bVar15) == var_7) {
        var_8();
        var_4 = 0x102;
        goto LAB_000a6f27;
      }
    }
    which._0_4_ = 0;
    var_25 = (char *)0x0;
    which._4_4_ = 0;
    var_21 = 0x2b;
    var_7 = false;
LAB_000a6dee:
    var_9 = *var_11;
    if (var_9 == 0x2d) {
      if (var_11[1] != 0x6e) {
        if ((var_11[1] != 0x2d) || (var_11[2] != 0)) goto LAB_000a6db9;
        goto LAB_000a6e10;
      }
      if (var_11[2] != 0) goto LAB_000a6db9;
      var_7 = true;
LAB_000a6de3:
      var_2 = var_2->next;
      if (var_2 == (type_6 *)0x0) goto LAB_000a6e10;
      var_11 = (type_2 *)var_2->word->word;
      goto LAB_000a6dee;
    }
    if (var_9 == 0x2b) {
LAB_000a6db9:
      var_4 = var_10((char *)(var_11 + 1),&which);
      if (var_4 == 0) {
        var_12(var_2->word->word);
        var_13();
        var_4 = 0x102;
        goto LAB_000a6f27;
      }
      var_25 = var_2->word->word;
      var_21 = var_9;
      goto LAB_000a6de3;
    }
    var_21 = 0;
    if (var_9 != 0) {
      var_25 = (char *)var_14(0,"%s: invalid argument",5);
      var_15(var_25,var_11);
      var_13();
      var_4 = 0x102;
      goto LAB_000a6f27;
    }
LAB_000a6e10:
    var_29 = var_27;
    var_4 = var_3;
    var_17 = var_3 >> 0x1f;
    if (((var_16(var_17,which._4_4_) !=
         var_16(var_17 - which._4_4_,(type_3)((type_3)var_3 < (type_3)which))) ==
         (int)((var_17 - which._4_4_) - (type_3)((type_3)var_3 < (type_3)which)) < 0) &&
       (var_18 = -var_3 >> 0x1f,
       var_20 = (type_3)((type_3)which < (type_3)-var_3), var_19 = which._4_4_ - var_18,
       (var_16(which._4_4_,var_18) != var_16(var_19,var_20)) == (int)(var_19 - var_20) < 0)) {
      if ((var_3 != 0) || ((type_3)which != 0 || which._4_4_ != 0)) {
        if (var_21 == 0x2b) {
          if ((type_3)which != 0 || which._4_4_ != 0) {
            var_20 = var_3 - (type_3)which;
            goto LAB_000a6e85;
          }
LAB_000a6fcf:
          var_23 = var_3;
          if (!var_7) {
            var_4 = var_22(var_27[var_3 + -1]);
            if (var_4 != 0) goto LAB_000a6f27;
            var_23 = var_3;
          }
          var_3 = var_23 + -1;
          var_24(var_27[var_3]);
        }
        else {
          var_20 = (type_3)which;
          if ((var_21 == 0x2d) && (var_17 == which._4_4_ && var_3 == (type_3)which))
          goto LAB_000a6fcf;
LAB_000a6e85:
          if (((int)var_20 < 0) || (var_3 < (int)var_20)) {
            if (var_25 == (char *)0x0) {
              var_25 = "";
            }
            var_26(var_3,var_25);
            var_4 = 1;
            goto LAB_000a6f27;
          }
          var_28 = var_27 + var_20;
          var_24(*var_28);
          var_3 = var_4 + -1;
          if ((int)var_20 < var_3) {
            do {
              var_30 = var_28 + 1;
              *var_28 = var_28[1];
              var_28 = var_30;
            } while (var_29 + var_4 + -1 != var_30);
          }
        }
        var_31((type_1 *)0x0);
        var_4 = 0;
        goto LAB_000a6f27;
      }
      var_4 = 0;
    }
    if (var_25 == (char *)0x0) {
      var_25 = "";
    }
  }
  var_26(var_4,var_25);
  var_4 = 1;
LAB_000a6f27:
  if (var_32 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_33();
  }
  return var_4;
}


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

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

int MASKED(int *param_1)

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int iVar6;
  undefined4 uVar7;
  uint uVar8;
  byte *pbVar9;
  int iVar10;
  byte *pbVar11;
  int iVar12;
  byte *pbVar13;
  int in_GS_OFFSET;
  bool bVar14;
  bool bVar15;
  byte local_45;
  uint local_38;
  uint local_2c;
  int local_28;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0xa6d59;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (param_1 == (int *)0x0) {
    local_2c = 0;
    local_28 = 0;
    if (((-1 < (int)DAT_00151704 >> 0x1f) && (-1 < (int)DAT_00151704)) && (DAT_00151704 != 0)) {
      bVar14 = false;
      goto LAB_000a6fcf;
    }
    goto LAB_000a6f1b;
  }
  pbVar9 = *(byte **)param_1[1];
  bVar14 = *pbVar9 < 0x2d;
  bVar15 = *pbVar9 == 0x2d;
  if (bVar15) {
    iVar6 = 7;
    pbVar11 = pbVar9;
    pbVar13 = &DAT_001017a9;
    do {
      if (iVar6 == 0) break;
      iVar6 = iVar6 + -1;
      bVar14 = *pbVar11 < *pbVar13;
      bVar15 = *pbVar11 == *pbVar13;
      pbVar11 = pbVar11 + 1;
      pbVar13 = pbVar13 + 1;
    } while (bVar15);
    if ((!bVar14 && !bVar15) == bVar14) {
      builtin_help();
      iVar6 = 0x102;
      goto LAB_000a6f27;
    }
  }
  local_2c = 0;
  local_28 = 0;
  local_45 = 0x2b;
  bVar14 = false;
LAB_000a6dee:
  bVar1 = *pbVar9;
  if (bVar1 == 0x2d) {
    if (pbVar9[1] != 0x6e) {
      if ((pbVar9[1] != 0x2d) || (pbVar9[2] != 0)) goto LAB_000a6db9;
      goto LAB_000a6e10;
    }
    if (pbVar9[2] != 0) goto LAB_000a6db9;
    bVar14 = true;
LAB_000a6de3:
    param_1 = (int *)*param_1;
    if (param_1 == (int *)0x0) goto LAB_000a6e10;
    pbVar9 = *(byte **)param_1[1];
    goto LAB_000a6dee;
  }
  if (bVar1 == 0x2b) {
LAB_000a6db9:
    iVar6 = legal_number(pbVar9 + 1,&local_2c);
    local_45 = bVar1;
    if (iVar6 == 0) {
      sh_invalidnum(*(undefined4 *)param_1[1]);
      builtin_usage();
      iVar6 = 0x102;
      goto LAB_000a6f27;
    }
    goto LAB_000a6de3;
  }
  local_45 = 0;
  if (bVar1 != 0) {
    uVar7 = dcgettext(0,"%s: invalid argument",5);
    builtin_error(uVar7,pbVar9);
    builtin_usage();
    iVar6 = 0x102;
    goto LAB_000a6f27;
  }
LAB_000a6e10:
  iVar6 = DAT_0015170c;
  uVar3 = DAT_00151704;
  iVar12 = (int)DAT_00151704 >> 0x1f;
  if (((SBORROW4(iVar12,local_28) != SBORROW4(iVar12 - local_28,(uint)(DAT_00151704 < local_2c))) ==
       (int)((iVar12 - local_28) - (uint)(DAT_00151704 < local_2c)) < 0) &&
     (iVar10 = (int)-DAT_00151704 >> 0x1f, uVar8 = (uint)(local_2c < -DAT_00151704),
     iVar2 = local_28 - iVar10,
     (SBORROW4(local_28,iVar10) != SBORROW4(iVar2,uVar8)) == (int)(iVar2 - uVar8) < 0)) {
    if ((DAT_00151704 != 0) || (local_2c != 0 || local_28 != 0)) {
      if (local_45 == 0x2b) {
        if (local_2c != 0 || local_28 != 0) {
          uVar8 = DAT_00151704 - local_2c;
          goto LAB_000a6e85;
        }
LAB_000a6fcf:
        local_38 = DAT_00151704;
        if (!bVar14) {
          iVar6 = FUN_000a6140();
          if (iVar6 != 0) goto LAB_000a6f27;
          local_38 = DAT_00151704;
        }
        DAT_00151704 = local_38 - 1;
        free(*(void **)(DAT_0015170c + DAT_00151704 * 4));
      }
      else {
        uVar8 = local_2c;
        if ((local_45 == 0x2d) && (iVar12 == local_28 && DAT_00151704 == local_2c))
        goto LAB_000a6fcf;
LAB_000a6e85:
        if (((int)uVar8 < 0) || ((int)DAT_00151704 < (int)uVar8)) {
          FUN_000a6250();
          iVar6 = 1;
          goto LAB_000a6f27;
        }
        puVar4 = (undefined4 *)(DAT_0015170c + uVar8 * 4);
        free((void *)*puVar4);
        DAT_00151704 = uVar3 - 1;
        if ((int)uVar8 < (int)DAT_00151704) {
          do {
            puVar5 = puVar4 + 1;
            *puVar4 = puVar4[1];
            puVar4 = puVar5;
          } while ((undefined4 *)(iVar6 + -4 + uVar3 * 4) != puVar5);
        }
      }
      dirs_builtin(0);
      iVar6 = 0;
      goto LAB_000a6f27;
    }
  }
LAB_000a6f1b:
  FUN_000a6250();
  iVar6 = 1;
LAB_000a6f27:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000ecc40();
  }
  return iVar6;
}

