
int caller_builtin(WORD_LIST *list)

{
  ARRAY *a;
  ARRAY *a_00;
  int iVar1;
  int iVar2;
  char *pcVar3;
  char *pcVar4;
  char *pcVar5;
  int *piVar6;
  ARRAY *a_01;
  int iVar7;
  undefined *puVar8;
  undefined4 in_stack_ffffffc0;
  undefined4 in_stack_ffffffc4;
  intmax_t num;
  char *local_24;
  
  puVar8 = PTR___stack_chk_guard_001464dc;
  local_24 = *(char **)PTR___stack_chk_guard_001464dc;
  if ((((list != (WORD_LIST *)0x0) && (list->word != (WORD_DESC *)0x0)) &&
      (pcVar5 = list->word->word, *pcVar5 == '-')) &&
     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar5,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {
    iVar1 = 0x102;
    builtin_help();
    goto LAB_000ae9f0;
  }
  a = (ARRAY *)(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);
  if (a != (ARRAY *)0x0) {
    if (((uint)a->lastref & 4) == 0) {
      a = (ARRAY *)0x0;
    }
    else {
      a = *(ARRAY **)&a->field_0x4;
    }
  }
  a_00 = (ARRAY *)(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);
  if (a_00 != (ARRAY *)0x0) {
    if (((uint)a_00->lastref & 4) == 0) {
      a_00 = (ARRAY *)0x0;
    }
    else {
      a_00 = *(ARRAY **)&a_00->field_0x4;
    }
  }
  iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);
  if ((((iVar1 != 0) && ((*(uint *)(iVar1 + 0x14) & 4) != 0)) &&
      ((a_01 = *(ARRAY **)(iVar1 + 4), a_01 != (ARRAY *)0x0 &&
       ((a_01->num_elements != 0 && (a_00 != (ARRAY *)0x0)))))) && (a_00->num_elements != 0)) {
    iVar1 = no_options(list);
    if (iVar1 != 0) {
      iVar1 = 0x102;
      goto LAB_000ae9f0;
    }
    iVar7 = *(int *)PTR_loptend_00145864;
    iVar1 = 0;
    if (iVar7 == 0) {
      pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));
      pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));
      if (pcVar5 == (char *)0x0) {
        pcVar5 = PTR_DAT_001445ac + -0x71f0;
      }
      if (pcVar3 == (char *)0x0) {
        pcVar3 = PTR_DAT_001445ac + -0x71f0;
      }
      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,pcVar5,pcVar3);
      goto LAB_000ae9f0;
    }
    if ((a != (ARRAY *)0x0) && (a->num_elements != 0)) {
      iVar2 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar7 + 4),&num);
      if (iVar2 == 0) {
        iVar1 = 0x102;
        sh_invalidnum((char *)**(undefined4 **)(iVar7 + 4));
        builtin_usage();
        goto LAB_000ae9f0;
      }
      pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));
      pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));
      pcVar4 = array_reference(a,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));
      if (((pcVar5 != (char *)0x0) && (pcVar3 != (char *)0x0)) && (pcVar4 != (char *)0x0)) {
        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,pcVar5,pcVar4,pcVar3);
        goto LAB_000ae9f0;
      }
    }
  }
  iVar1 = 1;
LAB_000ae9f0:
  if (local_24 != *(char **)puVar8) {
    pcVar5 = local_24;
    puVar8 = PTR___stack_chk_fail_00146488;
    (*(code *)PTR___stack_chk_fail_00146488)();
    piVar6 = *(int **)(puVar8 + 0x96538);
    if (*piVar6 != 0) {
      (**(code **)(puVar8 + 0x978ec))();
    }
    *piVar6 = 0;
    pcVar5 = get_working_directory(pcVar5);
    return (int)pcVar5;
  }
  return iVar1;
}



undefined4 caller_builtin(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined *puVar6;
  undefined *puVar7;
  char *pcVar8;
  int *piVar9;
  undefined4 uVar10;
  undefined *puVar11;
  undefined1 local_30 [12];
  int local_24;
  
  puVar11 = PTR___stack_chk_guard_001464dc;
  local_24 = *(int *)PTR___stack_chk_guard_001464dc;
  if ((((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&
      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&
     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {
    uVar10 = 0x102;
    builtin_help();
    goto LAB_000ae9f0;
  }
  iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);
  if (iVar1 != 0) {
    if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {
      iVar1 = 0;
    }
    else {
      iVar1 = *(int *)(iVar1 + 4);
    }
  }
  iVar2 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);
  if (iVar2 != 0) {
    if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *(int *)(iVar2 + 4);
    }
  }
  iVar3 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);
  if ((((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&
      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))
      ) && (*(int *)(iVar2 + 0x10) != 0)) {
    iVar4 = no_options(param_1);
    if (iVar4 != 0) {
      uVar10 = 0x102;
      goto LAB_000ae9f0;
    }
    iVar4 = *(int *)PTR_loptend_00145864;
    uVar10 = 0;
    if (iVar4 == 0) {
      puVar6 = (undefined *)array_reference(iVar3);
      puVar7 = (undefined *)array_reference(iVar2);
      if (puVar6 == (undefined *)0x0) {
        puVar6 = PTR_DAT_001445ac + -0x71f0;
      }
      if (puVar7 == (undefined *)0x0) {
        puVar7 = PTR_DAT_001445ac + -0x71f0;
      }
      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);
      goto LAB_000ae9f0;
    }
    if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {
      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);
      if (iVar5 == 0) {
        uVar10 = 0x102;
        sh_invalidnum(**(undefined4 **)(iVar4 + 4));
        builtin_usage();
        goto LAB_000ae9f0;
      }
      iVar3 = array_reference(iVar3);
      iVar2 = array_reference(iVar2);
      iVar1 = array_reference(iVar1);
      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {
        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);
        goto LAB_000ae9f0;
      }
    }
  }
  uVar10 = 1;
LAB_000ae9f0:
  if (local_24 != *(int *)puVar11) {
    iVar1 = local_24;
    puVar11 = PTR___stack_chk_fail_00146488;
    (*(code *)PTR___stack_chk_fail_00146488)();
    piVar9 = *(int **)(puVar11 + 0x96538);
    if (*piVar9 != 0) {
      (**(code **)(puVar11 + 0x978ec))();
    }
    *piVar9 = 0;
    uVar10 = get_working_directory(iVar1);
    return uVar10;
  }
  return uVar10;
}


lui gp,0xa
addiu gp,gp,-0x2390
addu gp,gp,t9
addiu sp,sp,-0x50
sw s2,0x3c(sp)
lw s2,-0x6064(gp)
sw gp,0x18(sp)
sw s3,0x40(sp)
or s3,a0,zero
sw ra,0x4c(sp)
sw s5,0x48(sp)
sw s4,0x44(sp)
sw s1,0x38(sp)
sw s0,0x34(sp)
lw v0,0x0(s2)
sw v0,0x2c(sp)
beq a0,zero,0x000ae938
_nop
lw v0,0x4(a0)
beq v0,zero,0x000ae93c
_lw a0,-0x7fc8(gp)
lw a0,0x0(v0)
li v0,0x2d
lb v1,0x0(a0)
beq v1,v0,0x000aea34
_lw a1,-0x7f94(gp)
lw a0,-0x7fc8(gp)
lw t9,-0x7db8(gp)
jalr t9
_addiu a0,a0,0x44fc
lw gp,0x18(sp)
beq v0,zero,0x000ae968
_or s1,v0,zero
lw v0,0x14(v0)
andi v0,v0,0x4
beq v0,zero,0x000aea2c
_nop
lw s1,0x4(s1)
lw a0,-0x7fc8(gp)
lw t9,-0x7db8(gp)
jalr t9
_addiu a0,a0,0x4508
lw gp,0x18(sp)
beq v0,zero,0x000ae998
_or s0,v0,zero
lw v0,0x14(v0)
andi v0,v0,0x4
beq v0,zero,0x000aea24
_nop
lw s0,0x4(s0)
lw a0,-0x7fc8(gp)
lw t9,-0x7db8(gp)
jalr t9
_addiu a0,a0,0x4514
beq v0,zero,0x000ae9ec
_lw gp,0x18(sp)
lw v1,0x14(v0)
andi v1,v1,0x4
beq v1,zero,0x000ae9ec
_nop
lw s4,0x4(v0)
beq s4,zero,0x000ae9ec
_nop
lw v0,0x10(s4)
beq v0,zero,0x000ae9ec
_nop
beq s0,zero,0x000ae9ec
_nop
lw v0,0x10(s0)
bne v0,zero,0x000aea5c
_lw t9,-0x6c90(gp)
li s3,0x1
lw a0,0x2c(sp)
or v0,s3,zero
lw v1,0x0(s2)
bne a0,v1,0x000aebf8
_lw ra,0x4c(sp)
lw s5,0x48(sp)
lw s4,0x44(sp)
lw s3,0x40(sp)
lw s2,0x3c(sp)
lw s1,0x38(sp)
lw s0,0x34(sp)
jr ra
_addiu sp,sp,0x50
b 0x000ae998
_or s0,zero,zero
b 0x000ae968
_or s1,zero,zero
lw t9,-0x5ff8(gp)
jalr t9
_addiu a1,a1,-0x7204
bne v0,zero,0x000ae938
_lw gp,0x18(sp)
lw t9,-0x6ce0(gp)
bal 0x000b9c08
_li s3,0x102
b 0x000ae9f0
_lw gp,0x18(sp)
bal 0x000b01c8
_or a0,s3,zero
lw gp,0x18(sp)
bne v0,zero,0x000aeb4c
_or s3,v0,zero
lw v0,-0x6cdc(gp)
lw s5,0x0(v0)
beq s5,zero,0x000aeb54
_lw t9,-0x7a18(gp)
beq s1,zero,0x000ae9ec
_nop
lw v0,0x10(s1)
beq v0,zero,0x000ae9ec
_addiu a1,sp,0x20
lw v0,0x4(s5)
lw t9,-0x7b70(gp)
jalr t9
_lw a0,0x0(v0)
beq v0,zero,0x000aebb4
_lw gp,0x18(sp)
lw t9,-0x7a18(gp)
or a0,s4,zero
lw a3,0x24(sp)
bal 0x00091530
_lw a2,0x20(sp)
or a0,s0,zero
lw a2,0x24(sp)
or s0,v0,zero
lw gp,0x18(sp)
lw v0,0x20(sp)
addiu a3,a2,0x1
lw t9,-0x7a18(gp)
sltu a2,a3,a2
bal 0x00091530
_addu a2,a2,v0
or a0,s1,zero
lw a2,0x24(sp)
or s1,v0,zero
lw gp,0x18(sp)
lw v0,0x20(sp)
addiu a3,a2,0x1
lw t9,-0x7a18(gp)
sltu a2,a3,a2
bal 0x00091530
_addu a2,a2,v0
beq s0,zero,0x000ae9ec
_lw gp,0x18(sp)
beq s1,zero,0x000ae9ec
_nop
beq v0,zero,0x000ae9ec
_lw a1,-0x7f94(gp)
li a0,0x1
lw t9,-0x6254(gp)
or a3,v0,zero
sw s1,0x10(sp)
or a2,s0,zero
jalr t9
_addiu a1,a1,-0x71e8
b 0x000ae9f0
_lw gp,0x18(sp)
b 0x000ae9f0
_li s3,0x102
or a3,zero,zero
or a2,zero,zero
bal 0x00091530
_or a0,s4,zero
li a3,0x1
lw gp,0x18(sp)
or a2,zero,zero
or a0,s0,zero
lw t9,-0x7a18(gp)
bal 0x00091530
_or s0,v0,zero
beq s0,zero,0x000aebec
_lw gp,0x18(sp)
beq v0,zero,0x000aebe0
_nop
lw a1,-0x7f94(gp)
li a0,0x1
lw t9,-0x6254(gp)
or a3,v0,zero
or a2,s0,zero
jalr t9
_addiu a1,a1,-0x6200
b 0x000ae9f0
_lw gp,0x18(sp)
lw v0,0x4(s5)
li s3,0x102
lw t9,-0x6c88(gp)
bal 0x000b0470
_lw a0,0x0(v0)
lw gp,0x18(sp)
lw t9,-0x6ce4(gp)
bal 0x000b00b4
_nop
b 0x000ae9f0
_lw gp,0x18(sp)
lw v0,-0x7f94(gp)
b 0x000aeb90
_addiu v0,v0,-0x71f0
lw s0,-0x7f94(gp)
b 0x000aeb88
_addiu s0,s0,-0x71f0
lw t9,-0x60b8(gp)
jalr t9
_nop
nop
nop
nop
(translation_unit "undefined4 caller_builtin(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  char *pcVar8;\n  int *piVar9;\n  undefined4 uVar10;\n  undefined *puVar11;\n  undefined1 local_30 [12];\n  int local_24;\n  \n  puVar11 = PTR___stack_chk_guard_001464dc;\n  local_24 = *(int *)PTR___stack_chk_guard_001464dc;\n  if ((((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {\n    uVar10 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }\n  iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);\n  if (iVar1 != 0) {\n    if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }\n  }\n  iVar2 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);\n  if (iVar2 != 0) {\n    if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }\n  }\n  iVar3 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);\n  if ((((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0)) {\n    iVar4 = no_options(param_1);\n    if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar4 = *(int *)PTR_loptend_00145864;\n    uVar10 = 0;\n    if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }\n    if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }\n  }\n  uVar10 = 1;\nLAB_000ae9f0:\n  if (local_24 != *(int *)puVar11) {\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }\n  return uVar10;\n}\n\n" (function_definition "undefined4 caller_builtin(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  char *pcVar8;\n  int *piVar9;\n  undefined4 uVar10;\n  undefined *puVar11;\n  undefined1 local_30 [12];\n  int local_24;\n  \n  puVar11 = PTR___stack_chk_guard_001464dc;\n  local_24 = *(int *)PTR___stack_chk_guard_001464dc;\n  if ((((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {\n    uVar10 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }\n  iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);\n  if (iVar1 != 0) {\n    if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }\n  }\n  iVar2 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);\n  if (iVar2 != 0) {\n    if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }\n  }\n  iVar3 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);\n  if ((((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0)) {\n    iVar4 = no_options(param_1);\n    if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar4 = *(int *)PTR_loptend_00145864;\n    uVar10 = 0;\n    if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }\n    if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }\n  }\n  uVar10 = 1;\nLAB_000ae9f0:\n  if (local_24 != *(int *)puVar11) {\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }\n  return uVar10;\n}" type_identifier (function_declarator "caller_builtin(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  char *pcVar8;\n  int *piVar9;\n  undefined4 uVar10;\n  undefined *puVar11;\n  undefined1 local_30 [12];\n  int local_24;\n  \n  puVar11 = PTR___stack_chk_guard_001464dc;\n  local_24 = *(int *)PTR___stack_chk_guard_001464dc;\n  if ((((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {\n    uVar10 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }\n  iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);\n  if (iVar1 != 0) {\n    if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }\n  }\n  iVar2 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);\n  if (iVar2 != 0) {\n    if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }\n  }\n  iVar3 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);\n  if ((((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0)) {\n    iVar4 = no_options(param_1);\n    if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar4 = *(int *)PTR_loptend_00145864;\n    uVar10 = 0;\n    if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }\n    if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }\n  }\n  uVar10 = 1;\nLAB_000ae9f0:\n  if (local_24 != *(int *)puVar11) {\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }\n  return uVar10;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined1 local_30 [12];" type_identifier (array_declarator "local_30 [12]" identifier [ number_literal ]) ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "puVar11 = PTR___stack_chk_guard_001464dc;" (assignment_expression "puVar11 = PTR___stack_chk_guard_001464dc" identifier = identifier) ;) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_001464dc;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_001464dc" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_001464dc" * (cast_expression "(int *)PTR___stack_chk_guard_001464dc" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {\n    uVar10 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }" if (parenthesized_expression "((((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0))" ( (binary_expression "(((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)" (parenthesized_expression "(((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-'))" ( (binary_expression "((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')" (parenthesized_expression "((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0))" ( (binary_expression "(param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)" (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)" ( (binary_expression "*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0" (pointer_expression "*(undefined4 **)(param_1 + 4)" * (cast_expression "(undefined4 **)(param_1 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')" ( (comma_expression "pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-'" (assignment_expression "pcVar8 = (char *)**(undefined4 **)(param_1 + 4)" identifier = (cast_expression "(char *)**(undefined4 **)(param_1 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(param_1 + 4)" * (pointer_expression "*(undefined4 **)(param_1 + 4)" * (cast_expression "(undefined4 **)(param_1 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))))) , (binary_expression "*pcVar8 == '-'" (pointer_expression "*pcVar8" * identifier) == (char_literal "'-'" ' character '))) ))) )) && (parenthesized_expression "(iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)" ( (comma_expression "iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0" (assignment_expression "iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204)" identifier = (call_expression "(*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204)" (parenthesized_expression "(*(code *)PTR_strcmp_00146548)" ( (pointer_expression "*(code *)PTR_strcmp_00146548" * (cast_expression "(code *)PTR_strcmp_00146548" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar8,PTR_DAT_001445ac + -0x7204)" ( identifier , (binary_expression "PTR_DAT_001445ac + -0x7204" identifier + number_literal) )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    uVar10 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }" { (expression_statement "uVar10 = 0x102;" (assignment_expression "uVar10 = 0x102" identifier = number_literal) ;) (expression_statement "builtin_help();" (call_expression "builtin_help()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000ae9f0;" goto statement_identifier ;) })) (expression_statement "iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);" (assignment_expression "iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc)" identifier = (call_expression "(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc)" (parenthesized_expression "(*(code *)PTR_find_variable_00144788)" ( (pointer_expression "*(code *)PTR_find_variable_00144788" * (cast_expression "(code *)PTR_find_variable_00144788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_00144578 + 0x44fc)" ( (binary_expression "PTR_LAB_00144578 + 0x44fc" identifier + number_literal) )))) ;) (if_statement "if (iVar1 != 0) {\n    if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }\n  }" { (if_statement "if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }" if (parenthesized_expression "((*(uint *)(iVar1 + 0x14) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar1 + 0x14) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar1 + 0x14) & 4)" ( (binary_expression "*(uint *)(iVar1 + 0x14) & 4" (pointer_expression "*(uint *)(iVar1 + 0x14)" * (cast_expression "(uint *)(iVar1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar1 = 0;\n    }" { (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }" else (compound_statement "{\n      iVar1 = *(int *)(iVar1 + 4);\n    }" { (expression_statement "iVar1 = *(int *)(iVar1 + 4);" (assignment_expression "iVar1 = *(int *)(iVar1 + 4)" identifier = (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) ;) }))) })) (expression_statement "iVar2 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);" (assignment_expression "iVar2 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508)" identifier = (call_expression "(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508)" (parenthesized_expression "(*(code *)PTR_find_variable_00144788)" ( (pointer_expression "*(code *)PTR_find_variable_00144788" * (cast_expression "(code *)PTR_find_variable_00144788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_00144578 + 0x4508)" ( (binary_expression "PTR_LAB_00144578 + 0x4508" identifier + number_literal) )))) ;) (if_statement "if (iVar2 != 0) {\n    if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }\n  }" { (if_statement "if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }" if (parenthesized_expression "((*(uint *)(iVar2 + 0x14) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar2 + 0x14) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar2 + 0x14) & 4)" ( (binary_expression "*(uint *)(iVar2 + 0x14) & 4" (pointer_expression "*(uint *)(iVar2 + 0x14)" * (cast_expression "(uint *)(iVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar2 = 0;\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }" else (compound_statement "{\n      iVar2 = *(int *)(iVar2 + 4);\n    }" { (expression_statement "iVar2 = *(int *)(iVar2 + 4);" (assignment_expression "iVar2 = *(int *)(iVar2 + 4)" identifier = (pointer_expression "*(int *)(iVar2 + 4)" * (cast_expression "(int *)(iVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) ))))) ;) }))) })) (expression_statement "iVar3 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);" (assignment_expression "iVar3 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514)" identifier = (call_expression "(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514)" (parenthesized_expression "(*(code *)PTR_find_variable_00144788)" ( (pointer_expression "*(code *)PTR_find_variable_00144788" * (cast_expression "(code *)PTR_find_variable_00144788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_00144578 + 0x4514)" ( (binary_expression "PTR_LAB_00144578 + 0x4514" identifier + number_literal) )))) ;) (if_statement "if ((((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0)) {\n    iVar4 = no_options(param_1);\n    if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar4 = *(int *)PTR_loptend_00145864;\n    uVar10 = 0;\n    if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }\n    if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }\n  }" if (parenthesized_expression "((((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0))" ( (binary_expression "(((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0)" (parenthesized_expression "(((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      )" ( (binary_expression "((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))" (parenthesized_expression "((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0))" ( (binary_expression "(iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(uint *)(iVar3 + 0x14) & 4) != 0)" ( (binary_expression "(*(uint *)(iVar3 + 0x14) & 4) != 0" (parenthesized_expression "(*(uint *)(iVar3 + 0x14) & 4)" ( (binary_expression "*(uint *)(iVar3 + 0x14) & 4" (pointer_expression "*(uint *)(iVar3 + 0x14)" * (cast_expression "(uint *)(iVar3 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))" ( (parenthesized_expression "(iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0))))" ( (comma_expression "iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))" (assignment_expression "iVar3 = *(int *)(iVar3 + 4)" identifier = (pointer_expression "*(int *)(iVar3 + 4)" * (cast_expression "(int *)(iVar3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) ))))) , (binary_expression "iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))" (binary_expression "iVar3 != 0" identifier != number_literal) && (parenthesized_expression "((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))" ( (parenthesized_expression "(*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0))" ( (binary_expression "*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)" (binary_expression "*(int *)(iVar3 + 0x10) != 0" (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) ))) )) )))) )) ))) )) && (parenthesized_expression "(*(int *)(iVar2 + 0x10) != 0)" ( (binary_expression "*(int *)(iVar2 + 0x10) != 0" (pointer_expression "*(int *)(iVar2 + 0x10)" * (cast_expression "(int *)(iVar2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n    iVar4 = no_options(param_1);\n    if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar4 = *(int *)PTR_loptend_00145864;\n    uVar10 = 0;\n    if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }\n    if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }\n  }" { (expression_statement "iVar4 = no_options(param_1);" (assignment_expression "iVar4 = no_options(param_1)" identifier = (call_expression "no_options(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }" { (expression_statement "uVar10 = 0x102;" (assignment_expression "uVar10 = 0x102" identifier = number_literal) ;) (goto_statement "goto LAB_000ae9f0;" goto statement_identifier ;) })) (expression_statement "iVar4 = *(int *)PTR_loptend_00145864;" (assignment_expression "iVar4 = *(int *)PTR_loptend_00145864" identifier = (pointer_expression "*(int *)PTR_loptend_00145864" * (cast_expression "(int *)PTR_loptend_00145864" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (if_statement "if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }" { (expression_statement "puVar6 = (undefined *)array_reference(iVar3);" (assignment_expression "puVar6 = (undefined *)array_reference(iVar3)" identifier = (cast_expression "(undefined *)array_reference(iVar3)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "array_reference(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))))) ;) (expression_statement "puVar7 = (undefined *)array_reference(iVar2);" (assignment_expression "puVar7 = (undefined *)array_reference(iVar2)" identifier = (cast_expression "(undefined *)array_reference(iVar2)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "array_reference(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))))) ;) (if_statement "if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }" if (parenthesized_expression "(puVar6 == (undefined *)0x0)" ( (binary_expression "puVar6 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }" { (expression_statement "puVar6 = PTR_DAT_001445ac + -0x71f0;" (assignment_expression "puVar6 = PTR_DAT_001445ac + -0x71f0" identifier = (binary_expression "PTR_DAT_001445ac + -0x71f0" identifier + number_literal)) ;) })) (if_statement "if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }" if (parenthesized_expression "(puVar7 == (undefined *)0x0)" ( (binary_expression "puVar7 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }" { (expression_statement "puVar7 = PTR_DAT_001445ac + -0x71f0;" (assignment_expression "puVar7 = PTR_DAT_001445ac + -0x71f0" identifier = (binary_expression "PTR_DAT_001445ac + -0x71f0" identifier + number_literal)) ;) })) (expression_statement "(*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);" (call_expression "(*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7)" (parenthesized_expression "(*(code *)PTR___printf_chk_001462ec)" ( (pointer_expression "*(code *)PTR___printf_chk_001462ec" * (cast_expression "(code *)PTR___printf_chk_001462ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7)" ( number_literal , (binary_expression "PTR_DAT_001445ac + -0x6200" identifier + number_literal) , identifier , identifier ))) ;) (goto_statement "goto LAB_000ae9f0;" goto statement_identifier ;) })) (if_statement "if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }" if (parenthesized_expression "((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0))" ( (binary_expression "(iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(int *)(iVar1 + 0x10) != 0)" ( (binary_expression "*(int *)(iVar1 + 0x10) != 0" (pointer_expression "*(int *)(iVar1 + 0x10)" * (cast_expression "(int *)(iVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }" { (expression_statement "iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);" (assignment_expression "iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30)" identifier = (call_expression "(*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30)" (parenthesized_expression "(*(code *)PTR_legal_number_001449d0)" ( (pointer_expression "*(code *)PTR_legal_number_001449d0" * (cast_expression "(code *)PTR_legal_number_001449d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(**(undefined4 **)(iVar4 + 4),local_30)" ( (pointer_expression "**(undefined4 **)(iVar4 + 4)" * (pointer_expression "*(undefined4 **)(iVar4 + 4)" * (cast_expression "(undefined4 **)(iVar4 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))) , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }" { (expression_statement "uVar10 = 0x102;" (assignment_expression "uVar10 = 0x102" identifier = number_literal) ;) (expression_statement "sh_invalidnum(**(undefined4 **)(iVar4 + 4));" (call_expression "sh_invalidnum(**(undefined4 **)(iVar4 + 4))" identifier (argument_list "(**(undefined4 **)(iVar4 + 4))" ( (pointer_expression "**(undefined4 **)(iVar4 + 4)" * (pointer_expression "*(undefined4 **)(iVar4 + 4)" * (cast_expression "(undefined4 **)(iVar4 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))) ))) ;) (expression_statement "builtin_usage();" (call_expression "builtin_usage()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000ae9f0;" goto statement_identifier ;) })) (expression_statement "iVar3 = array_reference(iVar3);" (assignment_expression "iVar3 = array_reference(iVar3)" identifier = (call_expression "array_reference(iVar3)" identifier (argument_list "(iVar3)" ( identifier )))) ;) (expression_statement "iVar2 = array_reference(iVar2);" (assignment_expression "iVar2 = array_reference(iVar2)" identifier = (call_expression "array_reference(iVar2)" identifier (argument_list "(iVar2)" ( identifier )))) ;) (expression_statement "iVar1 = array_reference(iVar1);" (assignment_expression "iVar1 = array_reference(iVar1)" identifier = (call_expression "array_reference(iVar1)" identifier (argument_list "(iVar1)" ( identifier )))) ;) (if_statement "if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }" if (parenthesized_expression "(((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0))" ( (binary_expression "((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)" (parenthesized_expression "((iVar3 != 0) && (iVar2 != 0))" ( (binary_expression "(iVar3 != 0) && (iVar2 != 0)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) ))) )) && (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) ))) )) (compound_statement "{\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }" { (expression_statement "(*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);" (call_expression "(*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2)" (parenthesized_expression "(*(code *)PTR___printf_chk_001462ec)" ( (pointer_expression "*(code *)PTR___printf_chk_001462ec" * (cast_expression "(code *)PTR___printf_chk_001462ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2)" ( number_literal , (binary_expression "PTR_DAT_001445ac + -0x71e8" identifier + number_literal) , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_000ae9f0;" goto statement_identifier ;) })) })) })) (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" identifier = number_literal) ;) (labeled_statement "LAB_000ae9f0:\n  if (local_24 != *(int *)puVar11) {\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }" statement_identifier : (if_statement "if (local_24 != *(int *)puVar11) {\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }" if (parenthesized_expression "(local_24 != *(int *)puVar11)" ( (binary_expression "local_24 != *(int *)puVar11" identifier != (pointer_expression "*(int *)puVar11" * (cast_expression "(int *)puVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }" { (expression_statement "iVar1 = local_24;" (assignment_expression "iVar1 = local_24" identifier = identifier) ;) (expression_statement "puVar11 = PTR___stack_chk_fail_00146488;" (assignment_expression "puVar11 = PTR___stack_chk_fail_00146488" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00146488)();" (call_expression "(*(code *)PTR___stack_chk_fail_00146488)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00146488)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00146488" * (cast_expression "(code *)PTR___stack_chk_fail_00146488" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar9 = *(int **)(puVar11 + 0x96538);" (assignment_expression "piVar9 = *(int **)(puVar11 + 0x96538)" identifier = (pointer_expression "*(int **)(puVar11 + 0x96538)" * (cast_expression "(int **)(puVar11 + 0x96538)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x96538)" ( (binary_expression "puVar11 + 0x96538" identifier + number_literal) ))))) ;) (if_statement "if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }" if (parenthesized_expression "(*piVar9 != 0)" ( (binary_expression "*piVar9 != 0" (pointer_expression "*piVar9" * identifier) != number_literal) )) (compound_statement "{\n      (**(code **)(puVar11 + 0x978ec))();\n    }" { (expression_statement "(**(code **)(puVar11 + 0x978ec))();" (call_expression "(**(code **)(puVar11 + 0x978ec))()" (parenthesized_expression "(**(code **)(puVar11 + 0x978ec))" ( (pointer_expression "**(code **)(puVar11 + 0x978ec)" * (pointer_expression "*(code **)(puVar11 + 0x978ec)" * (cast_expression "(code **)(puVar11 + 0x978ec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x978ec)" ( (binary_expression "puVar11 + 0x978ec" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (expression_statement "*piVar9 = 0;" (assignment_expression "*piVar9 = 0" (pointer_expression "*piVar9" * identifier) = number_literal) ;) (expression_statement "uVar10 = get_working_directory(iVar1);" (assignment_expression "uVar10 = get_working_directory(iVar1)" identifier = (call_expression "get_working_directory(iVar1)" identifier (argument_list "(iVar1)" ( identifier )))) ;) (return_statement "return uVar10;" return identifier ;) }))) (return_statement "return uVar10;" return identifier ;) })))
(translation_unit "int caller_builtin(WORD_LIST *list)\n\n{\n  ARRAY *a;\n  ARRAY *a_00;\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *pcVar5;\n  int *piVar6;\n  ARRAY *a_01;\n  int iVar7;\n  undefined *puVar8;\n  undefined4 in_stack_ffffffc0;\n  undefined4 in_stack_ffffffc4;\n  intmax_t num;\n  char *local_24;\n  \n  puVar8 = PTR___stack_chk_guard_001464dc;\n  local_24 = *(char **)PTR___stack_chk_guard_001464dc;\n  if ((((list != (WORD_LIST *)0x0) && (list->word != (WORD_DESC *)0x0)) &&\n      (pcVar5 = list->word->word, *pcVar5 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar5,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {\n    iVar1 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }\n  a = (ARRAY *)(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);\n  if (a != (ARRAY *)0x0) {\n    if (((uint)a->lastref & 4) == 0) {\n      a = (ARRAY *)0x0;\n    }\n    else {\n      a = *(ARRAY **)&a->field_0x4;\n    }\n  }\n  a_00 = (ARRAY *)(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);\n  if (a_00 != (ARRAY *)0x0) {\n    if (((uint)a_00->lastref & 4) == 0) {\n      a_00 = (ARRAY *)0x0;\n    }\n    else {\n      a_00 = *(ARRAY **)&a_00->field_0x4;\n    }\n  }\n  iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);\n  if ((((iVar1 != 0) && ((*(uint *)(iVar1 + 0x14) & 4) != 0)) &&\n      ((a_01 = *(ARRAY **)(iVar1 + 4), a_01 != (ARRAY *)0x0 &&\n       ((a_01->num_elements != 0 && (a_00 != (ARRAY *)0x0)))))) && (a_00->num_elements != 0)) {\n    iVar1 = no_options(list);\n    if (iVar1 != 0) {\n      iVar1 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar7 = *(int *)PTR_loptend_00145864;\n    iVar1 = 0;\n    if (iVar7 == 0) {\n      pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      if (pcVar5 == (char *)0x0) {\n        pcVar5 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (pcVar3 == (char *)0x0) {\n        pcVar3 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,pcVar5,pcVar3);\n      goto LAB_000ae9f0;\n    }\n    if ((a != (ARRAY *)0x0) && (a->num_elements != 0)) {\n      iVar2 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar7 + 4),&num);\n      if (iVar2 == 0) {\n        iVar1 = 0x102;\n        sh_invalidnum((char *)**(undefined4 **)(iVar7 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar4 = array_reference(a,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      if (((pcVar5 != (char *)0x0) && (pcVar3 != (char *)0x0)) && (pcVar4 != (char *)0x0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,pcVar5,pcVar4,pcVar3);\n        goto LAB_000ae9f0;\n      }\n    }\n  }\n  iVar1 = 1;\nLAB_000ae9f0:\n  if (local_24 != *(char **)puVar8) {\n    pcVar5 = local_24;\n    puVar8 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar6 = *(int **)(puVar8 + 0x96538);\n    if (*piVar6 != 0) {\n      (**(code **)(puVar8 + 0x978ec))();\n    }\n    *piVar6 = 0;\n    pcVar5 = get_working_directory(pcVar5);\n    return (int)pcVar5;\n  }\n  return iVar1;\n}\n\n" (function_definition "int caller_builtin(WORD_LIST *list)\n\n{\n  ARRAY *a;\n  ARRAY *a_00;\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *pcVar5;\n  int *piVar6;\n  ARRAY *a_01;\n  int iVar7;\n  undefined *puVar8;\n  undefined4 in_stack_ffffffc0;\n  undefined4 in_stack_ffffffc4;\n  intmax_t num;\n  char *local_24;\n  \n  puVar8 = PTR___stack_chk_guard_001464dc;\n  local_24 = *(char **)PTR___stack_chk_guard_001464dc;\n  if ((((list != (WORD_LIST *)0x0) && (list->word != (WORD_DESC *)0x0)) &&\n      (pcVar5 = list->word->word, *pcVar5 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar5,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {\n    iVar1 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }\n  a = (ARRAY *)(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);\n  if (a != (ARRAY *)0x0) {\n    if (((uint)a->lastref & 4) == 0) {\n      a = (ARRAY *)0x0;\n    }\n    else {\n      a = *(ARRAY **)&a->field_0x4;\n    }\n  }\n  a_00 = (ARRAY *)(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);\n  if (a_00 != (ARRAY *)0x0) {\n    if (((uint)a_00->lastref & 4) == 0) {\n      a_00 = (ARRAY *)0x0;\n    }\n    else {\n      a_00 = *(ARRAY **)&a_00->field_0x4;\n    }\n  }\n  iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);\n  if ((((iVar1 != 0) && ((*(uint *)(iVar1 + 0x14) & 4) != 0)) &&\n      ((a_01 = *(ARRAY **)(iVar1 + 4), a_01 != (ARRAY *)0x0 &&\n       ((a_01->num_elements != 0 && (a_00 != (ARRAY *)0x0)))))) && (a_00->num_elements != 0)) {\n    iVar1 = no_options(list);\n    if (iVar1 != 0) {\n      iVar1 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar7 = *(int *)PTR_loptend_00145864;\n    iVar1 = 0;\n    if (iVar7 == 0) {\n      pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      if (pcVar5 == (char *)0x0) {\n        pcVar5 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (pcVar3 == (char *)0x0) {\n        pcVar3 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,pcVar5,pcVar3);\n      goto LAB_000ae9f0;\n    }\n    if ((a != (ARRAY *)0x0) && (a->num_elements != 0)) {\n      iVar2 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar7 + 4),&num);\n      if (iVar2 == 0) {\n        iVar1 = 0x102;\n        sh_invalidnum((char *)**(undefined4 **)(iVar7 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar4 = array_reference(a,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      if (((pcVar5 != (char *)0x0) && (pcVar3 != (char *)0x0)) && (pcVar4 != (char *)0x0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,pcVar5,pcVar4,pcVar3);\n        goto LAB_000ae9f0;\n      }\n    }\n  }\n  iVar1 = 1;\nLAB_000ae9f0:\n  if (local_24 != *(char **)puVar8) {\n    pcVar5 = local_24;\n    puVar8 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar6 = *(int **)(puVar8 + 0x96538);\n    if (*piVar6 != 0) {\n      (**(code **)(puVar8 + 0x978ec))();\n    }\n    *piVar6 = 0;\n    pcVar5 = get_working_directory(pcVar5);\n    return (int)pcVar5;\n  }\n  return iVar1;\n}" primitive_type (function_declarator "caller_builtin(WORD_LIST *list)" identifier (parameter_list "(WORD_LIST *list)" ( (parameter_declaration "WORD_LIST *list" type_identifier (pointer_declarator "*list" * identifier)) ))) (compound_statement "{\n  ARRAY *a;\n  ARRAY *a_00;\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *pcVar5;\n  int *piVar6;\n  ARRAY *a_01;\n  int iVar7;\n  undefined *puVar8;\n  undefined4 in_stack_ffffffc0;\n  undefined4 in_stack_ffffffc4;\n  intmax_t num;\n  char *local_24;\n  \n  puVar8 = PTR___stack_chk_guard_001464dc;\n  local_24 = *(char **)PTR___stack_chk_guard_001464dc;\n  if ((((list != (WORD_LIST *)0x0) && (list->word != (WORD_DESC *)0x0)) &&\n      (pcVar5 = list->word->word, *pcVar5 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar5,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {\n    iVar1 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }\n  a = (ARRAY *)(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);\n  if (a != (ARRAY *)0x0) {\n    if (((uint)a->lastref & 4) == 0) {\n      a = (ARRAY *)0x0;\n    }\n    else {\n      a = *(ARRAY **)&a->field_0x4;\n    }\n  }\n  a_00 = (ARRAY *)(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);\n  if (a_00 != (ARRAY *)0x0) {\n    if (((uint)a_00->lastref & 4) == 0) {\n      a_00 = (ARRAY *)0x0;\n    }\n    else {\n      a_00 = *(ARRAY **)&a_00->field_0x4;\n    }\n  }\n  iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);\n  if ((((iVar1 != 0) && ((*(uint *)(iVar1 + 0x14) & 4) != 0)) &&\n      ((a_01 = *(ARRAY **)(iVar1 + 4), a_01 != (ARRAY *)0x0 &&\n       ((a_01->num_elements != 0 && (a_00 != (ARRAY *)0x0)))))) && (a_00->num_elements != 0)) {\n    iVar1 = no_options(list);\n    if (iVar1 != 0) {\n      iVar1 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar7 = *(int *)PTR_loptend_00145864;\n    iVar1 = 0;\n    if (iVar7 == 0) {\n      pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      if (pcVar5 == (char *)0x0) {\n        pcVar5 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (pcVar3 == (char *)0x0) {\n        pcVar3 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,pcVar5,pcVar3);\n      goto LAB_000ae9f0;\n    }\n    if ((a != (ARRAY *)0x0) && (a->num_elements != 0)) {\n      iVar2 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar7 + 4),&num);\n      if (iVar2 == 0) {\n        iVar1 = 0x102;\n        sh_invalidnum((char *)**(undefined4 **)(iVar7 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar4 = array_reference(a,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      if (((pcVar5 != (char *)0x0) && (pcVar3 != (char *)0x0)) && (pcVar4 != (char *)0x0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,pcVar5,pcVar4,pcVar3);\n        goto LAB_000ae9f0;\n      }\n    }\n  }\n  iVar1 = 1;\nLAB_000ae9f0:\n  if (local_24 != *(char **)puVar8) {\n    pcVar5 = local_24;\n    puVar8 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar6 = *(int **)(puVar8 + 0x96538);\n    if (*piVar6 != 0) {\n      (**(code **)(puVar8 + 0x978ec))();\n    }\n    *piVar6 = 0;\n    pcVar5 = get_working_directory(pcVar5);\n    return (int)pcVar5;\n  }\n  return iVar1;\n}" { (declaration "ARRAY *a;" type_identifier (pointer_declarator "*a" * identifier) ;) (declaration "ARRAY *a_00;" type_identifier (pointer_declarator "*a_00" * identifier) ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "ARRAY *a_01;" type_identifier (pointer_declarator "*a_01" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 in_stack_ffffffc0;" type_identifier identifier ;) (declaration "undefined4 in_stack_ffffffc4;" type_identifier identifier ;) (declaration "intmax_t num;" type_identifier identifier ;) (declaration "char *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (expression_statement "puVar8 = PTR___stack_chk_guard_001464dc;" (assignment_expression "puVar8 = PTR___stack_chk_guard_001464dc" identifier = identifier) ;) (expression_statement "local_24 = *(char **)PTR___stack_chk_guard_001464dc;" (assignment_expression "local_24 = *(char **)PTR___stack_chk_guard_001464dc" identifier = (pointer_expression "*(char **)PTR___stack_chk_guard_001464dc" * (cast_expression "(char **)PTR___stack_chk_guard_001464dc" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((((list != (WORD_LIST *)0x0) && (list->word != (WORD_DESC *)0x0)) &&\n      (pcVar5 = list->word->word, *pcVar5 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar5,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {\n    iVar1 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }" if (parenthesized_expression "((((list != (WORD_LIST *)0x0) && (list->word != (WORD_DESC *)0x0)) &&\n      (pcVar5 = list->word->word, *pcVar5 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar5,PTR_DAT_001445ac + -0x7204), iVar1 == 0))" ( (binary_expression "(((list != (WORD_LIST *)0x0) && (list->word != (WORD_DESC *)0x0)) &&\n      (pcVar5 = list->word->word, *pcVar5 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar5,PTR_DAT_001445ac + -0x7204), iVar1 == 0)" (parenthesized_expression "(((list != (WORD_LIST *)0x0) && (list->word != (WORD_DESC *)0x0)) &&\n      (pcVar5 = list->word->word, *pcVar5 == '-'))" ( (binary_expression "((list != (WORD_LIST *)0x0) && (list->word != (WORD_DESC *)0x0)) &&\n      (pcVar5 = list->word->word, *pcVar5 == '-')" (parenthesized_expression "((list != (WORD_LIST *)0x0) && (list->word != (WORD_DESC *)0x0))" ( (binary_expression "(list != (WORD_LIST *)0x0) && (list->word != (WORD_DESC *)0x0)" (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)) )) && (parenthesized_expression "(list->word != (WORD_DESC *)0x0)" ( (binary_expression "list->word != (WORD_DESC *)0x0" (field_expression "list->word" identifier -> field_identifier) != (cast_expression "(WORD_DESC *)0x0" ( (type_descriptor "WORD_DESC *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(pcVar5 = list->word->word, *pcVar5 == '-')" ( (comma_expression "pcVar5 = list->word->word, *pcVar5 == '-'" (assignment_expression "pcVar5 = list->word->word" identifier = (field_expression "list->word->word" (field_expression "list->word" identifier -> field_identifier) -> field_identifier)) , (binary_expression "*pcVar5 == '-'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'-'" ' character '))) ))) )) && (parenthesized_expression "(iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar5,PTR_DAT_001445ac + -0x7204), iVar1 == 0)" ( (comma_expression "iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar5,PTR_DAT_001445ac + -0x7204), iVar1 == 0" (assignment_expression "iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar5,PTR_DAT_001445ac + -0x7204)" identifier = (call_expression "(*(code *)PTR_strcmp_00146548)(pcVar5,PTR_DAT_001445ac + -0x7204)" (parenthesized_expression "(*(code *)PTR_strcmp_00146548)" ( (pointer_expression "*(code *)PTR_strcmp_00146548" * (cast_expression "(code *)PTR_strcmp_00146548" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar5,PTR_DAT_001445ac + -0x7204)" ( identifier , (binary_expression "PTR_DAT_001445ac + -0x7204" identifier + number_literal) )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    iVar1 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }" { (expression_statement "iVar1 = 0x102;" (assignment_expression "iVar1 = 0x102" identifier = number_literal) ;) (expression_statement "builtin_help();" (call_expression "builtin_help()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000ae9f0;" goto statement_identifier ;) })) (expression_statement "a = (ARRAY *)(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);" (assignment_expression "a = (ARRAY *)(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc)" identifier = (cast_expression "(ARRAY *)(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc)" ( (type_descriptor "ARRAY *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc)" (parenthesized_expression "(*(code *)PTR_find_variable_00144788)" ( (pointer_expression "*(code *)PTR_find_variable_00144788" * (cast_expression "(code *)PTR_find_variable_00144788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_00144578 + 0x44fc)" ( (binary_expression "PTR_LAB_00144578 + 0x44fc" identifier + number_literal) ))))) ;) (if_statement "if (a != (ARRAY *)0x0) {\n    if (((uint)a->lastref & 4) == 0) {\n      a = (ARRAY *)0x0;\n    }\n    else {\n      a = *(ARRAY **)&a->field_0x4;\n    }\n  }" if (parenthesized_expression "(a != (ARRAY *)0x0)" ( (binary_expression "a != (ARRAY *)0x0" identifier != (cast_expression "(ARRAY *)0x0" ( (type_descriptor "ARRAY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (((uint)a->lastref & 4) == 0) {\n      a = (ARRAY *)0x0;\n    }\n    else {\n      a = *(ARRAY **)&a->field_0x4;\n    }\n  }" { (if_statement "if (((uint)a->lastref & 4) == 0) {\n      a = (ARRAY *)0x0;\n    }\n    else {\n      a = *(ARRAY **)&a->field_0x4;\n    }" if (parenthesized_expression "(((uint)a->lastref & 4) == 0)" ( (binary_expression "((uint)a->lastref & 4) == 0" (parenthesized_expression "((uint)a->lastref & 4)" ( (binary_expression "(uint)a->lastref & 4" (cast_expression "(uint)a->lastref" ( (type_descriptor "uint" type_identifier) ) (field_expression "a->lastref" identifier -> field_identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n      a = (ARRAY *)0x0;\n    }" { (expression_statement "a = (ARRAY *)0x0;" (assignment_expression "a = (ARRAY *)0x0" identifier = (cast_expression "(ARRAY *)0x0" ( (type_descriptor "ARRAY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      a = *(ARRAY **)&a->field_0x4;\n    }" else (compound_statement "{\n      a = *(ARRAY **)&a->field_0x4;\n    }" { (expression_statement "a = *(ARRAY **)&a->field_0x4;" (assignment_expression "a = *(ARRAY **)&a->field_0x4" identifier = (pointer_expression "*(ARRAY **)&a->field_0x4" * (cast_expression "(ARRAY **)&a->field_0x4" ( (type_descriptor "ARRAY **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&a->field_0x4" & (field_expression "a->field_0x4" identifier -> field_identifier))))) ;) }))) })) (expression_statement "a_00 = (ARRAY *)(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);" (assignment_expression "a_00 = (ARRAY *)(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508)" identifier = (cast_expression "(ARRAY *)(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508)" ( (type_descriptor "ARRAY *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508)" (parenthesized_expression "(*(code *)PTR_find_variable_00144788)" ( (pointer_expression "*(code *)PTR_find_variable_00144788" * (cast_expression "(code *)PTR_find_variable_00144788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_00144578 + 0x4508)" ( (binary_expression "PTR_LAB_00144578 + 0x4508" identifier + number_literal) ))))) ;) (if_statement "if (a_00 != (ARRAY *)0x0) {\n    if (((uint)a_00->lastref & 4) == 0) {\n      a_00 = (ARRAY *)0x0;\n    }\n    else {\n      a_00 = *(ARRAY **)&a_00->field_0x4;\n    }\n  }" if (parenthesized_expression "(a_00 != (ARRAY *)0x0)" ( (binary_expression "a_00 != (ARRAY *)0x0" identifier != (cast_expression "(ARRAY *)0x0" ( (type_descriptor "ARRAY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (((uint)a_00->lastref & 4) == 0) {\n      a_00 = (ARRAY *)0x0;\n    }\n    else {\n      a_00 = *(ARRAY **)&a_00->field_0x4;\n    }\n  }" { (if_statement "if (((uint)a_00->lastref & 4) == 0) {\n      a_00 = (ARRAY *)0x0;\n    }\n    else {\n      a_00 = *(ARRAY **)&a_00->field_0x4;\n    }" if (parenthesized_expression "(((uint)a_00->lastref & 4) == 0)" ( (binary_expression "((uint)a_00->lastref & 4) == 0" (parenthesized_expression "((uint)a_00->lastref & 4)" ( (binary_expression "(uint)a_00->lastref & 4" (cast_expression "(uint)a_00->lastref" ( (type_descriptor "uint" type_identifier) ) (field_expression "a_00->lastref" identifier -> field_identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n      a_00 = (ARRAY *)0x0;\n    }" { (expression_statement "a_00 = (ARRAY *)0x0;" (assignment_expression "a_00 = (ARRAY *)0x0" identifier = (cast_expression "(ARRAY *)0x0" ( (type_descriptor "ARRAY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      a_00 = *(ARRAY **)&a_00->field_0x4;\n    }" else (compound_statement "{\n      a_00 = *(ARRAY **)&a_00->field_0x4;\n    }" { (expression_statement "a_00 = *(ARRAY **)&a_00->field_0x4;" (assignment_expression "a_00 = *(ARRAY **)&a_00->field_0x4" identifier = (pointer_expression "*(ARRAY **)&a_00->field_0x4" * (cast_expression "(ARRAY **)&a_00->field_0x4" ( (type_descriptor "ARRAY **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&a_00->field_0x4" & (field_expression "a_00->field_0x4" identifier -> field_identifier))))) ;) }))) })) (expression_statement "iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);" (assignment_expression "iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514)" identifier = (call_expression "(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514)" (parenthesized_expression "(*(code *)PTR_find_variable_00144788)" ( (pointer_expression "*(code *)PTR_find_variable_00144788" * (cast_expression "(code *)PTR_find_variable_00144788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_00144578 + 0x4514)" ( (binary_expression "PTR_LAB_00144578 + 0x4514" identifier + number_literal) )))) ;) (if_statement "if ((((iVar1 != 0) && ((*(uint *)(iVar1 + 0x14) & 4) != 0)) &&\n      ((a_01 = *(ARRAY **)(iVar1 + 4), a_01 != (ARRAY *)0x0 &&\n       ((a_01->num_elements != 0 && (a_00 != (ARRAY *)0x0)))))) && (a_00->num_elements != 0)) {\n    iVar1 = no_options(list);\n    if (iVar1 != 0) {\n      iVar1 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar7 = *(int *)PTR_loptend_00145864;\n    iVar1 = 0;\n    if (iVar7 == 0) {\n      pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      if (pcVar5 == (char *)0x0) {\n        pcVar5 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (pcVar3 == (char *)0x0) {\n        pcVar3 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,pcVar5,pcVar3);\n      goto LAB_000ae9f0;\n    }\n    if ((a != (ARRAY *)0x0) && (a->num_elements != 0)) {\n      iVar2 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar7 + 4),&num);\n      if (iVar2 == 0) {\n        iVar1 = 0x102;\n        sh_invalidnum((char *)**(undefined4 **)(iVar7 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar4 = array_reference(a,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      if (((pcVar5 != (char *)0x0) && (pcVar3 != (char *)0x0)) && (pcVar4 != (char *)0x0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,pcVar5,pcVar4,pcVar3);\n        goto LAB_000ae9f0;\n      }\n    }\n  }" if (parenthesized_expression "((((iVar1 != 0) && ((*(uint *)(iVar1 + 0x14) & 4) != 0)) &&\n      ((a_01 = *(ARRAY **)(iVar1 + 4), a_01 != (ARRAY *)0x0 &&\n       ((a_01->num_elements != 0 && (a_00 != (ARRAY *)0x0)))))) && (a_00->num_elements != 0))" ( (binary_expression "(((iVar1 != 0) && ((*(uint *)(iVar1 + 0x14) & 4) != 0)) &&\n      ((a_01 = *(ARRAY **)(iVar1 + 4), a_01 != (ARRAY *)0x0 &&\n       ((a_01->num_elements != 0 && (a_00 != (ARRAY *)0x0)))))) && (a_00->num_elements != 0)" (parenthesized_expression "(((iVar1 != 0) && ((*(uint *)(iVar1 + 0x14) & 4) != 0)) &&\n      ((a_01 = *(ARRAY **)(iVar1 + 4), a_01 != (ARRAY *)0x0 &&\n       ((a_01->num_elements != 0 && (a_00 != (ARRAY *)0x0))))))" ( (binary_expression "((iVar1 != 0) && ((*(uint *)(iVar1 + 0x14) & 4) != 0)) &&\n      ((a_01 = *(ARRAY **)(iVar1 + 4), a_01 != (ARRAY *)0x0 &&\n       ((a_01->num_elements != 0 && (a_00 != (ARRAY *)0x0)))))" (parenthesized_expression "((iVar1 != 0) && ((*(uint *)(iVar1 + 0x14) & 4) != 0))" ( (binary_expression "(iVar1 != 0) && ((*(uint *)(iVar1 + 0x14) & 4) != 0)" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(uint *)(iVar1 + 0x14) & 4) != 0)" ( (binary_expression "(*(uint *)(iVar1 + 0x14) & 4) != 0" (parenthesized_expression "(*(uint *)(iVar1 + 0x14) & 4)" ( (binary_expression "*(uint *)(iVar1 + 0x14) & 4" (pointer_expression "*(uint *)(iVar1 + 0x14)" * (cast_expression "(uint *)(iVar1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "((a_01 = *(ARRAY **)(iVar1 + 4), a_01 != (ARRAY *)0x0 &&\n       ((a_01->num_elements != 0 && (a_00 != (ARRAY *)0x0)))))" ( (parenthesized_expression "(a_01 = *(ARRAY **)(iVar1 + 4), a_01 != (ARRAY *)0x0 &&\n       ((a_01->num_elements != 0 && (a_00 != (ARRAY *)0x0))))" ( (comma_expression "a_01 = *(ARRAY **)(iVar1 + 4), a_01 != (ARRAY *)0x0 &&\n       ((a_01->num_elements != 0 && (a_00 != (ARRAY *)0x0)))" (assignment_expression "a_01 = *(ARRAY **)(iVar1 + 4)" identifier = (pointer_expression "*(ARRAY **)(iVar1 + 4)" * (cast_expression "(ARRAY **)(iVar1 + 4)" ( (type_descriptor "ARRAY **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) , (binary_expression "a_01 != (ARRAY *)0x0 &&\n       ((a_01->num_elements != 0 && (a_00 != (ARRAY *)0x0)))" (binary_expression "a_01 != (ARRAY *)0x0" identifier != (cast_expression "(ARRAY *)0x0" ( (type_descriptor "ARRAY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "((a_01->num_elements != 0 && (a_00 != (ARRAY *)0x0)))" ( (parenthesized_expression "(a_01->num_elements != 0 && (a_00 != (ARRAY *)0x0))" ( (binary_expression "a_01->num_elements != 0 && (a_00 != (ARRAY *)0x0)" (binary_expression "a_01->num_elements != 0" (field_expression "a_01->num_elements" identifier -> field_identifier) != number_literal) && (parenthesized_expression "(a_00 != (ARRAY *)0x0)" ( (binary_expression "a_00 != (ARRAY *)0x0" identifier != (cast_expression "(ARRAY *)0x0" ( (type_descriptor "ARRAY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) )))) )) ))) )) && (parenthesized_expression "(a_00->num_elements != 0)" ( (binary_expression "a_00->num_elements != 0" (field_expression "a_00->num_elements" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n    iVar1 = no_options(list);\n    if (iVar1 != 0) {\n      iVar1 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar7 = *(int *)PTR_loptend_00145864;\n    iVar1 = 0;\n    if (iVar7 == 0) {\n      pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      if (pcVar5 == (char *)0x0) {\n        pcVar5 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (pcVar3 == (char *)0x0) {\n        pcVar3 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,pcVar5,pcVar3);\n      goto LAB_000ae9f0;\n    }\n    if ((a != (ARRAY *)0x0) && (a->num_elements != 0)) {\n      iVar2 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar7 + 4),&num);\n      if (iVar2 == 0) {\n        iVar1 = 0x102;\n        sh_invalidnum((char *)**(undefined4 **)(iVar7 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar4 = array_reference(a,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      if (((pcVar5 != (char *)0x0) && (pcVar3 != (char *)0x0)) && (pcVar4 != (char *)0x0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,pcVar5,pcVar4,pcVar3);\n        goto LAB_000ae9f0;\n      }\n    }\n  }" { (expression_statement "iVar1 = no_options(list);" (assignment_expression "iVar1 = no_options(list)" identifier = (call_expression "no_options(list)" identifier (argument_list "(list)" ( identifier )))) ;) (if_statement "if (iVar1 != 0) {\n      iVar1 = 0x102;\n      goto LAB_000ae9f0;\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar1 = 0x102;\n      goto LAB_000ae9f0;\n    }" { (expression_statement "iVar1 = 0x102;" (assignment_expression "iVar1 = 0x102" identifier = number_literal) ;) (goto_statement "goto LAB_000ae9f0;" goto statement_identifier ;) })) (expression_statement "iVar7 = *(int *)PTR_loptend_00145864;" (assignment_expression "iVar7 = *(int *)PTR_loptend_00145864" identifier = (pointer_expression "*(int *)PTR_loptend_00145864" * (cast_expression "(int *)PTR_loptend_00145864" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (if_statement "if (iVar7 == 0) {\n      pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      if (pcVar5 == (char *)0x0) {\n        pcVar5 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (pcVar3 == (char *)0x0) {\n        pcVar3 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,pcVar5,pcVar3);\n      goto LAB_000ae9f0;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      if (pcVar5 == (char *)0x0) {\n        pcVar5 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (pcVar3 == (char *)0x0) {\n        pcVar3 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,pcVar5,pcVar3);\n      goto LAB_000ae9f0;\n    }" { (expression_statement "pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));" (assignment_expression "pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4))" identifier = (call_expression "array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4))" identifier (argument_list "(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4))" ( identifier , (call_expression "CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4)" identifier (argument_list "(in_stack_ffffffc0,in_stack_ffffffc4)" ( identifier , identifier ))) )))) ;) (expression_statement "pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));" (assignment_expression "pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4))" identifier = (call_expression "array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4))" identifier (argument_list "(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4))" ( identifier , (call_expression "CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4)" identifier (argument_list "(in_stack_ffffffc0,in_stack_ffffffc4)" ( identifier , identifier ))) )))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n        pcVar5 = PTR_DAT_001445ac + -0x71f0;\n      }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar5 = PTR_DAT_001445ac + -0x71f0;\n      }" { (expression_statement "pcVar5 = PTR_DAT_001445ac + -0x71f0;" (assignment_expression "pcVar5 = PTR_DAT_001445ac + -0x71f0" identifier = (binary_expression "PTR_DAT_001445ac + -0x71f0" identifier + number_literal)) ;) })) (if_statement "if (pcVar3 == (char *)0x0) {\n        pcVar3 = PTR_DAT_001445ac + -0x71f0;\n      }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar3 = PTR_DAT_001445ac + -0x71f0;\n      }" { (expression_statement "pcVar3 = PTR_DAT_001445ac + -0x71f0;" (assignment_expression "pcVar3 = PTR_DAT_001445ac + -0x71f0" identifier = (binary_expression "PTR_DAT_001445ac + -0x71f0" identifier + number_literal)) ;) })) (expression_statement "(*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,pcVar5,pcVar3);" (call_expression "(*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,pcVar5,pcVar3)" (parenthesized_expression "(*(code *)PTR___printf_chk_001462ec)" ( (pointer_expression "*(code *)PTR___printf_chk_001462ec" * (cast_expression "(code *)PTR___printf_chk_001462ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,PTR_DAT_001445ac + -0x6200,pcVar5,pcVar3)" ( number_literal , (binary_expression "PTR_DAT_001445ac + -0x6200" identifier + number_literal) , identifier , identifier ))) ;) (goto_statement "goto LAB_000ae9f0;" goto statement_identifier ;) })) (if_statement "if ((a != (ARRAY *)0x0) && (a->num_elements != 0)) {\n      iVar2 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar7 + 4),&num);\n      if (iVar2 == 0) {\n        iVar1 = 0x102;\n        sh_invalidnum((char *)**(undefined4 **)(iVar7 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar4 = array_reference(a,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      if (((pcVar5 != (char *)0x0) && (pcVar3 != (char *)0x0)) && (pcVar4 != (char *)0x0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,pcVar5,pcVar4,pcVar3);\n        goto LAB_000ae9f0;\n      }\n    }" if (parenthesized_expression "((a != (ARRAY *)0x0) && (a->num_elements != 0))" ( (binary_expression "(a != (ARRAY *)0x0) && (a->num_elements != 0)" (parenthesized_expression "(a != (ARRAY *)0x0)" ( (binary_expression "a != (ARRAY *)0x0" identifier != (cast_expression "(ARRAY *)0x0" ( (type_descriptor "ARRAY *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(a->num_elements != 0)" ( (binary_expression "a->num_elements != 0" (field_expression "a->num_elements" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n      iVar2 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar7 + 4),&num);\n      if (iVar2 == 0) {\n        iVar1 = 0x102;\n        sh_invalidnum((char *)**(undefined4 **)(iVar7 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      pcVar4 = array_reference(a,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));\n      if (((pcVar5 != (char *)0x0) && (pcVar3 != (char *)0x0)) && (pcVar4 != (char *)0x0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,pcVar5,pcVar4,pcVar3);\n        goto LAB_000ae9f0;\n      }\n    }" { (expression_statement "iVar2 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar7 + 4),&num);" (assignment_expression "iVar2 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar7 + 4),&num)" identifier = (call_expression "(*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar7 + 4),&num)" (parenthesized_expression "(*(code *)PTR_legal_number_001449d0)" ( (pointer_expression "*(code *)PTR_legal_number_001449d0" * (cast_expression "(code *)PTR_legal_number_001449d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(**(undefined4 **)(iVar7 + 4),&num)" ( (pointer_expression "**(undefined4 **)(iVar7 + 4)" * (pointer_expression "*(undefined4 **)(iVar7 + 4)" * (cast_expression "(undefined4 **)(iVar7 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) , (pointer_expression "&num" & identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n        iVar1 = 0x102;\n        sh_invalidnum((char *)**(undefined4 **)(iVar7 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar1 = 0x102;\n        sh_invalidnum((char *)**(undefined4 **)(iVar7 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }" { (expression_statement "iVar1 = 0x102;" (assignment_expression "iVar1 = 0x102" identifier = number_literal) ;) (expression_statement "sh_invalidnum((char *)**(undefined4 **)(iVar7 + 4));" (call_expression "sh_invalidnum((char *)**(undefined4 **)(iVar7 + 4))" identifier (argument_list "((char *)**(undefined4 **)(iVar7 + 4))" ( (cast_expression "(char *)**(undefined4 **)(iVar7 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(iVar7 + 4)" * (pointer_expression "*(undefined4 **)(iVar7 + 4)" * (cast_expression "(undefined4 **)(iVar7 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) )))))) ))) ;) (expression_statement "builtin_usage();" (call_expression "builtin_usage()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000ae9f0;" goto statement_identifier ;) })) (expression_statement "pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));" (assignment_expression "pcVar5 = array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4))" identifier = (call_expression "array_reference(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4))" identifier (argument_list "(a_01,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4))" ( identifier , (call_expression "CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4)" identifier (argument_list "(in_stack_ffffffc0,in_stack_ffffffc4)" ( identifier , identifier ))) )))) ;) (expression_statement "pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));" (assignment_expression "pcVar3 = array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4))" identifier = (call_expression "array_reference(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4))" identifier (argument_list "(a_00,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4))" ( identifier , (call_expression "CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4)" identifier (argument_list "(in_stack_ffffffc0,in_stack_ffffffc4)" ( identifier , identifier ))) )))) ;) (expression_statement "pcVar4 = array_reference(a,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4));" (assignment_expression "pcVar4 = array_reference(a,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4))" identifier = (call_expression "array_reference(a,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4))" identifier (argument_list "(a,CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4))" ( identifier , (call_expression "CONCAT44(in_stack_ffffffc0,in_stack_ffffffc4)" identifier (argument_list "(in_stack_ffffffc0,in_stack_ffffffc4)" ( identifier , identifier ))) )))) ;) (if_statement "if (((pcVar5 != (char *)0x0) && (pcVar3 != (char *)0x0)) && (pcVar4 != (char *)0x0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,pcVar5,pcVar4,pcVar3);\n        goto LAB_000ae9f0;\n      }" if (parenthesized_expression "(((pcVar5 != (char *)0x0) && (pcVar3 != (char *)0x0)) && (pcVar4 != (char *)0x0))" ( (binary_expression "((pcVar5 != (char *)0x0) && (pcVar3 != (char *)0x0)) && (pcVar4 != (char *)0x0)" (parenthesized_expression "((pcVar5 != (char *)0x0) && (pcVar3 != (char *)0x0))" ( (binary_expression "(pcVar5 != (char *)0x0) && (pcVar3 != (char *)0x0)" (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,pcVar5,pcVar4,pcVar3);\n        goto LAB_000ae9f0;\n      }" { (expression_statement "(*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,pcVar5,pcVar4,pcVar3);" (call_expression "(*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,pcVar5,pcVar4,pcVar3)" (parenthesized_expression "(*(code *)PTR___printf_chk_001462ec)" ( (pointer_expression "*(code *)PTR___printf_chk_001462ec" * (cast_expression "(code *)PTR___printf_chk_001462ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,PTR_DAT_001445ac + -0x71e8,pcVar5,pcVar4,pcVar3)" ( number_literal , (binary_expression "PTR_DAT_001445ac + -0x71e8" identifier + number_literal) , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_000ae9f0;" goto statement_identifier ;) })) })) })) (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" identifier = number_literal) ;) (labeled_statement "LAB_000ae9f0:\n  if (local_24 != *(char **)puVar8) {\n    pcVar5 = local_24;\n    puVar8 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar6 = *(int **)(puVar8 + 0x96538);\n    if (*piVar6 != 0) {\n      (**(code **)(puVar8 + 0x978ec))();\n    }\n    *piVar6 = 0;\n    pcVar5 = get_working_directory(pcVar5);\n    return (int)pcVar5;\n  }" statement_identifier : (if_statement "if (local_24 != *(char **)puVar8) {\n    pcVar5 = local_24;\n    puVar8 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar6 = *(int **)(puVar8 + 0x96538);\n    if (*piVar6 != 0) {\n      (**(code **)(puVar8 + 0x978ec))();\n    }\n    *piVar6 = 0;\n    pcVar5 = get_working_directory(pcVar5);\n    return (int)pcVar5;\n  }" if (parenthesized_expression "(local_24 != *(char **)puVar8)" ( (binary_expression "local_24 != *(char **)puVar8" identifier != (pointer_expression "*(char **)puVar8" * (cast_expression "(char **)puVar8" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    pcVar5 = local_24;\n    puVar8 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar6 = *(int **)(puVar8 + 0x96538);\n    if (*piVar6 != 0) {\n      (**(code **)(puVar8 + 0x978ec))();\n    }\n    *piVar6 = 0;\n    pcVar5 = get_working_directory(pcVar5);\n    return (int)pcVar5;\n  }" { (expression_statement "pcVar5 = local_24;" (assignment_expression "pcVar5 = local_24" identifier = identifier) ;) (expression_statement "puVar8 = PTR___stack_chk_fail_00146488;" (assignment_expression "puVar8 = PTR___stack_chk_fail_00146488" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00146488)();" (call_expression "(*(code *)PTR___stack_chk_fail_00146488)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00146488)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00146488" * (cast_expression "(code *)PTR___stack_chk_fail_00146488" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar6 = *(int **)(puVar8 + 0x96538);" (assignment_expression "piVar6 = *(int **)(puVar8 + 0x96538)" identifier = (pointer_expression "*(int **)(puVar8 + 0x96538)" * (cast_expression "(int **)(puVar8 + 0x96538)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x96538)" ( (binary_expression "puVar8 + 0x96538" identifier + number_literal) ))))) ;) (if_statement "if (*piVar6 != 0) {\n      (**(code **)(puVar8 + 0x978ec))();\n    }" if (parenthesized_expression "(*piVar6 != 0)" ( (binary_expression "*piVar6 != 0" (pointer_expression "*piVar6" * identifier) != number_literal) )) (compound_statement "{\n      (**(code **)(puVar8 + 0x978ec))();\n    }" { (expression_statement "(**(code **)(puVar8 + 0x978ec))();" (call_expression "(**(code **)(puVar8 + 0x978ec))()" (parenthesized_expression "(**(code **)(puVar8 + 0x978ec))" ( (pointer_expression "**(code **)(puVar8 + 0x978ec)" * (pointer_expression "*(code **)(puVar8 + 0x978ec)" * (cast_expression "(code **)(puVar8 + 0x978ec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x978ec)" ( (binary_expression "puVar8 + 0x978ec" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (expression_statement "*piVar6 = 0;" (assignment_expression "*piVar6 = 0" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "pcVar5 = get_working_directory(pcVar5);" (assignment_expression "pcVar5 = get_working_directory(pcVar5)" identifier = (call_expression "get_working_directory(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (return_statement "return (int)pcVar5;" return (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) ;) }))) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit "undefined4 caller_builtin(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  char *pcVar8;\n  int *piVar9;\n  undefined4 uVar10;\n  undefined *puVar11;\n  undefined1 local_30 [12];\n  int local_24;\n  \n  puVar11 = PTR___stack_chk_guard_001464dc;\n  local_24 = *(int *)PTR___stack_chk_guard_001464dc;\n  if ((((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {\n    uVar10 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }\n  iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);\n  if (iVar1 != 0) {\n    if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }\n  }\n  iVar2 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);\n  if (iVar2 != 0) {\n    if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }\n  }\n  iVar3 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);\n  if ((((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0)) {\n    iVar4 = no_options(param_1);\n    if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar4 = *(int *)PTR_loptend_00145864;\n    uVar10 = 0;\n    if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }\n    if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }\n  }\n  uVar10 = 1;\nLAB_000ae9f0:\n  if (local_24 != *(int *)puVar11) {\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }\n  return uVar10;\n}\n\n" (function_definition "undefined4 caller_builtin(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  char *pcVar8;\n  int *piVar9;\n  undefined4 uVar10;\n  undefined *puVar11;\n  undefined1 local_30 [12];\n  int local_24;\n  \n  puVar11 = PTR___stack_chk_guard_001464dc;\n  local_24 = *(int *)PTR___stack_chk_guard_001464dc;\n  if ((((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {\n    uVar10 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }\n  iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);\n  if (iVar1 != 0) {\n    if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }\n  }\n  iVar2 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);\n  if (iVar2 != 0) {\n    if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }\n  }\n  iVar3 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);\n  if ((((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0)) {\n    iVar4 = no_options(param_1);\n    if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar4 = *(int *)PTR_loptend_00145864;\n    uVar10 = 0;\n    if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }\n    if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }\n  }\n  uVar10 = 1;\nLAB_000ae9f0:\n  if (local_24 != *(int *)puVar11) {\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }\n  return uVar10;\n}" type_identifier (function_declarator "caller_builtin(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  char *pcVar8;\n  int *piVar9;\n  undefined4 uVar10;\n  undefined *puVar11;\n  undefined1 local_30 [12];\n  int local_24;\n  \n  puVar11 = PTR___stack_chk_guard_001464dc;\n  local_24 = *(int *)PTR___stack_chk_guard_001464dc;\n  if ((((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {\n    uVar10 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }\n  iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);\n  if (iVar1 != 0) {\n    if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }\n  }\n  iVar2 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);\n  if (iVar2 != 0) {\n    if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }\n  }\n  iVar3 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);\n  if ((((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0)) {\n    iVar4 = no_options(param_1);\n    if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar4 = *(int *)PTR_loptend_00145864;\n    uVar10 = 0;\n    if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }\n    if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }\n  }\n  uVar10 = 1;\nLAB_000ae9f0:\n  if (local_24 != *(int *)puVar11) {\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }\n  return uVar10;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined1 local_30 [12];" type_identifier (array_declarator "local_30 [12]" identifier [ number_literal ]) ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "puVar11 = PTR___stack_chk_guard_001464dc;" (assignment_expression "puVar11 = PTR___stack_chk_guard_001464dc" identifier = identifier) ;) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_001464dc;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_001464dc" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_001464dc" * (cast_expression "(int *)PTR___stack_chk_guard_001464dc" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {\n    uVar10 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }" if (parenthesized_expression "((((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0))" ( (binary_expression "(((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)" (parenthesized_expression "(((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-'))" ( (binary_expression "((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')" (parenthesized_expression "((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0))" ( (binary_expression "(param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)" (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)" ( (binary_expression "*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0" (pointer_expression "*(undefined4 **)(param_1 + 4)" * (cast_expression "(undefined4 **)(param_1 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')" ( (comma_expression "pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-'" (assignment_expression "pcVar8 = (char *)**(undefined4 **)(param_1 + 4)" identifier = (cast_expression "(char *)**(undefined4 **)(param_1 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(param_1 + 4)" * (pointer_expression "*(undefined4 **)(param_1 + 4)" * (cast_expression "(undefined4 **)(param_1 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))))) , (binary_expression "*pcVar8 == '-'" (pointer_expression "*pcVar8" * identifier) == (char_literal "'-'" ' character '))) ))) )) && (parenthesized_expression "(iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)" ( (comma_expression "iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0" (assignment_expression "iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204)" identifier = (call_expression "(*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204)" (parenthesized_expression "(*(code *)PTR_strcmp_00146548)" ( (pointer_expression "*(code *)PTR_strcmp_00146548" * (cast_expression "(code *)PTR_strcmp_00146548" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar8,PTR_DAT_001445ac + -0x7204)" ( identifier , (binary_expression "PTR_DAT_001445ac + -0x7204" identifier + number_literal) )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    uVar10 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }" { (expression_statement "uVar10 = 0x102;" (assignment_expression "uVar10 = 0x102" identifier = number_literal) ;) (expression_statement "builtin_help();" (call_expression "builtin_help()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000ae9f0;" goto statement_identifier ;) })) (expression_statement "iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);" (assignment_expression "iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc)" identifier = (call_expression "(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc)" (parenthesized_expression "(*(code *)PTR_find_variable_00144788)" ( (pointer_expression "*(code *)PTR_find_variable_00144788" * (cast_expression "(code *)PTR_find_variable_00144788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_00144578 + 0x44fc)" ( (binary_expression "PTR_LAB_00144578 + 0x44fc" identifier + number_literal) )))) ;) (if_statement "if (iVar1 != 0) {\n    if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }\n  }" { (if_statement "if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }" if (parenthesized_expression "((*(uint *)(iVar1 + 0x14) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar1 + 0x14) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar1 + 0x14) & 4)" ( (binary_expression "*(uint *)(iVar1 + 0x14) & 4" (pointer_expression "*(uint *)(iVar1 + 0x14)" * (cast_expression "(uint *)(iVar1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar1 = 0;\n    }" { (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }" else (compound_statement "{\n      iVar1 = *(int *)(iVar1 + 4);\n    }" { (expression_statement "iVar1 = *(int *)(iVar1 + 4);" (assignment_expression "iVar1 = *(int *)(iVar1 + 4)" identifier = (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) ;) }))) })) (expression_statement "iVar2 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);" (assignment_expression "iVar2 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508)" identifier = (call_expression "(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508)" (parenthesized_expression "(*(code *)PTR_find_variable_00144788)" ( (pointer_expression "*(code *)PTR_find_variable_00144788" * (cast_expression "(code *)PTR_find_variable_00144788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_00144578 + 0x4508)" ( (binary_expression "PTR_LAB_00144578 + 0x4508" identifier + number_literal) )))) ;) (if_statement "if (iVar2 != 0) {\n    if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }\n  }" { (if_statement "if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }" if (parenthesized_expression "((*(uint *)(iVar2 + 0x14) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar2 + 0x14) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar2 + 0x14) & 4)" ( (binary_expression "*(uint *)(iVar2 + 0x14) & 4" (pointer_expression "*(uint *)(iVar2 + 0x14)" * (cast_expression "(uint *)(iVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar2 = 0;\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }" else (compound_statement "{\n      iVar2 = *(int *)(iVar2 + 4);\n    }" { (expression_statement "iVar2 = *(int *)(iVar2 + 4);" (assignment_expression "iVar2 = *(int *)(iVar2 + 4)" identifier = (pointer_expression "*(int *)(iVar2 + 4)" * (cast_expression "(int *)(iVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) ))))) ;) }))) })) (expression_statement "iVar3 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);" (assignment_expression "iVar3 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514)" identifier = (call_expression "(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514)" (parenthesized_expression "(*(code *)PTR_find_variable_00144788)" ( (pointer_expression "*(code *)PTR_find_variable_00144788" * (cast_expression "(code *)PTR_find_variable_00144788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_00144578 + 0x4514)" ( (binary_expression "PTR_LAB_00144578 + 0x4514" identifier + number_literal) )))) ;) (if_statement "if ((((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0)) {\n    iVar4 = no_options(param_1);\n    if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar4 = *(int *)PTR_loptend_00145864;\n    uVar10 = 0;\n    if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }\n    if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }\n  }" if (parenthesized_expression "((((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0))" ( (binary_expression "(((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0)" (parenthesized_expression "(((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      )" ( (binary_expression "((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))" (parenthesized_expression "((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0))" ( (binary_expression "(iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(uint *)(iVar3 + 0x14) & 4) != 0)" ( (binary_expression "(*(uint *)(iVar3 + 0x14) & 4) != 0" (parenthesized_expression "(*(uint *)(iVar3 + 0x14) & 4)" ( (binary_expression "*(uint *)(iVar3 + 0x14) & 4" (pointer_expression "*(uint *)(iVar3 + 0x14)" * (cast_expression "(uint *)(iVar3 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))" ( (parenthesized_expression "(iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0))))" ( (comma_expression "iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))" (assignment_expression "iVar3 = *(int *)(iVar3 + 4)" identifier = (pointer_expression "*(int *)(iVar3 + 4)" * (cast_expression "(int *)(iVar3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) ))))) , (binary_expression "iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))" (binary_expression "iVar3 != 0" identifier != number_literal) && (parenthesized_expression "((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))" ( (parenthesized_expression "(*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0))" ( (binary_expression "*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)" (binary_expression "*(int *)(iVar3 + 0x10) != 0" (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) ))) )) )))) )) ))) )) && (parenthesized_expression "(*(int *)(iVar2 + 0x10) != 0)" ( (binary_expression "*(int *)(iVar2 + 0x10) != 0" (pointer_expression "*(int *)(iVar2 + 0x10)" * (cast_expression "(int *)(iVar2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n    iVar4 = no_options(param_1);\n    if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar4 = *(int *)PTR_loptend_00145864;\n    uVar10 = 0;\n    if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }\n    if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }\n  }" { (expression_statement "iVar4 = no_options(param_1);" (assignment_expression "iVar4 = no_options(param_1)" identifier = (call_expression "no_options(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }" { (expression_statement "uVar10 = 0x102;" (assignment_expression "uVar10 = 0x102" identifier = number_literal) ;) (goto_statement "goto LAB_000ae9f0;" goto statement_identifier ;) })) (expression_statement "iVar4 = *(int *)PTR_loptend_00145864;" (assignment_expression "iVar4 = *(int *)PTR_loptend_00145864" identifier = (pointer_expression "*(int *)PTR_loptend_00145864" * (cast_expression "(int *)PTR_loptend_00145864" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (if_statement "if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }" { (expression_statement "puVar6 = (undefined *)array_reference(iVar3);" (assignment_expression "puVar6 = (undefined *)array_reference(iVar3)" identifier = (cast_expression "(undefined *)array_reference(iVar3)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "array_reference(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))))) ;) (expression_statement "puVar7 = (undefined *)array_reference(iVar2);" (assignment_expression "puVar7 = (undefined *)array_reference(iVar2)" identifier = (cast_expression "(undefined *)array_reference(iVar2)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "array_reference(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))))) ;) (if_statement "if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }" if (parenthesized_expression "(puVar6 == (undefined *)0x0)" ( (binary_expression "puVar6 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }" { (expression_statement "puVar6 = PTR_DAT_001445ac + -0x71f0;" (assignment_expression "puVar6 = PTR_DAT_001445ac + -0x71f0" identifier = (binary_expression "PTR_DAT_001445ac + -0x71f0" identifier + number_literal)) ;) })) (if_statement "if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }" if (parenthesized_expression "(puVar7 == (undefined *)0x0)" ( (binary_expression "puVar7 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }" { (expression_statement "puVar7 = PTR_DAT_001445ac + -0x71f0;" (assignment_expression "puVar7 = PTR_DAT_001445ac + -0x71f0" identifier = (binary_expression "PTR_DAT_001445ac + -0x71f0" identifier + number_literal)) ;) })) (expression_statement "(*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);" (call_expression "(*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7)" (parenthesized_expression "(*(code *)PTR___printf_chk_001462ec)" ( (pointer_expression "*(code *)PTR___printf_chk_001462ec" * (cast_expression "(code *)PTR___printf_chk_001462ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7)" ( number_literal , (binary_expression "PTR_DAT_001445ac + -0x6200" identifier + number_literal) , identifier , identifier ))) ;) (goto_statement "goto LAB_000ae9f0;" goto statement_identifier ;) })) (if_statement "if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }" if (parenthesized_expression "((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0))" ( (binary_expression "(iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(int *)(iVar1 + 0x10) != 0)" ( (binary_expression "*(int *)(iVar1 + 0x10) != 0" (pointer_expression "*(int *)(iVar1 + 0x10)" * (cast_expression "(int *)(iVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }" { (expression_statement "iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);" (assignment_expression "iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30)" identifier = (call_expression "(*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30)" (parenthesized_expression "(*(code *)PTR_legal_number_001449d0)" ( (pointer_expression "*(code *)PTR_legal_number_001449d0" * (cast_expression "(code *)PTR_legal_number_001449d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(**(undefined4 **)(iVar4 + 4),local_30)" ( (pointer_expression "**(undefined4 **)(iVar4 + 4)" * (pointer_expression "*(undefined4 **)(iVar4 + 4)" * (cast_expression "(undefined4 **)(iVar4 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))) , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }" { (expression_statement "uVar10 = 0x102;" (assignment_expression "uVar10 = 0x102" identifier = number_literal) ;) (expression_statement "sh_invalidnum(**(undefined4 **)(iVar4 + 4));" (call_expression "sh_invalidnum(**(undefined4 **)(iVar4 + 4))" identifier (argument_list "(**(undefined4 **)(iVar4 + 4))" ( (pointer_expression "**(undefined4 **)(iVar4 + 4)" * (pointer_expression "*(undefined4 **)(iVar4 + 4)" * (cast_expression "(undefined4 **)(iVar4 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))) ))) ;) (expression_statement "builtin_usage();" (call_expression "builtin_usage()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000ae9f0;" goto statement_identifier ;) })) (expression_statement "iVar3 = array_reference(iVar3);" (assignment_expression "iVar3 = array_reference(iVar3)" identifier = (call_expression "array_reference(iVar3)" identifier (argument_list "(iVar3)" ( identifier )))) ;) (expression_statement "iVar2 = array_reference(iVar2);" (assignment_expression "iVar2 = array_reference(iVar2)" identifier = (call_expression "array_reference(iVar2)" identifier (argument_list "(iVar2)" ( identifier )))) ;) (expression_statement "iVar1 = array_reference(iVar1);" (assignment_expression "iVar1 = array_reference(iVar1)" identifier = (call_expression "array_reference(iVar1)" identifier (argument_list "(iVar1)" ( identifier )))) ;) (if_statement "if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }" if (parenthesized_expression "(((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0))" ( (binary_expression "((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)" (parenthesized_expression "((iVar3 != 0) && (iVar2 != 0))" ( (binary_expression "(iVar3 != 0) && (iVar2 != 0)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) ))) )) && (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) ))) )) (compound_statement "{\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }" { (expression_statement "(*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);" (call_expression "(*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2)" (parenthesized_expression "(*(code *)PTR___printf_chk_001462ec)" ( (pointer_expression "*(code *)PTR___printf_chk_001462ec" * (cast_expression "(code *)PTR___printf_chk_001462ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2)" ( number_literal , (binary_expression "PTR_DAT_001445ac + -0x71e8" identifier + number_literal) , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_000ae9f0;" goto statement_identifier ;) })) })) })) (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" identifier = number_literal) ;) (labeled_statement "LAB_000ae9f0:\n  if (local_24 != *(int *)puVar11) {\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }" statement_identifier : (if_statement "if (local_24 != *(int *)puVar11) {\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }" if (parenthesized_expression "(local_24 != *(int *)puVar11)" ( (binary_expression "local_24 != *(int *)puVar11" identifier != (pointer_expression "*(int *)puVar11" * (cast_expression "(int *)puVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }" { (expression_statement "iVar1 = local_24;" (assignment_expression "iVar1 = local_24" identifier = identifier) ;) (expression_statement "puVar11 = PTR___stack_chk_fail_00146488;" (assignment_expression "puVar11 = PTR___stack_chk_fail_00146488" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00146488)();" (call_expression "(*(code *)PTR___stack_chk_fail_00146488)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00146488)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00146488" * (cast_expression "(code *)PTR___stack_chk_fail_00146488" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar9 = *(int **)(puVar11 + 0x96538);" (assignment_expression "piVar9 = *(int **)(puVar11 + 0x96538)" identifier = (pointer_expression "*(int **)(puVar11 + 0x96538)" * (cast_expression "(int **)(puVar11 + 0x96538)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x96538)" ( (binary_expression "puVar11 + 0x96538" identifier + number_literal) ))))) ;) (if_statement "if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }" if (parenthesized_expression "(*piVar9 != 0)" ( (binary_expression "*piVar9 != 0" (pointer_expression "*piVar9" * identifier) != number_literal) )) (compound_statement "{\n      (**(code **)(puVar11 + 0x978ec))();\n    }" { (expression_statement "(**(code **)(puVar11 + 0x978ec))();" (call_expression "(**(code **)(puVar11 + 0x978ec))()" (parenthesized_expression "(**(code **)(puVar11 + 0x978ec))" ( (pointer_expression "**(code **)(puVar11 + 0x978ec)" * (pointer_expression "*(code **)(puVar11 + 0x978ec)" * (cast_expression "(code **)(puVar11 + 0x978ec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x978ec)" ( (binary_expression "puVar11 + 0x978ec" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (expression_statement "*piVar9 = 0;" (assignment_expression "*piVar9 = 0" (pointer_expression "*piVar9" * identifier) = number_literal) ;) (expression_statement "uVar10 = get_working_directory(iVar1);" (assignment_expression "uVar10 = get_working_directory(iVar1)" identifier = (call_expression "get_working_directory(iVar1)" identifier (argument_list "(iVar1)" ( identifier )))) ;) (return_statement "return uVar10;" return identifier ;) }))) (return_statement "return uVar10;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) , (binary_expression (pointer_expression * IDENT) == (char_literal ' character '))) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) )))) )) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 = (binary_expression IDENT + LIT)) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) })) })) (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 *)) ) IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (return_statement return IDENT ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined4 caller_builtin(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  char *pcVar8;\n  int *piVar9;\n  undefined4 uVar10;\n  undefined *puVar11;\n  undefined1 local_30 [12];\n  int local_24;\n  \n  puVar11 = PTR___stack_chk_guard_001464dc;\n  local_24 = *(int *)PTR___stack_chk_guard_001464dc;\n  if ((((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {\n    uVar10 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }\n  iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);\n  if (iVar1 != 0) {\n    if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }\n  }\n  iVar2 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);\n  if (iVar2 != 0) {\n    if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }\n  }\n  iVar3 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);\n  if ((((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0)) {\n    iVar4 = no_options(param_1);\n    if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar4 = *(int *)PTR_loptend_00145864;\n    uVar10 = 0;\n    if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }\n    if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }\n  }\n  uVar10 = 1;\nLAB_000ae9f0:\n  if (local_24 != *(int *)puVar11) {\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }\n  return uVar10;\n}" (type_identifier "undefined4") (function_declarator "caller_builtin(int param_1)" (identifier "caller_builtin") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  char *pcVar8;\n  int *piVar9;\n  undefined4 uVar10;\n  undefined *puVar11;\n  undefined1 local_30 [12];\n  int local_24;\n  \n  puVar11 = PTR___stack_chk_guard_001464dc;\n  local_24 = *(int *)PTR___stack_chk_guard_001464dc;\n  if ((((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {\n    uVar10 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }\n  iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);\n  if (iVar1 != 0) {\n    if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }\n  }\n  iVar2 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);\n  if (iVar2 != 0) {\n    if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }\n  }\n  iVar3 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);\n  if ((((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0)) {\n    iVar4 = no_options(param_1);\n    if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar4 = *(int *)PTR_loptend_00145864;\n    uVar10 = 0;\n    if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }\n    if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }\n  }\n  uVar10 = 1;\nLAB_000ae9f0:\n  if (local_24 != *(int *)puVar11) {\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }\n  return uVar10;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined *puVar6;" (type_identifier "undefined") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined *puVar7;" (type_identifier "undefined") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "undefined *puVar11;" (type_identifier "undefined") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "undefined1 local_30 [12];" (type_identifier "undefined1") (array_declarator "local_30 [12]" (identifier "local_30") ([ "[") (number_literal "12") (] "]")) (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (expression_statement "puVar11 = PTR___stack_chk_guard_001464dc;" (assignment_expression "puVar11 = PTR___stack_chk_guard_001464dc" (identifier "puVar11") (= "=") (identifier "PTR___stack_chk_guard_001464dc")) (; ";")) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_001464dc;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_001464dc" (identifier "local_24") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_001464dc" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_001464dc" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_001464dc")))) (; ";")) (if_statement "if ((((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {\n    uVar10 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }" (if "if") (parenthesized_expression "((((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0))" (( "(") (binary_expression "(((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&\n     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)" (parenthesized_expression "(((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-'))" (( "(") (binary_expression "((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&\n      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')" (parenthesized_expression "((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0))" (( "(") (binary_expression "(param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)" (parenthesized_expression "(param_1 != 0)" (( "(") (binary_expression "param_1 != 0" (identifier "param_1") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)" (( "(") (binary_expression "*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0" (pointer_expression "*(undefined4 **)(param_1 + 4)" (* "*") (cast_expression "(undefined4 **)(param_1 + 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')" (( "(") (comma_expression "pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-'" (assignment_expression "pcVar8 = (char *)**(undefined4 **)(param_1 + 4)" (identifier "pcVar8") (= "=") (cast_expression "(char *)**(undefined4 **)(param_1 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(param_1 + 4)" (* "*") (pointer_expression "*(undefined4 **)(param_1 + 4)" (* "*") (cast_expression "(undefined4 **)(param_1 + 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))))) (, ",") (binary_expression "*pcVar8 == '-'" (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8")) (== "==") (char_literal "'-'" (' "'") (character "-") (' "'")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)" (( "(") (comma_expression "iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0" (assignment_expression "iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204)" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204)" (parenthesized_expression "(*(code *)PTR_strcmp_00146548)" (( "(") (pointer_expression "*(code *)PTR_strcmp_00146548" (* "*") (cast_expression "(code *)PTR_strcmp_00146548" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strcmp_00146548"))) () ")")) (argument_list "(pcVar8,PTR_DAT_001445ac + -0x7204)" (( "(") (identifier "pcVar8") (, ",") (binary_expression "PTR_DAT_001445ac + -0x7204" (identifier "PTR_DAT_001445ac") (+ "+") (number_literal "-0x7204")) () ")")))) (, ",") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    uVar10 = 0x102;\n    builtin_help();\n    goto LAB_000ae9f0;\n  }" ({ "{") (expression_statement "uVar10 = 0x102;" (assignment_expression "uVar10 = 0x102" (identifier "uVar10") (= "=") (number_literal "0x102")) (; ";")) (expression_statement "builtin_help();" (call_expression "builtin_help()" (identifier "builtin_help") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_000ae9f0;" (goto "goto") (statement_identifier "LAB_000ae9f0") (; ";")) (} "}"))) (expression_statement "iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);" (assignment_expression "iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc)" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc)" (parenthesized_expression "(*(code *)PTR_find_variable_00144788)" (( "(") (pointer_expression "*(code *)PTR_find_variable_00144788" (* "*") (cast_expression "(code *)PTR_find_variable_00144788" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_find_variable_00144788"))) () ")")) (argument_list "(PTR_LAB_00144578 + 0x44fc)" (( "(") (binary_expression "PTR_LAB_00144578 + 0x44fc" (identifier "PTR_LAB_00144578") (+ "+") (number_literal "0x44fc")) () ")")))) (; ";")) (if_statement "if (iVar1 != 0) {\n    if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }\n  }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }\n  }" ({ "{") (if_statement "if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {\n      iVar1 = 0;\n    }\n    else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }" (if "if") (parenthesized_expression "((*(uint *)(iVar1 + 0x14) & 4) == 0)" (( "(") (binary_expression "(*(uint *)(iVar1 + 0x14) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar1 + 0x14) & 4)" (( "(") (binary_expression "*(uint *)(iVar1 + 0x14) & 4" (pointer_expression "*(uint *)(iVar1 + 0x14)" (* "*") (cast_expression "(uint *)(iVar1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x14)" (( "(") (binary_expression "iVar1 + 0x14" (identifier "iVar1") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar1 = 0;\n    }" ({ "{") (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" (identifier "iVar1") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      iVar1 = *(int *)(iVar1 + 4);\n    }" (else "else") (compound_statement "{\n      iVar1 = *(int *)(iVar1 + 4);\n    }" ({ "{") (expression_statement "iVar1 = *(int *)(iVar1 + 4);" (assignment_expression "iVar1 = *(int *)(iVar1 + 4)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (expression_statement "iVar2 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);" (assignment_expression "iVar2 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508)" (parenthesized_expression "(*(code *)PTR_find_variable_00144788)" (( "(") (pointer_expression "*(code *)PTR_find_variable_00144788" (* "*") (cast_expression "(code *)PTR_find_variable_00144788" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_find_variable_00144788"))) () ")")) (argument_list "(PTR_LAB_00144578 + 0x4508)" (( "(") (binary_expression "PTR_LAB_00144578 + 0x4508" (identifier "PTR_LAB_00144578") (+ "+") (number_literal "0x4508")) () ")")))) (; ";")) (if_statement "if (iVar2 != 0) {\n    if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }\n  }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }\n  }" ({ "{") (if_statement "if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {\n      iVar2 = 0;\n    }\n    else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }" (if "if") (parenthesized_expression "((*(uint *)(iVar2 + 0x14) & 4) == 0)" (( "(") (binary_expression "(*(uint *)(iVar2 + 0x14) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar2 + 0x14) & 4)" (( "(") (binary_expression "*(uint *)(iVar2 + 0x14) & 4" (pointer_expression "*(uint *)(iVar2 + 0x14)" (* "*") (cast_expression "(uint *)(iVar2 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar2 = 0;\n    }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      iVar2 = *(int *)(iVar2 + 4);\n    }" (else "else") (compound_statement "{\n      iVar2 = *(int *)(iVar2 + 4);\n    }" ({ "{") (expression_statement "iVar2 = *(int *)(iVar2 + 4);" (assignment_expression "iVar2 = *(int *)(iVar2 + 4)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar2 + 4)" (* "*") (cast_expression "(int *)(iVar2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (expression_statement "iVar3 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);" (assignment_expression "iVar3 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514)" (parenthesized_expression "(*(code *)PTR_find_variable_00144788)" (( "(") (pointer_expression "*(code *)PTR_find_variable_00144788" (* "*") (cast_expression "(code *)PTR_find_variable_00144788" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_find_variable_00144788"))) () ")")) (argument_list "(PTR_LAB_00144578 + 0x4514)" (( "(") (binary_expression "PTR_LAB_00144578 + 0x4514" (identifier "PTR_LAB_00144578") (+ "+") (number_literal "0x4514")) () ")")))) (; ";")) (if_statement "if ((((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0)) {\n    iVar4 = no_options(param_1);\n    if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar4 = *(int *)PTR_loptend_00145864;\n    uVar10 = 0;\n    if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }\n    if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }\n  }" (if "if") (parenthesized_expression "((((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0))" (( "(") (binary_expression "(((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      ) && (*(int *)(iVar2 + 0x10) != 0)" (parenthesized_expression "(((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))\n      )" (( "(") (binary_expression "((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&\n      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))" (parenthesized_expression "((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0))" (( "(") (binary_expression "(iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)" (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(uint *)(iVar3 + 0x14) & 4) != 0)" (( "(") (binary_expression "(*(uint *)(iVar3 + 0x14) & 4) != 0" (parenthesized_expression "(*(uint *)(iVar3 + 0x14) & 4)" (( "(") (binary_expression "*(uint *)(iVar3 + 0x14) & 4" (pointer_expression "*(uint *)(iVar3 + 0x14)" (* "*") (cast_expression "(uint *)(iVar3 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x14)" (( "(") (binary_expression "iVar3 + 0x14" (identifier "iVar3") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))" (( "(") (parenthesized_expression "(iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0))))" (( "(") (comma_expression "iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))" (assignment_expression "iVar3 = *(int *)(iVar3 + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar3 + 4)" (* "*") (cast_expression "(int *)(iVar3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 4)" (( "(") (binary_expression "iVar3 + 4" (identifier "iVar3") (+ "+") (number_literal "4")) () ")"))))) (, ",") (binary_expression "iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))" (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))" (( "(") (parenthesized_expression "(*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0))" (( "(") (binary_expression "*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)" (binary_expression "*(int *)(iVar3 + 0x10) != 0" (pointer_expression "*(int *)(iVar3 + 0x10)" (* "*") (cast_expression "(int *)(iVar3 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x10)" (( "(") (binary_expression "iVar3 + 0x10" (identifier "iVar3") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")")))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar2 + 0x10) != 0)" (( "(") (binary_expression "*(int *)(iVar2 + 0x10) != 0" (pointer_expression "*(int *)(iVar2 + 0x10)" (* "*") (cast_expression "(int *)(iVar2 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    iVar4 = no_options(param_1);\n    if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }\n    iVar4 = *(int *)PTR_loptend_00145864;\n    uVar10 = 0;\n    if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }\n    if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }\n  }" ({ "{") (expression_statement "iVar4 = no_options(param_1);" (assignment_expression "iVar4 = no_options(param_1)" (identifier "iVar4") (= "=") (call_expression "no_options(param_1)" (identifier "no_options") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar10 = 0x102;\n      goto LAB_000ae9f0;\n    }" ({ "{") (expression_statement "uVar10 = 0x102;" (assignment_expression "uVar10 = 0x102" (identifier "uVar10") (= "=") (number_literal "0x102")) (; ";")) (goto_statement "goto LAB_000ae9f0;" (goto "goto") (statement_identifier "LAB_000ae9f0") (; ";")) (} "}"))) (expression_statement "iVar4 = *(int *)PTR_loptend_00145864;" (assignment_expression "iVar4 = *(int *)PTR_loptend_00145864" (identifier "iVar4") (= "=") (pointer_expression "*(int *)PTR_loptend_00145864" (* "*") (cast_expression "(int *)PTR_loptend_00145864" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_loptend_00145864")))) (; ";")) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar4 == 0) {\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      puVar6 = (undefined *)array_reference(iVar3);\n      puVar7 = (undefined *)array_reference(iVar2);\n      if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }\n      if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }\n      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);\n      goto LAB_000ae9f0;\n    }" ({ "{") (expression_statement "puVar6 = (undefined *)array_reference(iVar3);" (assignment_expression "puVar6 = (undefined *)array_reference(iVar3)" (identifier "puVar6") (= "=") (cast_expression "(undefined *)array_reference(iVar3)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "array_reference(iVar3)" (identifier "array_reference") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))))) (; ";")) (expression_statement "puVar7 = (undefined *)array_reference(iVar2);" (assignment_expression "puVar7 = (undefined *)array_reference(iVar2)" (identifier "puVar7") (= "=") (cast_expression "(undefined *)array_reference(iVar2)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "array_reference(iVar2)" (identifier "array_reference") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))))) (; ";")) (if_statement "if (puVar6 == (undefined *)0x0) {\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }" (if "if") (parenthesized_expression "(puVar6 == (undefined *)0x0)" (( "(") (binary_expression "puVar6 == (undefined *)0x0" (identifier "puVar6") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        puVar6 = PTR_DAT_001445ac + -0x71f0;\n      }" ({ "{") (expression_statement "puVar6 = PTR_DAT_001445ac + -0x71f0;" (assignment_expression "puVar6 = PTR_DAT_001445ac + -0x71f0" (identifier "puVar6") (= "=") (binary_expression "PTR_DAT_001445ac + -0x71f0" (identifier "PTR_DAT_001445ac") (+ "+") (number_literal "-0x71f0"))) (; ";")) (} "}"))) (if_statement "if (puVar7 == (undefined *)0x0) {\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }" (if "if") (parenthesized_expression "(puVar7 == (undefined *)0x0)" (( "(") (binary_expression "puVar7 == (undefined *)0x0" (identifier "puVar7") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        puVar7 = PTR_DAT_001445ac + -0x71f0;\n      }" ({ "{") (expression_statement "puVar7 = PTR_DAT_001445ac + -0x71f0;" (assignment_expression "puVar7 = PTR_DAT_001445ac + -0x71f0" (identifier "puVar7") (= "=") (binary_expression "PTR_DAT_001445ac + -0x71f0" (identifier "PTR_DAT_001445ac") (+ "+") (number_literal "-0x71f0"))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);" (call_expression "(*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7)" (parenthesized_expression "(*(code *)PTR___printf_chk_001462ec)" (( "(") (pointer_expression "*(code *)PTR___printf_chk_001462ec" (* "*") (cast_expression "(code *)PTR___printf_chk_001462ec" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___printf_chk_001462ec"))) () ")")) (argument_list "(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7)" (( "(") (number_literal "1") (, ",") (binary_expression "PTR_DAT_001445ac + -0x6200" (identifier "PTR_DAT_001445ac") (+ "+") (number_literal "-0x6200")) (, ",") (identifier "puVar6") (, ",") (identifier "puVar7") () ")"))) (; ";")) (goto_statement "goto LAB_000ae9f0;" (goto "goto") (statement_identifier "LAB_000ae9f0") (; ";")) (} "}"))) (if_statement "if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }" (if "if") (parenthesized_expression "((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0))" (( "(") (binary_expression "(iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)" (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar1 + 0x10) != 0)" (( "(") (binary_expression "*(int *)(iVar1 + 0x10) != 0" (pointer_expression "*(int *)(iVar1 + 0x10)" (* "*") (cast_expression "(int *)(iVar1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x10)" (( "(") (binary_expression "iVar1 + 0x10" (identifier "iVar1") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);\n      if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }\n      iVar3 = array_reference(iVar3);\n      iVar2 = array_reference(iVar2);\n      iVar1 = array_reference(iVar1);\n      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }\n    }" ({ "{") (expression_statement "iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);" (assignment_expression "iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30)" (identifier "iVar5") (= "=") (call_expression "(*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30)" (parenthesized_expression "(*(code *)PTR_legal_number_001449d0)" (( "(") (pointer_expression "*(code *)PTR_legal_number_001449d0" (* "*") (cast_expression "(code *)PTR_legal_number_001449d0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_legal_number_001449d0"))) () ")")) (argument_list "(**(undefined4 **)(iVar4 + 4),local_30)" (( "(") (pointer_expression "**(undefined4 **)(iVar4 + 4)" (* "*") (pointer_expression "*(undefined4 **)(iVar4 + 4)" (* "*") (cast_expression "(undefined4 **)(iVar4 + 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")"))))) (, ",") (identifier "local_30") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar10 = 0x102;\n        sh_invalidnum(**(undefined4 **)(iVar4 + 4));\n        builtin_usage();\n        goto LAB_000ae9f0;\n      }" ({ "{") (expression_statement "uVar10 = 0x102;" (assignment_expression "uVar10 = 0x102" (identifier "uVar10") (= "=") (number_literal "0x102")) (; ";")) (expression_statement "sh_invalidnum(**(undefined4 **)(iVar4 + 4));" (call_expression "sh_invalidnum(**(undefined4 **)(iVar4 + 4))" (identifier "sh_invalidnum") (argument_list "(**(undefined4 **)(iVar4 + 4))" (( "(") (pointer_expression "**(undefined4 **)(iVar4 + 4)" (* "*") (pointer_expression "*(undefined4 **)(iVar4 + 4)" (* "*") (cast_expression "(undefined4 **)(iVar4 + 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")"))))) () ")"))) (; ";")) (expression_statement "builtin_usage();" (call_expression "builtin_usage()" (identifier "builtin_usage") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_000ae9f0;" (goto "goto") (statement_identifier "LAB_000ae9f0") (; ";")) (} "}"))) (expression_statement "iVar3 = array_reference(iVar3);" (assignment_expression "iVar3 = array_reference(iVar3)" (identifier "iVar3") (= "=") (call_expression "array_reference(iVar3)" (identifier "array_reference") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")")))) (; ";")) (expression_statement "iVar2 = array_reference(iVar2);" (assignment_expression "iVar2 = array_reference(iVar2)" (identifier "iVar2") (= "=") (call_expression "array_reference(iVar2)" (identifier "array_reference") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")")))) (; ";")) (expression_statement "iVar1 = array_reference(iVar1);" (assignment_expression "iVar1 = array_reference(iVar1)" (identifier "iVar1") (= "=") (call_expression "array_reference(iVar1)" (identifier "array_reference") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")")))) (; ";")) (if_statement "if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }" (if "if") (parenthesized_expression "(((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0))" (( "(") (binary_expression "((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)" (parenthesized_expression "((iVar3 != 0) && (iVar2 != 0))" (( "(") (binary_expression "(iVar3 != 0) && (iVar2 != 0)" (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);\n        goto LAB_000ae9f0;\n      }" ({ "{") (expression_statement "(*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);" (call_expression "(*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2)" (parenthesized_expression "(*(code *)PTR___printf_chk_001462ec)" (( "(") (pointer_expression "*(code *)PTR___printf_chk_001462ec" (* "*") (cast_expression "(code *)PTR___printf_chk_001462ec" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___printf_chk_001462ec"))) () ")")) (argument_list "(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2)" (( "(") (number_literal "1") (, ",") (binary_expression "PTR_DAT_001445ac + -0x71e8" (identifier "PTR_DAT_001445ac") (+ "+") (number_literal "-0x71e8")) (, ",") (identifier "iVar3") (, ",") (identifier "iVar1") (, ",") (identifier "iVar2") () ")"))) (; ";")) (goto_statement "goto LAB_000ae9f0;" (goto "goto") (statement_identifier "LAB_000ae9f0") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" (identifier "uVar10") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_000ae9f0:\n  if (local_24 != *(int *)puVar11) {\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }" (statement_identifier "LAB_000ae9f0") (: ":") (if_statement "if (local_24 != *(int *)puVar11) {\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }" (if "if") (parenthesized_expression "(local_24 != *(int *)puVar11)" (( "(") (binary_expression "local_24 != *(int *)puVar11" (identifier "local_24") (!= "!=") (pointer_expression "*(int *)puVar11" (* "*") (cast_expression "(int *)puVar11" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar11")))) () ")")) (compound_statement "{\n    iVar1 = local_24;\n    puVar11 = PTR___stack_chk_fail_00146488;\n    (*(code *)PTR___stack_chk_fail_00146488)();\n    piVar9 = *(int **)(puVar11 + 0x96538);\n    if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }\n    *piVar9 = 0;\n    uVar10 = get_working_directory(iVar1);\n    return uVar10;\n  }" ({ "{") (expression_statement "iVar1 = local_24;" (assignment_expression "iVar1 = local_24" (identifier "iVar1") (= "=") (identifier "local_24")) (; ";")) (expression_statement "puVar11 = PTR___stack_chk_fail_00146488;" (assignment_expression "puVar11 = PTR___stack_chk_fail_00146488" (identifier "puVar11") (= "=") (identifier "PTR___stack_chk_fail_00146488")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_00146488)();" (call_expression "(*(code *)PTR___stack_chk_fail_00146488)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00146488)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_00146488" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_00146488" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00146488"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar9 = *(int **)(puVar11 + 0x96538);" (assignment_expression "piVar9 = *(int **)(puVar11 + 0x96538)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(puVar11 + 0x96538)" (* "*") (cast_expression "(int **)(puVar11 + 0x96538)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 0x96538)" (( "(") (binary_expression "puVar11 + 0x96538" (identifier "puVar11") (+ "+") (number_literal "0x96538")) () ")"))))) (; ";")) (if_statement "if (*piVar9 != 0) {\n      (**(code **)(puVar11 + 0x978ec))();\n    }" (if "if") (parenthesized_expression "(*piVar9 != 0)" (( "(") (binary_expression "*piVar9 != 0" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)(puVar11 + 0x978ec))();\n    }" ({ "{") (expression_statement "(**(code **)(puVar11 + 0x978ec))();" (call_expression "(**(code **)(puVar11 + 0x978ec))()" (parenthesized_expression "(**(code **)(puVar11 + 0x978ec))" (( "(") (pointer_expression "**(code **)(puVar11 + 0x978ec)" (* "*") (pointer_expression "*(code **)(puVar11 + 0x978ec)" (* "*") (cast_expression "(code **)(puVar11 + 0x978ec)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 0x978ec)" (( "(") (binary_expression "puVar11 + 0x978ec" (identifier "puVar11") (+ "+") (number_literal "0x978ec")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*piVar9 = 0;" (assignment_expression "*piVar9 = 0" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar10 = get_working_directory(iVar1);" (assignment_expression "uVar10 = get_working_directory(iVar1)" (identifier "uVar10") (= "=") (call_expression "get_working_directory(iVar1)" (identifier "get_working_directory") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")")))) (; ";")) (return_statement "return uVar10;" (return "return") (identifier "uVar10") (; ";")) (} "}")))) (return_statement "return uVar10;" (return "return") (identifier "uVar10") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (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: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (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)))))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (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)))))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) right: (parenthesized_expression (parenthesized_expression (comma_expression left: (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)))))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier)))) (goto_statement label: (statement_identifier)))))))) (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: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (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: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (return_statement (identifier))))) (return_statement (identifier)))))

undefined4 MASKED(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined *puVar6;
  undefined *puVar7;
  char *pcVar8;
  int *piVar9;
  undefined4 uVar10;
  undefined *puVar11;
  undefined1 local_30 [12];
  int local_24;
  
  puVar11 = PTR___stack_chk_guard_001464dc;
  local_24 = *(int *)PTR___stack_chk_guard_001464dc;
  if ((((param_1 != 0) && (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0)) &&
      (pcVar8 = (char *)**(undefined4 **)(param_1 + 4), *pcVar8 == '-')) &&
     (iVar1 = (*(code *)PTR_strcmp_00146548)(pcVar8,PTR_DAT_001445ac + -0x7204), iVar1 == 0)) {
    uVar10 = 0x102;
    builtin_help();
    goto LAB_000ae9f0;
  }
  iVar1 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x44fc);
  if (iVar1 != 0) {
    if ((*(uint *)(iVar1 + 0x14) & 4) == 0) {
      iVar1 = 0;
    }
    else {
      iVar1 = *(int *)(iVar1 + 4);
    }
  }
  iVar2 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4508);
  if (iVar2 != 0) {
    if ((*(uint *)(iVar2 + 0x14) & 4) == 0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *(int *)(iVar2 + 4);
    }
  }
  iVar3 = (*(code *)PTR_find_variable_00144788)(PTR_LAB_00144578 + 0x4514);
  if ((((iVar3 != 0) && ((*(uint *)(iVar3 + 0x14) & 4) != 0)) &&
      ((iVar3 = *(int *)(iVar3 + 4), iVar3 != 0 && ((*(int *)(iVar3 + 0x10) != 0 && (iVar2 != 0)))))
      ) && (*(int *)(iVar2 + 0x10) != 0)) {
    iVar4 = no_options(param_1);
    if (iVar4 != 0) {
      uVar10 = 0x102;
      goto LAB_000ae9f0;
    }
    iVar4 = *(int *)PTR_loptend_00145864;
    uVar10 = 0;
    if (iVar4 == 0) {
      puVar6 = (undefined *)array_reference(iVar3);
      puVar7 = (undefined *)array_reference(iVar2);
      if (puVar6 == (undefined *)0x0) {
        puVar6 = PTR_DAT_001445ac + -0x71f0;
      }
      if (puVar7 == (undefined *)0x0) {
        puVar7 = PTR_DAT_001445ac + -0x71f0;
      }
      (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x6200,puVar6,puVar7);
      goto LAB_000ae9f0;
    }
    if ((iVar1 != 0) && (*(int *)(iVar1 + 0x10) != 0)) {
      iVar5 = (*(code *)PTR_legal_number_001449d0)(**(undefined4 **)(iVar4 + 4),local_30);
      if (iVar5 == 0) {
        uVar10 = 0x102;
        sh_invalidnum(**(undefined4 **)(iVar4 + 4));
        builtin_usage();
        goto LAB_000ae9f0;
      }
      iVar3 = array_reference(iVar3);
      iVar2 = array_reference(iVar2);
      iVar1 = array_reference(iVar1);
      if (((iVar3 != 0) && (iVar2 != 0)) && (iVar1 != 0)) {
        (*(code *)PTR___printf_chk_001462ec)(1,PTR_DAT_001445ac + -0x71e8,iVar3,iVar1,iVar2);
        goto LAB_000ae9f0;
      }
    }
  }
  uVar10 = 1;
LAB_000ae9f0:
  if (local_24 != *(int *)puVar11) {
    iVar1 = local_24;
    puVar11 = PTR___stack_chk_fail_00146488;
    (*(code *)PTR___stack_chk_fail_00146488)();
    piVar9 = *(int **)(puVar11 + 0x96538);
    if (*piVar9 != 0) {
      (**(code **)(puVar11 + 0x978ec))();
    }
    *piVar9 = 0;
    uVar10 = get_working_directory(iVar1);
    return uVar10;
  }
  return uVar10;
}

