
void adjust_shell_level(int change)

{
  char cVar1;
  undefined *puVar2;
  undefined *puVar3;
  undefined *puVar4;
  int iVar5;
  char *pcVar6;
  SHELL_VAR *pSVar7;
  char extraout_v1;
  char extraout_v1_00;
  int iVar8;
  undefined4 *puVar9;
  int iVar10;
  intmax_t old_level;
  char new_level [5];
  
  puVar4 = PTR___stack_chk_guard_001464dc;
  puVar2 = PTR_LAB_00144578;
  iVar5 = *(int *)PTR___stack_chk_guard_001464dc;
  pcVar6 = get_string_value(PTR_LAB_00144578 + 0x6f20);
  if ((pcVar6 == (char *)0x0) || (*pcVar6 == '\0')) {
LAB_0005a624:
    puVar9 = (undefined4 *)PTR_shell_level_0014478c;
    old_level._4_4_ = 0;
    old_level._0_4_ = 0;
    *(int *)PTR_shell_level_0014478c = change;
    if (change < 0) {
LAB_0005a76c:
      *puVar9 = 0;
      new_level[1] = '\0';
      new_level[0] = '0';
      goto LAB_0005a6ec;
    }
  }
  else {
    iVar8 = legal_number(pcVar6,&old_level);
    puVar9 = (undefined4 *)PTR_shell_level_0014478c;
    if (iVar8 == 0) goto LAB_0005a624;
    change = change + old_level._4_4_;
    *(int *)PTR_shell_level_0014478c = change;
    if (change < 0) goto LAB_0005a76c;
  }
  if (change < 1000) {
    if (change < 10) goto LAB_0005a814;
    if (change < 100) {
      new_level[2] = '\0';
      cVar1 = (char)(change / 10);
      new_level[0] = cVar1 + '0';
      new_level[1] = (char)change + cVar1 * -10 + '0';
    }
    else {
      new_level[0] = (char)(change / 100) + '0';
      iVar8 = change % 100;
      iVar10 = iVar8 >> 0x1f;
      old_level._0_4_ = iVar10;
      old_level._4_4_ = iVar8;
      (*(code *)PTR___divdi3_00145044)(iVar10,iVar8,0,10);
      new_level[1] = extraout_v1 + '0';
      (*(code *)PTR___moddi3_00145048)(iVar10,iVar8,0,10);
      new_level[2] = extraout_v1_00 + '0';
      new_level[3] = '\0';
    }
  }
  else {
    pcVar6 = (char *)(*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);
    internal_warning(pcVar6,*puVar9);
    new_level[0] = '1';
    *puVar9 = 1;
    new_level[1] = '\0';
  }
LAB_0005a6ec:
  while( true ) {
    pSVar7 = bind_variable(puVar2 + 0x6f20,new_level,0);
    puVar3 = PTR_array_needs_making_00144fb8;
    change = *(int *)puVar4;
    pSVar7->attributes = pSVar7->attributes | 1;
    *(undefined4 *)puVar3 = 1;
    if (iVar5 == change) break;
    (*(code *)PTR___stack_chk_fail_00146488)();
LAB_0005a814:
    new_level[0] = (char)change + '0';
    new_level[1] = '\0';
  }
  return;
}



void adjust_shell_level(int param_1)

{
  char cVar1;
  undefined *puVar2;
  undefined *puVar3;
  undefined *puVar4;
  char *pcVar5;
  undefined4 uVar6;
  char extraout_v1;
  char extraout_v1_00;
  undefined4 *puVar7;
  int iVar8;
  int local_30;
  int local_2c;
  char local_24;
  char local_23;
  char local_22;
  undefined1 local_21;
  int local_1c;
  
  puVar4 = PTR___stack_chk_guard_001464dc;
  puVar2 = PTR_LAB_00144578;
  local_1c = *(int *)PTR___stack_chk_guard_001464dc;
  pcVar5 = (char *)get_string_value(PTR_LAB_00144578 + 0x6f20);
  if ((pcVar5 == (char *)0x0) || (*pcVar5 == '\0')) {
LAB_0005a624:
    puVar7 = (undefined4 *)PTR_shell_level_0014478c;
    local_2c = 0;
    local_30 = 0;
    *(int *)PTR_shell_level_0014478c = param_1;
    if (param_1 < 0) {
LAB_0005a76c:
      *puVar7 = 0;
      local_23 = '\0';
      local_24 = '0';
      goto LAB_0005a6ec;
    }
  }
  else {
    iVar8 = legal_number(pcVar5,&local_30);
    puVar7 = (undefined4 *)PTR_shell_level_0014478c;
    if (iVar8 == 0) goto LAB_0005a624;
    param_1 = param_1 + local_2c;
    *(int *)PTR_shell_level_0014478c = param_1;
    if (param_1 < 0) goto LAB_0005a76c;
  }
  if (param_1 < 1000) {
    if (param_1 < 10) goto LAB_0005a814;
    if (param_1 < 100) {
      local_22 = '\0';
      cVar1 = (char)(param_1 / 10);
      local_24 = cVar1 + '0';
      local_23 = (char)param_1 + cVar1 * -10 + '0';
    }
    else {
      local_24 = (char)(param_1 / 100) + '0';
      param_1 = param_1 % 100;
      iVar8 = param_1 >> 0x1f;
      local_30 = iVar8;
      local_2c = param_1;
      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);
      local_23 = extraout_v1 + '0';
      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);
      local_22 = extraout_v1_00 + '0';
      local_21 = 0;
    }
  }
  else {
    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);
    internal_warning(uVar6,*puVar7);
    local_24 = '1';
    *puVar7 = 1;
    local_23 = '\0';
  }
LAB_0005a6ec:
  while( true ) {
    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);
    puVar3 = PTR_array_needs_making_00144fb8;
    param_1 = *(int *)puVar4;
    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;
    *(undefined4 *)puVar3 = 1;
    if (local_1c == param_1) break;
    (*(code *)PTR___stack_chk_fail_00146488)();
LAB_0005a814:
    local_24 = (char)param_1 + '0';
    local_23 = '\0';
  }
  return;
}


lui gp,0xf
addiu gp,gp,0x1f7c
addu gp,gp,t9
addiu sp,sp,-0x48
lw t9,-0x7db0(gp)
sw s1,0x38(sp)
sw s2,0x3c(sp)
lw s1,-0x6064(gp)
lw s2,-0x7fc8(gp)
sw s3,0x40(sp)
or s3,a0,zero
sw gp,0x10(sp)
sw ra,0x44(sp)
addiu a0,s2,0x6f20
sw s0,0x34(sp)
lw v0,0x0(s1)
sw v0,0x2c(sp)
bal 0x000569f0
_nop
beq v0,zero,0x0005a624
_lw gp,0x10(sp)
lb v1,0x0(v0)
bne v1,zero,0x0005a744
_lw t9,-0x7b70(gp)
or a0,zero,zero
lw s0,-0x7db4(gp)
or v1,zero,zero
or v0,zero,zero
addu a0,s3,a0
sw v1,0x1c(sp)
sw v0,0x18(sp)
bltz a0,0x0005a76c
_sw a0,0x0(s0)
slti v0,a0,0x3e8
beq v0,zero,0x0005a7c0
_slti v0,a0,0xa
bne v0,zero,0x0005a814
_slti v0,a0,0x64
bne v0,zero,0x0005a780
_lui v0,0x6666
lui v0,0x51eb
lw t9,-0x74fc(gp)
sra v1,a0,0x1f
ori v0,v0,0x851f
mult a0,v0
li s0,0x64
li a3,0xa
or a2,zero,zero
mfhi v0
sra v0,v0,0x5
subu v0,v0,v1
mul v1,v0,s0
addiu v0,v0,0x30
sb v0,0x24(sp)
subu s0,a0,v1
sra s3,s0,0x1f
sw s0,0x1c(sp)
or a1,s0,zero
or a0,s3,zero
jalr t9
_sw s3,0x18(sp)
li a3,0xa
lw gp,0x10(sp)
addiu v1,v1,0x30
or a2,zero,zero
or a0,s3,zero
sb v1,0x25(sp)
lw t9,-0x74f8(gp)
jalr t9
_or a1,s0,zero
addiu v1,v1,0x30
lw gp,0x10(sp)
sb zero,0x27(sp)
sb v1,0x26(sp)
lw t9,-0x7dc0(gp)
or a2,zero,zero
addiu a1,sp,0x24
bal 0x0005a1fc
_addiu a0,s2,0x6f20
li a3,0x1
lw gp,0x10(sp)
lw v1,0x14(v0)
lw a1,0x2c(sp)
lw a0,0x0(s1)
lw a2,-0x7588(gp)
ori v1,v1,0x1
sw v1,0x14(v0)
bne a1,a0,0x0005a808
_sw a3,0x0(a2)
lw ra,0x44(sp)
lw s3,0x40(sp)
lw s2,0x3c(sp)
lw s1,0x38(sp)
lw s0,0x34(sp)
jr ra
_addiu sp,sp,0x48
addiu a1,sp,0x18
bal 0x00040928
_or a0,v0,zero
beq v0,zero,0x0005a624
_lw gp,0x10(sp)
lw a0,0x1c(sp)
lw s0,-0x7db4(gp)
addu a0,s3,a0
bgez a0,0x0005a648
_sw a0,0x0(s0)
li v0,0x30
sw zero,0x0(s0)
sb zero,0x25(sp)
b 0x0005a6ec
_sb v0,0x24(sp)
sb zero,0x26(sp)
sra v1,a0,0x1f
addiu v0,v0,0x6667
mult a0,v0
mfhi v0
sra v0,v0,0x2
subu v0,v0,v1
sll v1,v0,0x2
addiu a1,v0,0x30
addu v0,v1,v0
sb a1,0x24(sp)
sll v0,v0,0x1
subu a0,a0,v0
addiu a0,a0,0x30
b 0x0005a6ec
_sb a0,0x25(sp)
lw a1,-0x7fc8(gp)
li a2,0x5
lw t9,-0x60a8(gp)
or a0,zero,zero
jalr t9
_addiu a1,a1,0x6f28
lw gp,0x10(sp)
or a0,v0,zero
lw t9,-0x7f3c(gp)
bal 0x0005fbbc
_lw a1,0x0(s0)
li v0,0x31
li v1,0x1
lw gp,0x10(sp)
sb v0,0x24(sp)
sw v1,0x0(s0)
b 0x0005a6ec
_sb zero,0x25(sp)
lw t9,-0x60b8(gp)
jalr t9
_nop
addiu v0,a0,0x30
sb zero,0x25(sp)
seb v0,v0
b 0x0005a6ec
_sb v0,0x24(sp)
(translation_unit "void adjust_shell_level(int param_1)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  char extraout_v1;\n  char extraout_v1_00;\n  undefined4 *puVar7;\n  int iVar8;\n  int local_30;\n  int local_2c;\n  char local_24;\n  char local_23;\n  char local_22;\n  undefined1 local_21;\n  int local_1c;\n  \n  puVar4 = PTR___stack_chk_guard_001464dc;\n  puVar2 = PTR_LAB_00144578;\n  local_1c = *(int *)PTR___stack_chk_guard_001464dc;\n  pcVar5 = (char *)get_string_value(PTR_LAB_00144578 + 0x6f20);\n  if ((pcVar5 == (char *)0x0) || (*pcVar5 == '\0')) {\nLAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    local_2c = 0;\n    local_30 = 0;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }\n  }\n  else {\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }\n  if (param_1 < 1000) {\n    if (param_1 < 10) goto LAB_0005a814;\n    if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }\n  }\n  else {\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }\nLAB_0005a6ec:\n  while( true ) {\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }\n  return;\n}\n\n" (function_definition "void adjust_shell_level(int param_1)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  char extraout_v1;\n  char extraout_v1_00;\n  undefined4 *puVar7;\n  int iVar8;\n  int local_30;\n  int local_2c;\n  char local_24;\n  char local_23;\n  char local_22;\n  undefined1 local_21;\n  int local_1c;\n  \n  puVar4 = PTR___stack_chk_guard_001464dc;\n  puVar2 = PTR_LAB_00144578;\n  local_1c = *(int *)PTR___stack_chk_guard_001464dc;\n  pcVar5 = (char *)get_string_value(PTR_LAB_00144578 + 0x6f20);\n  if ((pcVar5 == (char *)0x0) || (*pcVar5 == '\0')) {\nLAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    local_2c = 0;\n    local_30 = 0;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }\n  }\n  else {\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }\n  if (param_1 < 1000) {\n    if (param_1 < 10) goto LAB_0005a814;\n    if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }\n  }\n  else {\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }\nLAB_0005a6ec:\n  while( true ) {\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }\n  return;\n}" primitive_type (function_declarator "adjust_shell_level(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  char extraout_v1;\n  char extraout_v1_00;\n  undefined4 *puVar7;\n  int iVar8;\n  int local_30;\n  int local_2c;\n  char local_24;\n  char local_23;\n  char local_22;\n  undefined1 local_21;\n  int local_1c;\n  \n  puVar4 = PTR___stack_chk_guard_001464dc;\n  puVar2 = PTR_LAB_00144578;\n  local_1c = *(int *)PTR___stack_chk_guard_001464dc;\n  pcVar5 = (char *)get_string_value(PTR_LAB_00144578 + 0x6f20);\n  if ((pcVar5 == (char *)0x0) || (*pcVar5 == '\0')) {\nLAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    local_2c = 0;\n    local_30 = 0;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }\n  }\n  else {\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }\n  if (param_1 < 1000) {\n    if (param_1 < 10) goto LAB_0005a814;\n    if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }\n  }\n  else {\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }\nLAB_0005a6ec:\n  while( true ) {\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "char extraout_v1;" primitive_type identifier ;) (declaration "char extraout_v1_00;" primitive_type identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "char local_24;" primitive_type identifier ;) (declaration "char local_23;" primitive_type identifier ;) (declaration "char local_22;" primitive_type identifier ;) (declaration "undefined1 local_21;" type_identifier identifier ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar4 = PTR___stack_chk_guard_001464dc;" (assignment_expression "puVar4 = PTR___stack_chk_guard_001464dc" identifier = identifier) ;) (expression_statement "puVar2 = PTR_LAB_00144578;" (assignment_expression "puVar2 = PTR_LAB_00144578" identifier = identifier) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_001464dc;" (assignment_expression "local_1c = *(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))) ;) (expression_statement "pcVar5 = (char *)get_string_value(PTR_LAB_00144578 + 0x6f20);" (assignment_expression "pcVar5 = (char *)get_string_value(PTR_LAB_00144578 + 0x6f20)" identifier = (cast_expression "(char *)get_string_value(PTR_LAB_00144578 + 0x6f20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "get_string_value(PTR_LAB_00144578 + 0x6f20)" identifier (argument_list "(PTR_LAB_00144578 + 0x6f20)" ( (binary_expression "PTR_LAB_00144578 + 0x6f20" identifier + number_literal) ))))) ;) (if_statement "if ((pcVar5 == (char *)0x0) || (*pcVar5 == '\0')) {\nLAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    local_2c = 0;\n    local_30 = 0;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }\n  }\n  else {\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }" if (parenthesized_expression "((pcVar5 == (char *)0x0) || (*pcVar5 == '\0'))" ( (binary_expression "(pcVar5 == (char *)0x0) || (*pcVar5 == '\0')" (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 "(*pcVar5 == '\0')" ( (binary_expression "*pcVar5 == '\0'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\nLAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    local_2c = 0;\n    local_30 = 0;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }\n  }" { (labeled_statement "LAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;" statement_identifier : (expression_statement "puVar7 = (undefined4 *)PTR_shell_level_0014478c;" (assignment_expression "puVar7 = (undefined4 *)PTR_shell_level_0014478c" identifier = (cast_expression "(undefined4 *)PTR_shell_level_0014478c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "*(int *)PTR_shell_level_0014478c = param_1;" (assignment_expression "*(int *)PTR_shell_level_0014478c = param_1" (pointer_expression "*(int *)PTR_shell_level_0014478c" * (cast_expression "(int *)PTR_shell_level_0014478c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (if_statement "if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }" if (parenthesized_expression "(param_1 < 0)" ( (binary_expression "param_1 < 0" identifier < number_literal) )) (compound_statement "{\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }" { (labeled_statement "LAB_0005a76c:\n      *puVar7 = 0;" statement_identifier : (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;)) (expression_statement "local_23 = '\0';" (assignment_expression "local_23 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_24 = '0';" (assignment_expression "local_24 = '0'" identifier = (char_literal "'0'" ' character ')) ;) (goto_statement "goto LAB_0005a6ec;" goto statement_identifier ;) })) }) (else_clause "else {\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }" else (compound_statement "{\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }" { (expression_statement "iVar8 = legal_number(pcVar5,&local_30);" (assignment_expression "iVar8 = legal_number(pcVar5,&local_30)" identifier = (call_expression "legal_number(pcVar5,&local_30)" identifier (argument_list "(pcVar5,&local_30)" ( identifier , (pointer_expression "&local_30" & identifier) )))) ;) (expression_statement "puVar7 = (undefined4 *)PTR_shell_level_0014478c;" (assignment_expression "puVar7 = (undefined4 *)PTR_shell_level_0014478c" identifier = (cast_expression "(undefined4 *)PTR_shell_level_0014478c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (iVar8 == 0) goto LAB_0005a624;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0005a624;" goto statement_identifier ;)) (expression_statement "param_1 = param_1 + local_2c;" (assignment_expression "param_1 = param_1 + local_2c" identifier = (binary_expression "param_1 + local_2c" identifier + identifier)) ;) (expression_statement "*(int *)PTR_shell_level_0014478c = param_1;" (assignment_expression "*(int *)PTR_shell_level_0014478c = param_1" (pointer_expression "*(int *)PTR_shell_level_0014478c" * (cast_expression "(int *)PTR_shell_level_0014478c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (if_statement "if (param_1 < 0) goto LAB_0005a76c;" if (parenthesized_expression "(param_1 < 0)" ( (binary_expression "param_1 < 0" identifier < number_literal) )) (goto_statement "goto LAB_0005a76c;" goto statement_identifier ;)) }))) (if_statement "if (param_1 < 1000) {\n    if (param_1 < 10) goto LAB_0005a814;\n    if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }\n  }\n  else {\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }" if (parenthesized_expression "(param_1 < 1000)" ( (binary_expression "param_1 < 1000" identifier < number_literal) )) (compound_statement "{\n    if (param_1 < 10) goto LAB_0005a814;\n    if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }\n  }" { (if_statement "if (param_1 < 10) goto LAB_0005a814;" if (parenthesized_expression "(param_1 < 10)" ( (binary_expression "param_1 < 10" identifier < number_literal) )) (goto_statement "goto LAB_0005a814;" goto statement_identifier ;)) (if_statement "if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }" if (parenthesized_expression "(param_1 < 100)" ( (binary_expression "param_1 < 100" identifier < number_literal) )) (compound_statement "{\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }" { (expression_statement "local_22 = '\0';" (assignment_expression "local_22 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "cVar1 = (char)(param_1 / 10);" (assignment_expression "cVar1 = (char)(param_1 / 10)" identifier = (cast_expression "(char)(param_1 / 10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(param_1 / 10)" ( (binary_expression "param_1 / 10" identifier / number_literal) )))) ;) (expression_statement "local_24 = cVar1 + '0';" (assignment_expression "local_24 = cVar1 + '0'" identifier = (binary_expression "cVar1 + '0'" identifier + (char_literal "'0'" ' character '))) ;) (expression_statement "local_23 = (char)param_1 + cVar1 * -10 + '0';" (assignment_expression "local_23 = (char)param_1 + cVar1 * -10 + '0'" identifier = (binary_expression "(char)param_1 + cVar1 * -10 + '0'" (binary_expression "(char)param_1 + cVar1 * -10" (cast_expression "(char)param_1" ( (type_descriptor "char" primitive_type) ) identifier) + (binary_expression "cVar1 * -10" identifier * number_literal)) + (char_literal "'0'" ' character '))) ;) }) (else_clause "else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }" else (compound_statement "{\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }" { (expression_statement "local_24 = (char)(param_1 / 100) + '0';" (assignment_expression "local_24 = (char)(param_1 / 100) + '0'" identifier = (binary_expression "(char)(param_1 / 100) + '0'" (cast_expression "(char)(param_1 / 100)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(param_1 / 100)" ( (binary_expression "param_1 / 100" identifier / number_literal) ))) + (char_literal "'0'" ' character '))) ;) (expression_statement "param_1 = param_1 % 100;" (assignment_expression "param_1 = param_1 % 100" identifier = (binary_expression "param_1 % 100" identifier % number_literal)) ;) (expression_statement "iVar8 = param_1 >> 0x1f;" (assignment_expression "iVar8 = param_1 >> 0x1f" identifier = (binary_expression "param_1 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "local_30 = iVar8;" (assignment_expression "local_30 = iVar8" identifier = identifier) ;) (expression_statement "local_2c = param_1;" (assignment_expression "local_2c = param_1" identifier = identifier) ;) (expression_statement "(*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);" (call_expression "(*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10)" (parenthesized_expression "(*(code *)PTR_FUN_00145044)" ( (pointer_expression "*(code *)PTR_FUN_00145044" * (cast_expression "(code *)PTR_FUN_00145044" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8,param_1,0,10)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "local_23 = extraout_v1 + '0';" (assignment_expression "local_23 = extraout_v1 + '0'" identifier = (binary_expression "extraout_v1 + '0'" identifier + (char_literal "'0'" ' character '))) ;) (expression_statement "(*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);" (call_expression "(*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10)" (parenthesized_expression "(*(code *)PTR_FUN_00145048)" ( (pointer_expression "*(code *)PTR_FUN_00145048" * (cast_expression "(code *)PTR_FUN_00145048" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8,param_1,0,10)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "local_22 = extraout_v1_00 + '0';" (assignment_expression "local_22 = extraout_v1_00 + '0'" identifier = (binary_expression "extraout_v1_00 + '0'" identifier + (char_literal "'0'" ' character '))) ;) (expression_statement "local_21 = 0;" (assignment_expression "local_21 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }" else (compound_statement "{\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }" { (expression_statement "uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);" (assignment_expression "uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5)" identifier = (call_expression "(*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00146498)" ( (pointer_expression "*(code *)PTR_dcgettext_00146498" * (cast_expression "(code *)PTR_dcgettext_00146498" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_LAB_00144578 + 0x6f28,5)" ( number_literal , (binary_expression "PTR_LAB_00144578 + 0x6f28" identifier + number_literal) , number_literal )))) ;) (expression_statement "internal_warning(uVar6,*puVar7);" (call_expression "internal_warning(uVar6,*puVar7)" identifier (argument_list "(uVar6,*puVar7)" ( identifier , (pointer_expression "*puVar7" * identifier) ))) ;) (expression_statement "local_24 = '1';" (assignment_expression "local_24 = '1'" identifier = (char_literal "'1'" ' character ')) ;) (expression_statement "*puVar7 = 1;" (assignment_expression "*puVar7 = 1" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "local_23 = '\0';" (assignment_expression "local_23 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (labeled_statement "LAB_0005a6ec:\n  while( true ) {\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }" statement_identifier : (while_statement "while( true ) {\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }" { (expression_statement "iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);" (assignment_expression "iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0)" identifier = (call_expression "bind_variable(puVar2 + 0x6f20,&local_24,0)" identifier (argument_list "(puVar2 + 0x6f20,&local_24,0)" ( (binary_expression "puVar2 + 0x6f20" identifier + number_literal) , (pointer_expression "&local_24" & identifier) , number_literal )))) ;) (expression_statement "puVar3 = PTR_array_needs_making_00144fb8;" (assignment_expression "puVar3 = PTR_array_needs_making_00144fb8" identifier = identifier) ;) (expression_statement "param_1 = *(int *)puVar4;" (assignment_expression "param_1 = *(int *)puVar4" identifier = (pointer_expression "*(int *)puVar4" * (cast_expression "(int *)puVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;" (assignment_expression "*(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1" (pointer_expression "*(uint *)(iVar8 + 0x14)" * (cast_expression "(uint *)(iVar8 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar8 + 0x14) | 1" (pointer_expression "*(uint *)(iVar8 + 0x14)" * (cast_expression "(uint *)(iVar8 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(undefined4 *)puVar3 = 1;" (assignment_expression "*(undefined4 *)puVar3 = 1" (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if (local_1c == param_1) break;" if (parenthesized_expression "(local_1c == param_1)" ( (binary_expression "local_1c == param_1" identifier == identifier) )) (break_statement "break;" break ;)) (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 "()" ( ))) ;) (labeled_statement "LAB_0005a814:\n    local_24 = (char)param_1 + '0';" statement_identifier : (expression_statement "local_24 = (char)param_1 + '0';" (assignment_expression "local_24 = (char)param_1 + '0'" identifier = (binary_expression "(char)param_1 + '0'" (cast_expression "(char)param_1" ( (type_descriptor "char" primitive_type) ) identifier) + (char_literal "'0'" ' character '))) ;)) (expression_statement "local_23 = '\0';" (assignment_expression "local_23 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (return_statement "return;" return ;) })))
(translation_unit "void adjust_shell_level(int change)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  char *pcVar6;\n  SHELL_VAR *pSVar7;\n  char extraout_v1;\n  char extraout_v1_00;\n  int iVar8;\n  undefined4 *puVar9;\n  int iVar10;\n  intmax_t old_level;\n  char new_level [5];\n  \n  puVar4 = PTR___stack_chk_guard_001464dc;\n  puVar2 = PTR_LAB_00144578;\n  iVar5 = *(int *)PTR___stack_chk_guard_001464dc;\n  pcVar6 = get_string_value(PTR_LAB_00144578 + 0x6f20);\n  if ((pcVar6 == (char *)0x0) || (*pcVar6 == '\0')) {\nLAB_0005a624:\n    puVar9 = (undefined4 *)PTR_shell_level_0014478c;\n    old_level._4_4_ = 0;\n    old_level._0_4_ = 0;\n    *(int *)PTR_shell_level_0014478c = change;\n    if (change < 0) {\nLAB_0005a76c:\n      *puVar9 = 0;\n      new_level[1] = '\0';\n      new_level[0] = '0';\n      goto LAB_0005a6ec;\n    }\n  }\n  else {\n    iVar8 = legal_number(pcVar6,&old_level);\n    puVar9 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    change = change + old_level._4_4_;\n    *(int *)PTR_shell_level_0014478c = change;\n    if (change < 0) goto LAB_0005a76c;\n  }\n  if (change < 1000) {\n    if (change < 10) goto LAB_0005a814;\n    if (change < 100) {\n      new_level[2] = '\0';\n      cVar1 = (char)(change / 10);\n      new_level[0] = cVar1 + '0';\n      new_level[1] = (char)change + cVar1 * -10 + '0';\n    }\n    else {\n      new_level[0] = (char)(change / 100) + '0';\n      iVar8 = change % 100;\n      iVar10 = iVar8 >> 0x1f;\n      old_level._0_4_ = iVar10;\n      old_level._4_4_ = iVar8;\n      (*(code *)PTR___divdi3_00145044)(iVar10,iVar8,0,10);\n      new_level[1] = extraout_v1 + '0';\n      (*(code *)PTR___moddi3_00145048)(iVar10,iVar8,0,10);\n      new_level[2] = extraout_v1_00 + '0';\n      new_level[3] = '\0';\n    }\n  }\n  else {\n    pcVar6 = (char *)(*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(pcVar6,*puVar9);\n    new_level[0] = '1';\n    *puVar9 = 1;\n    new_level[1] = '\0';\n  }\nLAB_0005a6ec:\n  while( true ) {\n    pSVar7 = bind_variable(puVar2 + 0x6f20,new_level,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    change = *(int *)puVar4;\n    pSVar7->attributes = pSVar7->attributes | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (iVar5 == change) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    new_level[0] = (char)change + '0';\n    new_level[1] = '\0';\n  }\n  return;\n}\n\n" (function_definition "void adjust_shell_level(int change)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  char *pcVar6;\n  SHELL_VAR *pSVar7;\n  char extraout_v1;\n  char extraout_v1_00;\n  int iVar8;\n  undefined4 *puVar9;\n  int iVar10;\n  intmax_t old_level;\n  char new_level [5];\n  \n  puVar4 = PTR___stack_chk_guard_001464dc;\n  puVar2 = PTR_LAB_00144578;\n  iVar5 = *(int *)PTR___stack_chk_guard_001464dc;\n  pcVar6 = get_string_value(PTR_LAB_00144578 + 0x6f20);\n  if ((pcVar6 == (char *)0x0) || (*pcVar6 == '\0')) {\nLAB_0005a624:\n    puVar9 = (undefined4 *)PTR_shell_level_0014478c;\n    old_level._4_4_ = 0;\n    old_level._0_4_ = 0;\n    *(int *)PTR_shell_level_0014478c = change;\n    if (change < 0) {\nLAB_0005a76c:\n      *puVar9 = 0;\n      new_level[1] = '\0';\n      new_level[0] = '0';\n      goto LAB_0005a6ec;\n    }\n  }\n  else {\n    iVar8 = legal_number(pcVar6,&old_level);\n    puVar9 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    change = change + old_level._4_4_;\n    *(int *)PTR_shell_level_0014478c = change;\n    if (change < 0) goto LAB_0005a76c;\n  }\n  if (change < 1000) {\n    if (change < 10) goto LAB_0005a814;\n    if (change < 100) {\n      new_level[2] = '\0';\n      cVar1 = (char)(change / 10);\n      new_level[0] = cVar1 + '0';\n      new_level[1] = (char)change + cVar1 * -10 + '0';\n    }\n    else {\n      new_level[0] = (char)(change / 100) + '0';\n      iVar8 = change % 100;\n      iVar10 = iVar8 >> 0x1f;\n      old_level._0_4_ = iVar10;\n      old_level._4_4_ = iVar8;\n      (*(code *)PTR___divdi3_00145044)(iVar10,iVar8,0,10);\n      new_level[1] = extraout_v1 + '0';\n      (*(code *)PTR___moddi3_00145048)(iVar10,iVar8,0,10);\n      new_level[2] = extraout_v1_00 + '0';\n      new_level[3] = '\0';\n    }\n  }\n  else {\n    pcVar6 = (char *)(*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(pcVar6,*puVar9);\n    new_level[0] = '1';\n    *puVar9 = 1;\n    new_level[1] = '\0';\n  }\nLAB_0005a6ec:\n  while( true ) {\n    pSVar7 = bind_variable(puVar2 + 0x6f20,new_level,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    change = *(int *)puVar4;\n    pSVar7->attributes = pSVar7->attributes | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (iVar5 == change) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    new_level[0] = (char)change + '0';\n    new_level[1] = '\0';\n  }\n  return;\n}" primitive_type (function_declarator "adjust_shell_level(int change)" identifier (parameter_list "(int change)" ( (parameter_declaration "int change" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  char *pcVar6;\n  SHELL_VAR *pSVar7;\n  char extraout_v1;\n  char extraout_v1_00;\n  int iVar8;\n  undefined4 *puVar9;\n  int iVar10;\n  intmax_t old_level;\n  char new_level [5];\n  \n  puVar4 = PTR___stack_chk_guard_001464dc;\n  puVar2 = PTR_LAB_00144578;\n  iVar5 = *(int *)PTR___stack_chk_guard_001464dc;\n  pcVar6 = get_string_value(PTR_LAB_00144578 + 0x6f20);\n  if ((pcVar6 == (char *)0x0) || (*pcVar6 == '\0')) {\nLAB_0005a624:\n    puVar9 = (undefined4 *)PTR_shell_level_0014478c;\n    old_level._4_4_ = 0;\n    old_level._0_4_ = 0;\n    *(int *)PTR_shell_level_0014478c = change;\n    if (change < 0) {\nLAB_0005a76c:\n      *puVar9 = 0;\n      new_level[1] = '\0';\n      new_level[0] = '0';\n      goto LAB_0005a6ec;\n    }\n  }\n  else {\n    iVar8 = legal_number(pcVar6,&old_level);\n    puVar9 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    change = change + old_level._4_4_;\n    *(int *)PTR_shell_level_0014478c = change;\n    if (change < 0) goto LAB_0005a76c;\n  }\n  if (change < 1000) {\n    if (change < 10) goto LAB_0005a814;\n    if (change < 100) {\n      new_level[2] = '\0';\n      cVar1 = (char)(change / 10);\n      new_level[0] = cVar1 + '0';\n      new_level[1] = (char)change + cVar1 * -10 + '0';\n    }\n    else {\n      new_level[0] = (char)(change / 100) + '0';\n      iVar8 = change % 100;\n      iVar10 = iVar8 >> 0x1f;\n      old_level._0_4_ = iVar10;\n      old_level._4_4_ = iVar8;\n      (*(code *)PTR___divdi3_00145044)(iVar10,iVar8,0,10);\n      new_level[1] = extraout_v1 + '0';\n      (*(code *)PTR___moddi3_00145048)(iVar10,iVar8,0,10);\n      new_level[2] = extraout_v1_00 + '0';\n      new_level[3] = '\0';\n    }\n  }\n  else {\n    pcVar6 = (char *)(*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(pcVar6,*puVar9);\n    new_level[0] = '1';\n    *puVar9 = 1;\n    new_level[1] = '\0';\n  }\nLAB_0005a6ec:\n  while( true ) {\n    pSVar7 = bind_variable(puVar2 + 0x6f20,new_level,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    change = *(int *)puVar4;\n    pSVar7->attributes = pSVar7->attributes | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (iVar5 == change) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    new_level[0] = (char)change + '0';\n    new_level[1] = '\0';\n  }\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "SHELL_VAR *pSVar7;" type_identifier (pointer_declarator "*pSVar7" * identifier) ;) (declaration "char extraout_v1;" primitive_type identifier ;) (declaration "char extraout_v1_00;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "intmax_t old_level;" type_identifier identifier ;) (declaration "char new_level [5];" primitive_type (array_declarator "new_level [5]" identifier [ number_literal ]) ;) (expression_statement "puVar4 = PTR___stack_chk_guard_001464dc;" (assignment_expression "puVar4 = PTR___stack_chk_guard_001464dc" identifier = identifier) ;) (expression_statement "puVar2 = PTR_LAB_00144578;" (assignment_expression "puVar2 = PTR_LAB_00144578" identifier = identifier) ;) (expression_statement "iVar5 = *(int *)PTR___stack_chk_guard_001464dc;" (assignment_expression "iVar5 = *(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))) ;) (expression_statement "pcVar6 = get_string_value(PTR_LAB_00144578 + 0x6f20);" (assignment_expression "pcVar6 = get_string_value(PTR_LAB_00144578 + 0x6f20)" identifier = (call_expression "get_string_value(PTR_LAB_00144578 + 0x6f20)" identifier (argument_list "(PTR_LAB_00144578 + 0x6f20)" ( (binary_expression "PTR_LAB_00144578 + 0x6f20" identifier + number_literal) )))) ;) (if_statement "if ((pcVar6 == (char *)0x0) || (*pcVar6 == '\0')) {\nLAB_0005a624:\n    puVar9 = (undefined4 *)PTR_shell_level_0014478c;\n    old_level._4_4_ = 0;\n    old_level._0_4_ = 0;\n    *(int *)PTR_shell_level_0014478c = change;\n    if (change < 0) {\nLAB_0005a76c:\n      *puVar9 = 0;\n      new_level[1] = '\0';\n      new_level[0] = '0';\n      goto LAB_0005a6ec;\n    }\n  }\n  else {\n    iVar8 = legal_number(pcVar6,&old_level);\n    puVar9 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    change = change + old_level._4_4_;\n    *(int *)PTR_shell_level_0014478c = change;\n    if (change < 0) goto LAB_0005a76c;\n  }" if (parenthesized_expression "((pcVar6 == (char *)0x0) || (*pcVar6 == '\0'))" ( (binary_expression "(pcVar6 == (char *)0x0) || (*pcVar6 == '\0')" (parenthesized_expression "(pcVar6 == (char *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*pcVar6 == '\0')" ( (binary_expression "*pcVar6 == '\0'" (pointer_expression "*pcVar6" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\nLAB_0005a624:\n    puVar9 = (undefined4 *)PTR_shell_level_0014478c;\n    old_level._4_4_ = 0;\n    old_level._0_4_ = 0;\n    *(int *)PTR_shell_level_0014478c = change;\n    if (change < 0) {\nLAB_0005a76c:\n      *puVar9 = 0;\n      new_level[1] = '\0';\n      new_level[0] = '0';\n      goto LAB_0005a6ec;\n    }\n  }" { (labeled_statement "LAB_0005a624:\n    puVar9 = (undefined4 *)PTR_shell_level_0014478c;" statement_identifier : (expression_statement "puVar9 = (undefined4 *)PTR_shell_level_0014478c;" (assignment_expression "puVar9 = (undefined4 *)PTR_shell_level_0014478c" identifier = (cast_expression "(undefined4 *)PTR_shell_level_0014478c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (expression_statement "old_level._4_4_ = 0;" (assignment_expression "old_level._4_4_ = 0" (field_expression "old_level._4_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "old_level._0_4_ = 0;" (assignment_expression "old_level._0_4_ = 0" (field_expression "old_level._0_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "*(int *)PTR_shell_level_0014478c = change;" (assignment_expression "*(int *)PTR_shell_level_0014478c = change" (pointer_expression "*(int *)PTR_shell_level_0014478c" * (cast_expression "(int *)PTR_shell_level_0014478c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (if_statement "if (change < 0) {\nLAB_0005a76c:\n      *puVar9 = 0;\n      new_level[1] = '\0';\n      new_level[0] = '0';\n      goto LAB_0005a6ec;\n    }" if (parenthesized_expression "(change < 0)" ( (binary_expression "change < 0" identifier < number_literal) )) (compound_statement "{\nLAB_0005a76c:\n      *puVar9 = 0;\n      new_level[1] = '\0';\n      new_level[0] = '0';\n      goto LAB_0005a6ec;\n    }" { (labeled_statement "LAB_0005a76c:\n      *puVar9 = 0;" statement_identifier : (expression_statement "*puVar9 = 0;" (assignment_expression "*puVar9 = 0" (pointer_expression "*puVar9" * identifier) = number_literal) ;)) (expression_statement "new_level[1] = '\0';" (assignment_expression "new_level[1] = '\0'" (subscript_expression "new_level[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "new_level[0] = '0';" (assignment_expression "new_level[0] = '0'" (subscript_expression "new_level[0]" identifier [ number_literal ]) = (char_literal "'0'" ' character ')) ;) (goto_statement "goto LAB_0005a6ec;" goto statement_identifier ;) })) }) (else_clause "else {\n    iVar8 = legal_number(pcVar6,&old_level);\n    puVar9 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    change = change + old_level._4_4_;\n    *(int *)PTR_shell_level_0014478c = change;\n    if (change < 0) goto LAB_0005a76c;\n  }" else (compound_statement "{\n    iVar8 = legal_number(pcVar6,&old_level);\n    puVar9 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    change = change + old_level._4_4_;\n    *(int *)PTR_shell_level_0014478c = change;\n    if (change < 0) goto LAB_0005a76c;\n  }" { (expression_statement "iVar8 = legal_number(pcVar6,&old_level);" (assignment_expression "iVar8 = legal_number(pcVar6,&old_level)" identifier = (call_expression "legal_number(pcVar6,&old_level)" identifier (argument_list "(pcVar6,&old_level)" ( identifier , (pointer_expression "&old_level" & identifier) )))) ;) (expression_statement "puVar9 = (undefined4 *)PTR_shell_level_0014478c;" (assignment_expression "puVar9 = (undefined4 *)PTR_shell_level_0014478c" identifier = (cast_expression "(undefined4 *)PTR_shell_level_0014478c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (iVar8 == 0) goto LAB_0005a624;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0005a624;" goto statement_identifier ;)) (expression_statement "change = change + old_level._4_4_;" (assignment_expression "change = change + old_level._4_4_" identifier = (binary_expression "change + old_level._4_4_" identifier + (field_expression "old_level._4_4_" identifier . field_identifier))) ;) (expression_statement "*(int *)PTR_shell_level_0014478c = change;" (assignment_expression "*(int *)PTR_shell_level_0014478c = change" (pointer_expression "*(int *)PTR_shell_level_0014478c" * (cast_expression "(int *)PTR_shell_level_0014478c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (if_statement "if (change < 0) goto LAB_0005a76c;" if (parenthesized_expression "(change < 0)" ( (binary_expression "change < 0" identifier < number_literal) )) (goto_statement "goto LAB_0005a76c;" goto statement_identifier ;)) }))) (if_statement "if (change < 1000) {\n    if (change < 10) goto LAB_0005a814;\n    if (change < 100) {\n      new_level[2] = '\0';\n      cVar1 = (char)(change / 10);\n      new_level[0] = cVar1 + '0';\n      new_level[1] = (char)change + cVar1 * -10 + '0';\n    }\n    else {\n      new_level[0] = (char)(change / 100) + '0';\n      iVar8 = change % 100;\n      iVar10 = iVar8 >> 0x1f;\n      old_level._0_4_ = iVar10;\n      old_level._4_4_ = iVar8;\n      (*(code *)PTR___divdi3_00145044)(iVar10,iVar8,0,10);\n      new_level[1] = extraout_v1 + '0';\n      (*(code *)PTR___moddi3_00145048)(iVar10,iVar8,0,10);\n      new_level[2] = extraout_v1_00 + '0';\n      new_level[3] = '\0';\n    }\n  }\n  else {\n    pcVar6 = (char *)(*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(pcVar6,*puVar9);\n    new_level[0] = '1';\n    *puVar9 = 1;\n    new_level[1] = '\0';\n  }" if (parenthesized_expression "(change < 1000)" ( (binary_expression "change < 1000" identifier < number_literal) )) (compound_statement "{\n    if (change < 10) goto LAB_0005a814;\n    if (change < 100) {\n      new_level[2] = '\0';\n      cVar1 = (char)(change / 10);\n      new_level[0] = cVar1 + '0';\n      new_level[1] = (char)change + cVar1 * -10 + '0';\n    }\n    else {\n      new_level[0] = (char)(change / 100) + '0';\n      iVar8 = change % 100;\n      iVar10 = iVar8 >> 0x1f;\n      old_level._0_4_ = iVar10;\n      old_level._4_4_ = iVar8;\n      (*(code *)PTR___divdi3_00145044)(iVar10,iVar8,0,10);\n      new_level[1] = extraout_v1 + '0';\n      (*(code *)PTR___moddi3_00145048)(iVar10,iVar8,0,10);\n      new_level[2] = extraout_v1_00 + '0';\n      new_level[3] = '\0';\n    }\n  }" { (if_statement "if (change < 10) goto LAB_0005a814;" if (parenthesized_expression "(change < 10)" ( (binary_expression "change < 10" identifier < number_literal) )) (goto_statement "goto LAB_0005a814;" goto statement_identifier ;)) (if_statement "if (change < 100) {\n      new_level[2] = '\0';\n      cVar1 = (char)(change / 10);\n      new_level[0] = cVar1 + '0';\n      new_level[1] = (char)change + cVar1 * -10 + '0';\n    }\n    else {\n      new_level[0] = (char)(change / 100) + '0';\n      iVar8 = change % 100;\n      iVar10 = iVar8 >> 0x1f;\n      old_level._0_4_ = iVar10;\n      old_level._4_4_ = iVar8;\n      (*(code *)PTR___divdi3_00145044)(iVar10,iVar8,0,10);\n      new_level[1] = extraout_v1 + '0';\n      (*(code *)PTR___moddi3_00145048)(iVar10,iVar8,0,10);\n      new_level[2] = extraout_v1_00 + '0';\n      new_level[3] = '\0';\n    }" if (parenthesized_expression "(change < 100)" ( (binary_expression "change < 100" identifier < number_literal) )) (compound_statement "{\n      new_level[2] = '\0';\n      cVar1 = (char)(change / 10);\n      new_level[0] = cVar1 + '0';\n      new_level[1] = (char)change + cVar1 * -10 + '0';\n    }" { (expression_statement "new_level[2] = '\0';" (assignment_expression "new_level[2] = '\0'" (subscript_expression "new_level[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "cVar1 = (char)(change / 10);" (assignment_expression "cVar1 = (char)(change / 10)" identifier = (cast_expression "(char)(change / 10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(change / 10)" ( (binary_expression "change / 10" identifier / number_literal) )))) ;) (expression_statement "new_level[0] = cVar1 + '0';" (assignment_expression "new_level[0] = cVar1 + '0'" (subscript_expression "new_level[0]" identifier [ number_literal ]) = (binary_expression "cVar1 + '0'" identifier + (char_literal "'0'" ' character '))) ;) (expression_statement "new_level[1] = (char)change + cVar1 * -10 + '0';" (assignment_expression "new_level[1] = (char)change + cVar1 * -10 + '0'" (subscript_expression "new_level[1]" identifier [ number_literal ]) = (binary_expression "(char)change + cVar1 * -10 + '0'" (binary_expression "(char)change + cVar1 * -10" (cast_expression "(char)change" ( (type_descriptor "char" primitive_type) ) identifier) + (binary_expression "cVar1 * -10" identifier * number_literal)) + (char_literal "'0'" ' character '))) ;) }) (else_clause "else {\n      new_level[0] = (char)(change / 100) + '0';\n      iVar8 = change % 100;\n      iVar10 = iVar8 >> 0x1f;\n      old_level._0_4_ = iVar10;\n      old_level._4_4_ = iVar8;\n      (*(code *)PTR___divdi3_00145044)(iVar10,iVar8,0,10);\n      new_level[1] = extraout_v1 + '0';\n      (*(code *)PTR___moddi3_00145048)(iVar10,iVar8,0,10);\n      new_level[2] = extraout_v1_00 + '0';\n      new_level[3] = '\0';\n    }" else (compound_statement "{\n      new_level[0] = (char)(change / 100) + '0';\n      iVar8 = change % 100;\n      iVar10 = iVar8 >> 0x1f;\n      old_level._0_4_ = iVar10;\n      old_level._4_4_ = iVar8;\n      (*(code *)PTR___divdi3_00145044)(iVar10,iVar8,0,10);\n      new_level[1] = extraout_v1 + '0';\n      (*(code *)PTR___moddi3_00145048)(iVar10,iVar8,0,10);\n      new_level[2] = extraout_v1_00 + '0';\n      new_level[3] = '\0';\n    }" { (expression_statement "new_level[0] = (char)(change / 100) + '0';" (assignment_expression "new_level[0] = (char)(change / 100) + '0'" (subscript_expression "new_level[0]" identifier [ number_literal ]) = (binary_expression "(char)(change / 100) + '0'" (cast_expression "(char)(change / 100)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(change / 100)" ( (binary_expression "change / 100" identifier / number_literal) ))) + (char_literal "'0'" ' character '))) ;) (expression_statement "iVar8 = change % 100;" (assignment_expression "iVar8 = change % 100" identifier = (binary_expression "change % 100" identifier % number_literal)) ;) (expression_statement "iVar10 = iVar8 >> 0x1f;" (assignment_expression "iVar10 = iVar8 >> 0x1f" identifier = (binary_expression "iVar8 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "old_level._0_4_ = iVar10;" (assignment_expression "old_level._0_4_ = iVar10" (field_expression "old_level._0_4_" identifier . field_identifier) = identifier) ;) (expression_statement "old_level._4_4_ = iVar8;" (assignment_expression "old_level._4_4_ = iVar8" (field_expression "old_level._4_4_" identifier . field_identifier) = identifier) ;) (expression_statement "(*(code *)PTR___divdi3_00145044)(iVar10,iVar8,0,10);" (call_expression "(*(code *)PTR___divdi3_00145044)(iVar10,iVar8,0,10)" (parenthesized_expression "(*(code *)PTR___divdi3_00145044)" ( (pointer_expression "*(code *)PTR___divdi3_00145044" * (cast_expression "(code *)PTR___divdi3_00145044" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar10,iVar8,0,10)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "new_level[1] = extraout_v1 + '0';" (assignment_expression "new_level[1] = extraout_v1 + '0'" (subscript_expression "new_level[1]" identifier [ number_literal ]) = (binary_expression "extraout_v1 + '0'" identifier + (char_literal "'0'" ' character '))) ;) (expression_statement "(*(code *)PTR___moddi3_00145048)(iVar10,iVar8,0,10);" (call_expression "(*(code *)PTR___moddi3_00145048)(iVar10,iVar8,0,10)" (parenthesized_expression "(*(code *)PTR___moddi3_00145048)" ( (pointer_expression "*(code *)PTR___moddi3_00145048" * (cast_expression "(code *)PTR___moddi3_00145048" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar10,iVar8,0,10)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "new_level[2] = extraout_v1_00 + '0';" (assignment_expression "new_level[2] = extraout_v1_00 + '0'" (subscript_expression "new_level[2]" identifier [ number_literal ]) = (binary_expression "extraout_v1_00 + '0'" identifier + (char_literal "'0'" ' character '))) ;) (expression_statement "new_level[3] = '\0';" (assignment_expression "new_level[3] = '\0'" (subscript_expression "new_level[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) }) (else_clause "else {\n    pcVar6 = (char *)(*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(pcVar6,*puVar9);\n    new_level[0] = '1';\n    *puVar9 = 1;\n    new_level[1] = '\0';\n  }" else (compound_statement "{\n    pcVar6 = (char *)(*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(pcVar6,*puVar9);\n    new_level[0] = '1';\n    *puVar9 = 1;\n    new_level[1] = '\0';\n  }" { (expression_statement "pcVar6 = (char *)(*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);" (assignment_expression "pcVar6 = (char *)(*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5)" identifier = (cast_expression "(char *)(*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00146498)" ( (pointer_expression "*(code *)PTR_dcgettext_00146498" * (cast_expression "(code *)PTR_dcgettext_00146498" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_LAB_00144578 + 0x6f28,5)" ( number_literal , (binary_expression "PTR_LAB_00144578 + 0x6f28" identifier + number_literal) , number_literal ))))) ;) (expression_statement "internal_warning(pcVar6,*puVar9);" (call_expression "internal_warning(pcVar6,*puVar9)" identifier (argument_list "(pcVar6,*puVar9)" ( identifier , (pointer_expression "*puVar9" * identifier) ))) ;) (expression_statement "new_level[0] = '1';" (assignment_expression "new_level[0] = '1'" (subscript_expression "new_level[0]" identifier [ number_literal ]) = (char_literal "'1'" ' character ')) ;) (expression_statement "*puVar9 = 1;" (assignment_expression "*puVar9 = 1" (pointer_expression "*puVar9" * identifier) = number_literal) ;) (expression_statement "new_level[1] = '\0';" (assignment_expression "new_level[1] = '\0'" (subscript_expression "new_level[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (labeled_statement "LAB_0005a6ec:\n  while( true ) {\n    pSVar7 = bind_variable(puVar2 + 0x6f20,new_level,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    change = *(int *)puVar4;\n    pSVar7->attributes = pSVar7->attributes | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (iVar5 == change) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    new_level[0] = (char)change + '0';\n    new_level[1] = '\0';\n  }" statement_identifier : (while_statement "while( true ) {\n    pSVar7 = bind_variable(puVar2 + 0x6f20,new_level,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    change = *(int *)puVar4;\n    pSVar7->attributes = pSVar7->attributes | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (iVar5 == change) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    new_level[0] = (char)change + '0';\n    new_level[1] = '\0';\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    pSVar7 = bind_variable(puVar2 + 0x6f20,new_level,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    change = *(int *)puVar4;\n    pSVar7->attributes = pSVar7->attributes | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (iVar5 == change) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    new_level[0] = (char)change + '0';\n    new_level[1] = '\0';\n  }" { (expression_statement "pSVar7 = bind_variable(puVar2 + 0x6f20,new_level,0);" (assignment_expression "pSVar7 = bind_variable(puVar2 + 0x6f20,new_level,0)" identifier = (call_expression "bind_variable(puVar2 + 0x6f20,new_level,0)" identifier (argument_list "(puVar2 + 0x6f20,new_level,0)" ( (binary_expression "puVar2 + 0x6f20" identifier + number_literal) , identifier , number_literal )))) ;) (expression_statement "puVar3 = PTR_array_needs_making_00144fb8;" (assignment_expression "puVar3 = PTR_array_needs_making_00144fb8" identifier = identifier) ;) (expression_statement "change = *(int *)puVar4;" (assignment_expression "change = *(int *)puVar4" identifier = (pointer_expression "*(int *)puVar4" * (cast_expression "(int *)puVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pSVar7->attributes = pSVar7->attributes | 1;" (assignment_expression "pSVar7->attributes = pSVar7->attributes | 1" (field_expression "pSVar7->attributes" identifier -> field_identifier) = (binary_expression "pSVar7->attributes | 1" (field_expression "pSVar7->attributes" identifier -> field_identifier) | number_literal)) ;) (expression_statement "*(undefined4 *)puVar3 = 1;" (assignment_expression "*(undefined4 *)puVar3 = 1" (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if (iVar5 == change) break;" if (parenthesized_expression "(iVar5 == change)" ( (binary_expression "iVar5 == change" identifier == identifier) )) (break_statement "break;" break ;)) (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 "()" ( ))) ;) (labeled_statement "LAB_0005a814:\n    new_level[0] = (char)change + '0';" statement_identifier : (expression_statement "new_level[0] = (char)change + '0';" (assignment_expression "new_level[0] = (char)change + '0'" (subscript_expression "new_level[0]" identifier [ number_literal ]) = (binary_expression "(char)change + '0'" (cast_expression "(char)change" ( (type_descriptor "char" primitive_type) ) identifier) + (char_literal "'0'" ' character '))) ;)) (expression_statement "new_level[1] = '\0';" (assignment_expression "new_level[1] = '\0'" (subscript_expression "new_level[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (return_statement "return;" return ;) })))
(translation_unit "void adjust_shell_level(int param_1)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  char extraout_v1;\n  char extraout_v1_00;\n  undefined4 *puVar7;\n  int iVar8;\n  int local_30;\n  int local_2c;\n  char local_24;\n  char local_23;\n  char local_22;\n  undefined1 local_21;\n  int local_1c;\n  \n  puVar4 = PTR___stack_chk_guard_001464dc;\n  puVar2 = PTR_LAB_00144578;\n  local_1c = *(int *)PTR___stack_chk_guard_001464dc;\n  pcVar5 = (char *)get_string_value(PTR_LAB_00144578 + 0x6f20);\n  if ((pcVar5 == (char *)0x0) || (*pcVar5 == '\0')) {\nLAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    local_2c = 0;\n    local_30 = 0;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }\n  }\n  else {\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }\n  if (param_1 < 1000) {\n    if (param_1 < 10) goto LAB_0005a814;\n    if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }\n  }\n  else {\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }\nLAB_0005a6ec:\n  while( true ) {\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }\n  return;\n}\n\n" (function_definition "void adjust_shell_level(int param_1)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  char extraout_v1;\n  char extraout_v1_00;\n  undefined4 *puVar7;\n  int iVar8;\n  int local_30;\n  int local_2c;\n  char local_24;\n  char local_23;\n  char local_22;\n  undefined1 local_21;\n  int local_1c;\n  \n  puVar4 = PTR___stack_chk_guard_001464dc;\n  puVar2 = PTR_LAB_00144578;\n  local_1c = *(int *)PTR___stack_chk_guard_001464dc;\n  pcVar5 = (char *)get_string_value(PTR_LAB_00144578 + 0x6f20);\n  if ((pcVar5 == (char *)0x0) || (*pcVar5 == '\0')) {\nLAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    local_2c = 0;\n    local_30 = 0;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }\n  }\n  else {\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }\n  if (param_1 < 1000) {\n    if (param_1 < 10) goto LAB_0005a814;\n    if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }\n  }\n  else {\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }\nLAB_0005a6ec:\n  while( true ) {\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }\n  return;\n}" primitive_type (function_declarator "adjust_shell_level(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  char extraout_v1;\n  char extraout_v1_00;\n  undefined4 *puVar7;\n  int iVar8;\n  int local_30;\n  int local_2c;\n  char local_24;\n  char local_23;\n  char local_22;\n  undefined1 local_21;\n  int local_1c;\n  \n  puVar4 = PTR___stack_chk_guard_001464dc;\n  puVar2 = PTR_LAB_00144578;\n  local_1c = *(int *)PTR___stack_chk_guard_001464dc;\n  pcVar5 = (char *)get_string_value(PTR_LAB_00144578 + 0x6f20);\n  if ((pcVar5 == (char *)0x0) || (*pcVar5 == '\0')) {\nLAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    local_2c = 0;\n    local_30 = 0;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }\n  }\n  else {\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }\n  if (param_1 < 1000) {\n    if (param_1 < 10) goto LAB_0005a814;\n    if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }\n  }\n  else {\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }\nLAB_0005a6ec:\n  while( true ) {\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "char extraout_v1;" primitive_type identifier ;) (declaration "char extraout_v1_00;" primitive_type identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "char local_24;" primitive_type identifier ;) (declaration "char local_23;" primitive_type identifier ;) (declaration "char local_22;" primitive_type identifier ;) (declaration "undefined1 local_21;" type_identifier identifier ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar4 = PTR___stack_chk_guard_001464dc;" (assignment_expression "puVar4 = PTR___stack_chk_guard_001464dc" identifier = identifier) ;) (expression_statement "puVar2 = PTR_LAB_00144578;" (assignment_expression "puVar2 = PTR_LAB_00144578" identifier = identifier) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_001464dc;" (assignment_expression "local_1c = *(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))) ;) (expression_statement "pcVar5 = (char *)get_string_value(PTR_LAB_00144578 + 0x6f20);" (assignment_expression "pcVar5 = (char *)get_string_value(PTR_LAB_00144578 + 0x6f20)" identifier = (cast_expression "(char *)get_string_value(PTR_LAB_00144578 + 0x6f20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "get_string_value(PTR_LAB_00144578 + 0x6f20)" identifier (argument_list "(PTR_LAB_00144578 + 0x6f20)" ( (binary_expression "PTR_LAB_00144578 + 0x6f20" identifier + number_literal) ))))) ;) (if_statement "if ((pcVar5 == (char *)0x0) || (*pcVar5 == '\0')) {\nLAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    local_2c = 0;\n    local_30 = 0;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }\n  }\n  else {\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }" if (parenthesized_expression "((pcVar5 == (char *)0x0) || (*pcVar5 == '\0'))" ( (binary_expression "(pcVar5 == (char *)0x0) || (*pcVar5 == '\0')" (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 "(*pcVar5 == '\0')" ( (binary_expression "*pcVar5 == '\0'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\nLAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    local_2c = 0;\n    local_30 = 0;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }\n  }" { (labeled_statement "LAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;" statement_identifier : (expression_statement "puVar7 = (undefined4 *)PTR_shell_level_0014478c;" (assignment_expression "puVar7 = (undefined4 *)PTR_shell_level_0014478c" identifier = (cast_expression "(undefined4 *)PTR_shell_level_0014478c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "*(int *)PTR_shell_level_0014478c = param_1;" (assignment_expression "*(int *)PTR_shell_level_0014478c = param_1" (pointer_expression "*(int *)PTR_shell_level_0014478c" * (cast_expression "(int *)PTR_shell_level_0014478c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (if_statement "if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }" if (parenthesized_expression "(param_1 < 0)" ( (binary_expression "param_1 < 0" identifier < number_literal) )) (compound_statement "{\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }" { (labeled_statement "LAB_0005a76c:\n      *puVar7 = 0;" statement_identifier : (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;)) (expression_statement "local_23 = '\0';" (assignment_expression "local_23 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_24 = '0';" (assignment_expression "local_24 = '0'" identifier = (char_literal "'0'" ' character ')) ;) (goto_statement "goto LAB_0005a6ec;" goto statement_identifier ;) })) }) (else_clause "else {\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }" else (compound_statement "{\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }" { (expression_statement "iVar8 = legal_number(pcVar5,&local_30);" (assignment_expression "iVar8 = legal_number(pcVar5,&local_30)" identifier = (call_expression "legal_number(pcVar5,&local_30)" identifier (argument_list "(pcVar5,&local_30)" ( identifier , (pointer_expression "&local_30" & identifier) )))) ;) (expression_statement "puVar7 = (undefined4 *)PTR_shell_level_0014478c;" (assignment_expression "puVar7 = (undefined4 *)PTR_shell_level_0014478c" identifier = (cast_expression "(undefined4 *)PTR_shell_level_0014478c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (iVar8 == 0) goto LAB_0005a624;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0005a624;" goto statement_identifier ;)) (expression_statement "param_1 = param_1 + local_2c;" (assignment_expression "param_1 = param_1 + local_2c" identifier = (binary_expression "param_1 + local_2c" identifier + identifier)) ;) (expression_statement "*(int *)PTR_shell_level_0014478c = param_1;" (assignment_expression "*(int *)PTR_shell_level_0014478c = param_1" (pointer_expression "*(int *)PTR_shell_level_0014478c" * (cast_expression "(int *)PTR_shell_level_0014478c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (if_statement "if (param_1 < 0) goto LAB_0005a76c;" if (parenthesized_expression "(param_1 < 0)" ( (binary_expression "param_1 < 0" identifier < number_literal) )) (goto_statement "goto LAB_0005a76c;" goto statement_identifier ;)) }))) (if_statement "if (param_1 < 1000) {\n    if (param_1 < 10) goto LAB_0005a814;\n    if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }\n  }\n  else {\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }" if (parenthesized_expression "(param_1 < 1000)" ( (binary_expression "param_1 < 1000" identifier < number_literal) )) (compound_statement "{\n    if (param_1 < 10) goto LAB_0005a814;\n    if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }\n  }" { (if_statement "if (param_1 < 10) goto LAB_0005a814;" if (parenthesized_expression "(param_1 < 10)" ( (binary_expression "param_1 < 10" identifier < number_literal) )) (goto_statement "goto LAB_0005a814;" goto statement_identifier ;)) (if_statement "if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }" if (parenthesized_expression "(param_1 < 100)" ( (binary_expression "param_1 < 100" identifier < number_literal) )) (compound_statement "{\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }" { (expression_statement "local_22 = '\0';" (assignment_expression "local_22 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "cVar1 = (char)(param_1 / 10);" (assignment_expression "cVar1 = (char)(param_1 / 10)" identifier = (cast_expression "(char)(param_1 / 10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(param_1 / 10)" ( (binary_expression "param_1 / 10" identifier / number_literal) )))) ;) (expression_statement "local_24 = cVar1 + '0';" (assignment_expression "local_24 = cVar1 + '0'" identifier = (binary_expression "cVar1 + '0'" identifier + (char_literal "'0'" ' character '))) ;) (expression_statement "local_23 = (char)param_1 + cVar1 * -10 + '0';" (assignment_expression "local_23 = (char)param_1 + cVar1 * -10 + '0'" identifier = (binary_expression "(char)param_1 + cVar1 * -10 + '0'" (binary_expression "(char)param_1 + cVar1 * -10" (cast_expression "(char)param_1" ( (type_descriptor "char" primitive_type) ) identifier) + (binary_expression "cVar1 * -10" identifier * number_literal)) + (char_literal "'0'" ' character '))) ;) }) (else_clause "else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }" else (compound_statement "{\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }" { (expression_statement "local_24 = (char)(param_1 / 100) + '0';" (assignment_expression "local_24 = (char)(param_1 / 100) + '0'" identifier = (binary_expression "(char)(param_1 / 100) + '0'" (cast_expression "(char)(param_1 / 100)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(param_1 / 100)" ( (binary_expression "param_1 / 100" identifier / number_literal) ))) + (char_literal "'0'" ' character '))) ;) (expression_statement "param_1 = param_1 % 100;" (assignment_expression "param_1 = param_1 % 100" identifier = (binary_expression "param_1 % 100" identifier % number_literal)) ;) (expression_statement "iVar8 = param_1 >> 0x1f;" (assignment_expression "iVar8 = param_1 >> 0x1f" identifier = (binary_expression "param_1 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "local_30 = iVar8;" (assignment_expression "local_30 = iVar8" identifier = identifier) ;) (expression_statement "local_2c = param_1;" (assignment_expression "local_2c = param_1" identifier = identifier) ;) (expression_statement "(*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);" (call_expression "(*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10)" (parenthesized_expression "(*(code *)PTR_FUN_00145044)" ( (pointer_expression "*(code *)PTR_FUN_00145044" * (cast_expression "(code *)PTR_FUN_00145044" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8,param_1,0,10)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "local_23 = extraout_v1 + '0';" (assignment_expression "local_23 = extraout_v1 + '0'" identifier = (binary_expression "extraout_v1 + '0'" identifier + (char_literal "'0'" ' character '))) ;) (expression_statement "(*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);" (call_expression "(*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10)" (parenthesized_expression "(*(code *)PTR_FUN_00145048)" ( (pointer_expression "*(code *)PTR_FUN_00145048" * (cast_expression "(code *)PTR_FUN_00145048" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8,param_1,0,10)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "local_22 = extraout_v1_00 + '0';" (assignment_expression "local_22 = extraout_v1_00 + '0'" identifier = (binary_expression "extraout_v1_00 + '0'" identifier + (char_literal "'0'" ' character '))) ;) (expression_statement "local_21 = 0;" (assignment_expression "local_21 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }" else (compound_statement "{\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }" { (expression_statement "uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);" (assignment_expression "uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5)" identifier = (call_expression "(*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00146498)" ( (pointer_expression "*(code *)PTR_dcgettext_00146498" * (cast_expression "(code *)PTR_dcgettext_00146498" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_LAB_00144578 + 0x6f28,5)" ( number_literal , (binary_expression "PTR_LAB_00144578 + 0x6f28" identifier + number_literal) , number_literal )))) ;) (expression_statement "internal_warning(uVar6,*puVar7);" (call_expression "internal_warning(uVar6,*puVar7)" identifier (argument_list "(uVar6,*puVar7)" ( identifier , (pointer_expression "*puVar7" * identifier) ))) ;) (expression_statement "local_24 = '1';" (assignment_expression "local_24 = '1'" identifier = (char_literal "'1'" ' character ')) ;) (expression_statement "*puVar7 = 1;" (assignment_expression "*puVar7 = 1" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "local_23 = '\0';" (assignment_expression "local_23 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (labeled_statement "LAB_0005a6ec:\n  while( true ) {\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }" statement_identifier : (while_statement "while( true ) {\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }" { (expression_statement "iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);" (assignment_expression "iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0)" identifier = (call_expression "bind_variable(puVar2 + 0x6f20,&local_24,0)" identifier (argument_list "(puVar2 + 0x6f20,&local_24,0)" ( (binary_expression "puVar2 + 0x6f20" identifier + number_literal) , (pointer_expression "&local_24" & identifier) , number_literal )))) ;) (expression_statement "puVar3 = PTR_array_needs_making_00144fb8;" (assignment_expression "puVar3 = PTR_array_needs_making_00144fb8" identifier = identifier) ;) (expression_statement "param_1 = *(int *)puVar4;" (assignment_expression "param_1 = *(int *)puVar4" identifier = (pointer_expression "*(int *)puVar4" * (cast_expression "(int *)puVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;" (assignment_expression "*(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1" (pointer_expression "*(uint *)(iVar8 + 0x14)" * (cast_expression "(uint *)(iVar8 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar8 + 0x14) | 1" (pointer_expression "*(uint *)(iVar8 + 0x14)" * (cast_expression "(uint *)(iVar8 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(undefined4 *)puVar3 = 1;" (assignment_expression "*(undefined4 *)puVar3 = 1" (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if (local_1c == param_1) break;" if (parenthesized_expression "(local_1c == param_1)" ( (binary_expression "local_1c == param_1" identifier == identifier) )) (break_statement "break;" break ;)) (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 "()" ( ))) ;) (labeled_statement "LAB_0005a814:\n    local_24 = (char)param_1 + '0';" statement_identifier : (expression_statement "local_24 = (char)param_1 + '0';" (assignment_expression "local_24 = (char)param_1 + '0'" identifier = (binary_expression "(char)param_1 + '0'" (cast_expression "(char)param_1" ( (type_descriptor "char" primitive_type) ) identifier) + (char_literal "'0'" ' character '))) ;)) (expression_statement "local_23 = '\0';" (assignment_expression "local_23 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (char_literal ' character ')) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT / LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (char_literal ' character '))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) + (char_literal ' character '))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT / LIT) ))) + (char_literal ' character '))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT % LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (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 ( IDENT , IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (char_literal ' character '))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (char_literal ' character '))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , (binary_expression IDENT + LIT) , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (char_literal ' character ')) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) }))) (labeled_statement statement_identifier : (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (char_literal ' character '))) ;)) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) }))) (return_statement return ;) })))
(function_definition "void adjust_shell_level(int param_1)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  char extraout_v1;\n  char extraout_v1_00;\n  undefined4 *puVar7;\n  int iVar8;\n  int local_30;\n  int local_2c;\n  char local_24;\n  char local_23;\n  char local_22;\n  undefined1 local_21;\n  int local_1c;\n  \n  puVar4 = PTR___stack_chk_guard_001464dc;\n  puVar2 = PTR_LAB_00144578;\n  local_1c = *(int *)PTR___stack_chk_guard_001464dc;\n  pcVar5 = (char *)get_string_value(PTR_LAB_00144578 + 0x6f20);\n  if ((pcVar5 == (char *)0x0) || (*pcVar5 == '\0')) {\nLAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    local_2c = 0;\n    local_30 = 0;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }\n  }\n  else {\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }\n  if (param_1 < 1000) {\n    if (param_1 < 10) goto LAB_0005a814;\n    if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }\n  }\n  else {\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }\nLAB_0005a6ec:\n  while( true ) {\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }\n  return;\n}" (primitive_type "void") (function_declarator "adjust_shell_level(int param_1)" (identifier "adjust_shell_level") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  char extraout_v1;\n  char extraout_v1_00;\n  undefined4 *puVar7;\n  int iVar8;\n  int local_30;\n  int local_2c;\n  char local_24;\n  char local_23;\n  char local_22;\n  undefined1 local_21;\n  int local_1c;\n  \n  puVar4 = PTR___stack_chk_guard_001464dc;\n  puVar2 = PTR_LAB_00144578;\n  local_1c = *(int *)PTR___stack_chk_guard_001464dc;\n  pcVar5 = (char *)get_string_value(PTR_LAB_00144578 + 0x6f20);\n  if ((pcVar5 == (char *)0x0) || (*pcVar5 == '\0')) {\nLAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    local_2c = 0;\n    local_30 = 0;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }\n  }\n  else {\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }\n  if (param_1 < 1000) {\n    if (param_1 < 10) goto LAB_0005a814;\n    if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }\n  }\n  else {\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }\nLAB_0005a6ec:\n  while( true ) {\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }\n  return;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "char extraout_v1;" (primitive_type "char") (identifier "extraout_v1") (; ";")) (declaration "char extraout_v1_00;" (primitive_type "char") (identifier "extraout_v1_00") (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "char local_24;" (primitive_type "char") (identifier "local_24") (; ";")) (declaration "char local_23;" (primitive_type "char") (identifier "local_23") (; ";")) (declaration "char local_22;" (primitive_type "char") (identifier "local_22") (; ";")) (declaration "undefined1 local_21;" (type_identifier "undefined1") (identifier "local_21") (; ";")) (declaration "int local_1c;" (primitive_type "int") (identifier "local_1c") (; ";")) (expression_statement "puVar4 = PTR___stack_chk_guard_001464dc;" (assignment_expression "puVar4 = PTR___stack_chk_guard_001464dc" (identifier "puVar4") (= "=") (identifier "PTR___stack_chk_guard_001464dc")) (; ";")) (expression_statement "puVar2 = PTR_LAB_00144578;" (assignment_expression "puVar2 = PTR_LAB_00144578" (identifier "puVar2") (= "=") (identifier "PTR_LAB_00144578")) (; ";")) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_001464dc;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_001464dc" (identifier "local_1c") (= "=") (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")))) (; ";")) (expression_statement "pcVar5 = (char *)get_string_value(PTR_LAB_00144578 + 0x6f20);" (assignment_expression "pcVar5 = (char *)get_string_value(PTR_LAB_00144578 + 0x6f20)" (identifier "pcVar5") (= "=") (cast_expression "(char *)get_string_value(PTR_LAB_00144578 + 0x6f20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "get_string_value(PTR_LAB_00144578 + 0x6f20)" (identifier "get_string_value") (argument_list "(PTR_LAB_00144578 + 0x6f20)" (( "(") (binary_expression "PTR_LAB_00144578 + 0x6f20" (identifier "PTR_LAB_00144578") (+ "+") (number_literal "0x6f20")) () ")"))))) (; ";")) (if_statement "if ((pcVar5 == (char *)0x0) || (*pcVar5 == '\0')) {\nLAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    local_2c = 0;\n    local_30 = 0;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }\n  }\n  else {\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }" (if "if") (parenthesized_expression "((pcVar5 == (char *)0x0) || (*pcVar5 == '\0'))" (( "(") (binary_expression "(pcVar5 == (char *)0x0) || (*pcVar5 == '\0')" (parenthesized_expression "(pcVar5 == (char *)0x0)" (( "(") (binary_expression "pcVar5 == (char *)0x0" (identifier "pcVar5") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(*pcVar5 == '\0')" (( "(") (binary_expression "*pcVar5 == '\0'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\nLAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    local_2c = 0;\n    local_30 = 0;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }\n  }" ({ "{") (labeled_statement "LAB_0005a624:\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;" (statement_identifier "LAB_0005a624") (: ":") (expression_statement "puVar7 = (undefined4 *)PTR_shell_level_0014478c;" (assignment_expression "puVar7 = (undefined4 *)PTR_shell_level_0014478c" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)PTR_shell_level_0014478c" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_shell_level_0014478c"))) (; ";"))) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)PTR_shell_level_0014478c = param_1;" (assignment_expression "*(int *)PTR_shell_level_0014478c = param_1" (pointer_expression "*(int *)PTR_shell_level_0014478c" (* "*") (cast_expression "(int *)PTR_shell_level_0014478c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_shell_level_0014478c"))) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (param_1 < 0) {\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }" (if "if") (parenthesized_expression "(param_1 < 0)" (( "(") (binary_expression "param_1 < 0" (identifier "param_1") (< "<") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0005a76c:\n      *puVar7 = 0;\n      local_23 = '\0';\n      local_24 = '0';\n      goto LAB_0005a6ec;\n    }" ({ "{") (labeled_statement "LAB_0005a76c:\n      *puVar7 = 0;" (statement_identifier "LAB_0005a76c") (: ":") (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "local_23 = '\0';" (assignment_expression "local_23 = '\0'" (identifier "local_23") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_24 = '0';" (assignment_expression "local_24 = '0'" (identifier "local_24") (= "=") (char_literal "'0'" (' "'") (character "0") (' "'"))) (; ";")) (goto_statement "goto LAB_0005a6ec;" (goto "goto") (statement_identifier "LAB_0005a6ec") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }" (else "else") (compound_statement "{\n    iVar8 = legal_number(pcVar5,&local_30);\n    puVar7 = (undefined4 *)PTR_shell_level_0014478c;\n    if (iVar8 == 0) goto LAB_0005a624;\n    param_1 = param_1 + local_2c;\n    *(int *)PTR_shell_level_0014478c = param_1;\n    if (param_1 < 0) goto LAB_0005a76c;\n  }" ({ "{") (expression_statement "iVar8 = legal_number(pcVar5,&local_30);" (assignment_expression "iVar8 = legal_number(pcVar5,&local_30)" (identifier "iVar8") (= "=") (call_expression "legal_number(pcVar5,&local_30)" (identifier "legal_number") (argument_list "(pcVar5,&local_30)" (( "(") (identifier "pcVar5") (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")")))) (; ";")) (expression_statement "puVar7 = (undefined4 *)PTR_shell_level_0014478c;" (assignment_expression "puVar7 = (undefined4 *)PTR_shell_level_0014478c" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)PTR_shell_level_0014478c" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_shell_level_0014478c"))) (; ";")) (if_statement "if (iVar8 == 0) goto LAB_0005a624;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0005a624;" (goto "goto") (statement_identifier "LAB_0005a624") (; ";"))) (expression_statement "param_1 = param_1 + local_2c;" (assignment_expression "param_1 = param_1 + local_2c" (identifier "param_1") (= "=") (binary_expression "param_1 + local_2c" (identifier "param_1") (+ "+") (identifier "local_2c"))) (; ";")) (expression_statement "*(int *)PTR_shell_level_0014478c = param_1;" (assignment_expression "*(int *)PTR_shell_level_0014478c = param_1" (pointer_expression "*(int *)PTR_shell_level_0014478c" (* "*") (cast_expression "(int *)PTR_shell_level_0014478c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_shell_level_0014478c"))) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (param_1 < 0) goto LAB_0005a76c;" (if "if") (parenthesized_expression "(param_1 < 0)" (( "(") (binary_expression "param_1 < 0" (identifier "param_1") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_0005a76c;" (goto "goto") (statement_identifier "LAB_0005a76c") (; ";"))) (} "}")))) (if_statement "if (param_1 < 1000) {\n    if (param_1 < 10) goto LAB_0005a814;\n    if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }\n  }\n  else {\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }" (if "if") (parenthesized_expression "(param_1 < 1000)" (( "(") (binary_expression "param_1 < 1000" (identifier "param_1") (< "<") (number_literal "1000")) () ")")) (compound_statement "{\n    if (param_1 < 10) goto LAB_0005a814;\n    if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }\n  }" ({ "{") (if_statement "if (param_1 < 10) goto LAB_0005a814;" (if "if") (parenthesized_expression "(param_1 < 10)" (( "(") (binary_expression "param_1 < 10" (identifier "param_1") (< "<") (number_literal "10")) () ")")) (goto_statement "goto LAB_0005a814;" (goto "goto") (statement_identifier "LAB_0005a814") (; ";"))) (if_statement "if (param_1 < 100) {\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }\n    else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }" (if "if") (parenthesized_expression "(param_1 < 100)" (( "(") (binary_expression "param_1 < 100" (identifier "param_1") (< "<") (number_literal "100")) () ")")) (compound_statement "{\n      local_22 = '\0';\n      cVar1 = (char)(param_1 / 10);\n      local_24 = cVar1 + '0';\n      local_23 = (char)param_1 + cVar1 * -10 + '0';\n    }" ({ "{") (expression_statement "local_22 = '\0';" (assignment_expression "local_22 = '\0'" (identifier "local_22") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "cVar1 = (char)(param_1 / 10);" (assignment_expression "cVar1 = (char)(param_1 / 10)" (identifier "cVar1") (= "=") (cast_expression "(char)(param_1 / 10)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(param_1 / 10)" (( "(") (binary_expression "param_1 / 10" (identifier "param_1") (/ "/") (number_literal "10")) () ")")))) (; ";")) (expression_statement "local_24 = cVar1 + '0';" (assignment_expression "local_24 = cVar1 + '0'" (identifier "local_24") (= "=") (binary_expression "cVar1 + '0'" (identifier "cVar1") (+ "+") (char_literal "'0'" (' "'") (character "0") (' "'")))) (; ";")) (expression_statement "local_23 = (char)param_1 + cVar1 * -10 + '0';" (assignment_expression "local_23 = (char)param_1 + cVar1 * -10 + '0'" (identifier "local_23") (= "=") (binary_expression "(char)param_1 + cVar1 * -10 + '0'" (binary_expression "(char)param_1 + cVar1 * -10" (cast_expression "(char)param_1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_1")) (+ "+") (binary_expression "cVar1 * -10" (identifier "cVar1") (* "*") (number_literal "-10"))) (+ "+") (char_literal "'0'" (' "'") (character "0") (' "'")))) (; ";")) (} "}")) (else_clause "else {\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }" (else "else") (compound_statement "{\n      local_24 = (char)(param_1 / 100) + '0';\n      param_1 = param_1 % 100;\n      iVar8 = param_1 >> 0x1f;\n      local_30 = iVar8;\n      local_2c = param_1;\n      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);\n      local_23 = extraout_v1 + '0';\n      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);\n      local_22 = extraout_v1_00 + '0';\n      local_21 = 0;\n    }" ({ "{") (expression_statement "local_24 = (char)(param_1 / 100) + '0';" (assignment_expression "local_24 = (char)(param_1 / 100) + '0'" (identifier "local_24") (= "=") (binary_expression "(char)(param_1 / 100) + '0'" (cast_expression "(char)(param_1 / 100)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(param_1 / 100)" (( "(") (binary_expression "param_1 / 100" (identifier "param_1") (/ "/") (number_literal "100")) () ")"))) (+ "+") (char_literal "'0'" (' "'") (character "0") (' "'")))) (; ";")) (expression_statement "param_1 = param_1 % 100;" (assignment_expression "param_1 = param_1 % 100" (identifier "param_1") (= "=") (binary_expression "param_1 % 100" (identifier "param_1") (% "%") (number_literal "100"))) (; ";")) (expression_statement "iVar8 = param_1 >> 0x1f;" (assignment_expression "iVar8 = param_1 >> 0x1f" (identifier "iVar8") (= "=") (binary_expression "param_1 >> 0x1f" (identifier "param_1") (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "local_30 = iVar8;" (assignment_expression "local_30 = iVar8" (identifier "local_30") (= "=") (identifier "iVar8")) (; ";")) (expression_statement "local_2c = param_1;" (assignment_expression "local_2c = param_1" (identifier "local_2c") (= "=") (identifier "param_1")) (; ";")) (expression_statement "(*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);" (call_expression "(*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10)" (parenthesized_expression "(*(code *)PTR_FUN_00145044)" (( "(") (pointer_expression "*(code *)PTR_FUN_00145044" (* "*") (cast_expression "(code *)PTR_FUN_00145044" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_00145044"))) () ")")) (argument_list "(iVar8,param_1,0,10)" (( "(") (identifier "iVar8") (, ",") (identifier "param_1") (, ",") (number_literal "0") (, ",") (number_literal "10") () ")"))) (; ";")) (expression_statement "local_23 = extraout_v1 + '0';" (assignment_expression "local_23 = extraout_v1 + '0'" (identifier "local_23") (= "=") (binary_expression "extraout_v1 + '0'" (identifier "extraout_v1") (+ "+") (char_literal "'0'" (' "'") (character "0") (' "'")))) (; ";")) (expression_statement "(*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);" (call_expression "(*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10)" (parenthesized_expression "(*(code *)PTR_FUN_00145048)" (( "(") (pointer_expression "*(code *)PTR_FUN_00145048" (* "*") (cast_expression "(code *)PTR_FUN_00145048" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_00145048"))) () ")")) (argument_list "(iVar8,param_1,0,10)" (( "(") (identifier "iVar8") (, ",") (identifier "param_1") (, ",") (number_literal "0") (, ",") (number_literal "10") () ")"))) (; ";")) (expression_statement "local_22 = extraout_v1_00 + '0';" (assignment_expression "local_22 = extraout_v1_00 + '0'" (identifier "local_22") (= "=") (binary_expression "extraout_v1_00 + '0'" (identifier "extraout_v1_00") (+ "+") (char_literal "'0'" (' "'") (character "0") (' "'")))) (; ";")) (expression_statement "local_21 = 0;" (assignment_expression "local_21 = 0" (identifier "local_21") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }" (else "else") (compound_statement "{\n    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);\n    internal_warning(uVar6,*puVar7);\n    local_24 = '1';\n    *puVar7 = 1;\n    local_23 = '\0';\n  }" ({ "{") (expression_statement "uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);" (assignment_expression "uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5)" (identifier "uVar6") (= "=") (call_expression "(*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00146498)" (( "(") (pointer_expression "*(code *)PTR_dcgettext_00146498" (* "*") (cast_expression "(code *)PTR_dcgettext_00146498" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_dcgettext_00146498"))) () ")")) (argument_list "(0,PTR_LAB_00144578 + 0x6f28,5)" (( "(") (number_literal "0") (, ",") (binary_expression "PTR_LAB_00144578 + 0x6f28" (identifier "PTR_LAB_00144578") (+ "+") (number_literal "0x6f28")) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "internal_warning(uVar6,*puVar7);" (call_expression "internal_warning(uVar6,*puVar7)" (identifier "internal_warning") (argument_list "(uVar6,*puVar7)" (( "(") (identifier "uVar6") (, ",") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) () ")"))) (; ";")) (expression_statement "local_24 = '1';" (assignment_expression "local_24 = '1'" (identifier "local_24") (= "=") (char_literal "'1'" (' "'") (character "1") (' "'"))) (; ";")) (expression_statement "*puVar7 = 1;" (assignment_expression "*puVar7 = 1" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (number_literal "1")) (; ";")) (expression_statement "local_23 = '\0';" (assignment_expression "local_23 = '\0'" (identifier "local_23") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}")))) (labeled_statement "LAB_0005a6ec:\n  while( true ) {\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }" (statement_identifier "LAB_0005a6ec") (: ":") (while_statement "while( true ) {\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);\n    puVar3 = PTR_array_needs_making_00144fb8;\n    param_1 = *(int *)puVar4;\n    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;\n    *(undefined4 *)puVar3 = 1;\n    if (local_1c == param_1) break;\n    (*(code *)PTR___stack_chk_fail_00146488)();\nLAB_0005a814:\n    local_24 = (char)param_1 + '0';\n    local_23 = '\0';\n  }" ({ "{") (expression_statement "iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);" (assignment_expression "iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0)" (identifier "iVar8") (= "=") (call_expression "bind_variable(puVar2 + 0x6f20,&local_24,0)" (identifier "bind_variable") (argument_list "(puVar2 + 0x6f20,&local_24,0)" (( "(") (binary_expression "puVar2 + 0x6f20" (identifier "puVar2") (+ "+") (number_literal "0x6f20")) (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "puVar3 = PTR_array_needs_making_00144fb8;" (assignment_expression "puVar3 = PTR_array_needs_making_00144fb8" (identifier "puVar3") (= "=") (identifier "PTR_array_needs_making_00144fb8")) (; ";")) (expression_statement "param_1 = *(int *)puVar4;" (assignment_expression "param_1 = *(int *)puVar4" (identifier "param_1") (= "=") (pointer_expression "*(int *)puVar4" (* "*") (cast_expression "(int *)puVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4")))) (; ";")) (expression_statement "*(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;" (assignment_expression "*(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1" (pointer_expression "*(uint *)(iVar8 + 0x14)" (* "*") (cast_expression "(uint *)(iVar8 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "*(uint *)(iVar8 + 0x14) | 1" (pointer_expression "*(uint *)(iVar8 + 0x14)" (* "*") (cast_expression "(uint *)(iVar8 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")")))) (| "|") (number_literal "1"))) (; ";")) (expression_statement "*(undefined4 *)puVar3 = 1;" (assignment_expression "*(undefined4 *)puVar3 = 1" (pointer_expression "*(undefined4 *)puVar3" (* "*") (cast_expression "(undefined4 *)puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) (= "=") (number_literal "1")) (; ";")) (if_statement "if (local_1c == param_1) break;" (if "if") (parenthesized_expression "(local_1c == param_1)" (( "(") (binary_expression "local_1c == param_1" (identifier "local_1c") (== "==") (identifier "param_1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (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 "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_0005a814:\n    local_24 = (char)param_1 + '0';" (statement_identifier "LAB_0005a814") (: ":") (expression_statement "local_24 = (char)param_1 + '0';" (assignment_expression "local_24 = (char)param_1 + '0'" (identifier "local_24") (= "=") (binary_expression "(char)param_1 + '0'" (cast_expression "(char)param_1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_1")) (+ "+") (char_literal "'0'" (' "'") (character "0") (' "'")))) (; ";"))) (expression_statement "local_23 = '\0';" (assignment_expression "local_23 = '\0'" (identifier "local_23") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(int var_4)

{
  char var_7;
  type_1 *var_12;
  type_1 *puVar3;
  type_1 *puVar4;
  int var_13;
  char *var_3;
  type_2 *pSVar7;
  char var_8;
  char var_9;
  int var_6;
  type_3 *puVar9;
  int iVar10;
  type_4 old_level;
  char new_level [5];
  
  puVar4 = PTR___stack_chk_guard_001464dc;
  var_12 = var_2;
  var_13 = *(int *)PTR___stack_chk_guard_001464dc;
  var_3 = var_1(var_2 + 0x6f20);
  if ((var_3 == (char *)0x0) || (*var_3 == '\0')) {
LAB_0005a624:
    puVar9 = (type_3 *)PTR_shell_level_0014478c;
    old_level._4_4_ = 0;
    old_level._0_4_ = 0;
    *(int *)PTR_shell_level_0014478c = var_4;
    if (var_4 < 0) {
LAB_0005a76c:
      *puVar9 = 0;
      new_level[1] = '\0';
      new_level[0] = '0';
      goto LAB_0005a6ec;
    }
  }
  else {
    var_6 = var_5(var_3,&old_level);
    puVar9 = (type_3 *)PTR_shell_level_0014478c;
    if (var_6 == 0) goto LAB_0005a624;
    var_4 = var_4 + old_level._4_4_;
    *(int *)PTR_shell_level_0014478c = var_4;
    if (var_4 < 0) goto LAB_0005a76c;
  }
  if (var_4 < 1000) {
    if (var_4 < 10) goto LAB_0005a814;
    if (var_4 < 100) {
      new_level[2] = '\0';
      var_7 = (char)(var_4 / 10);
      new_level[0] = var_7 + '0';
      new_level[1] = (char)var_4 + var_7 * -10 + '0';
    }
    else {
      new_level[0] = (char)(var_4 / 100) + '0';
      var_6 = var_4 % 100;
      iVar10 = var_6 >> 0x1f;
      old_level._0_4_ = iVar10;
      old_level._4_4_ = var_6;
      (*(type_5 *)PTR___divdi3_00145044)(iVar10,var_6,0,10);
      new_level[1] = var_8 + '0';
      (*(type_5 *)PTR___moddi3_00145048)(iVar10,var_6,0,10);
      new_level[2] = var_9 + '0';
      new_level[3] = '\0';
    }
  }
  else {
    var_3 = (char *)(*(type_5 *)PTR_dcgettext_00146498)(0,var_2 + 0x6f28,5);
    var_10(var_3,*puVar9);
    new_level[0] = '1';
    *puVar9 = 1;
    new_level[1] = '\0';
  }
LAB_0005a6ec:
  while( true ) {
    pSVar7 = var_11(var_12 + 0x6f20,new_level,0);
    puVar3 = PTR_array_needs_making_00144fb8;
    var_4 = *(int *)puVar4;
    pSVar7->attributes = pSVar7->attributes | 1;
    *(type_3 *)puVar3 = 1;
    if (var_13 == var_4) break;
    (*(type_5 *)PTR___stack_chk_fail_00146488)();
LAB_0005a814:
    new_level[0] = (char)var_4 + '0';
    new_level[1] = '\0';
  }
  return;
}


(translation_unit (function_definition type: (primitive_type) 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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (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))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (character)))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (char_literal (character))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))) right: (char_literal (character)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (char_literal (character))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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 (identifier) (identifier) (number_literal) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (char_literal (character))))) (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 (identifier) (identifier) (number_literal) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (char_literal (character))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (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 (number_literal) (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (character)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence))))))) (labeled_statement label: (statement_identifier) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (identifier)) (number_literal))))) (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))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_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))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (character)))))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence))))))) (return_statement))))

void MASKED(int param_1)

{
  char cVar1;
  undefined *puVar2;
  undefined *puVar3;
  undefined *puVar4;
  char *pcVar5;
  undefined4 uVar6;
  char extraout_v1;
  char extraout_v1_00;
  undefined4 *puVar7;
  int iVar8;
  int local_30;
  int local_2c;
  char local_24;
  char local_23;
  char local_22;
  undefined1 local_21;
  int local_1c;
  
  puVar4 = PTR___stack_chk_guard_001464dc;
  puVar2 = PTR_LAB_00144578;
  local_1c = *(int *)PTR___stack_chk_guard_001464dc;
  pcVar5 = (char *)get_string_value(PTR_LAB_00144578 + 0x6f20);
  if ((pcVar5 == (char *)0x0) || (*pcVar5 == '\0')) {
LAB_0005a624:
    puVar7 = (undefined4 *)PTR_shell_level_0014478c;
    local_2c = 0;
    local_30 = 0;
    *(int *)PTR_shell_level_0014478c = param_1;
    if (param_1 < 0) {
LAB_0005a76c:
      *puVar7 = 0;
      local_23 = '\0';
      local_24 = '0';
      goto LAB_0005a6ec;
    }
  }
  else {
    iVar8 = legal_number(pcVar5,&local_30);
    puVar7 = (undefined4 *)PTR_shell_level_0014478c;
    if (iVar8 == 0) goto LAB_0005a624;
    param_1 = param_1 + local_2c;
    *(int *)PTR_shell_level_0014478c = param_1;
    if (param_1 < 0) goto LAB_0005a76c;
  }
  if (param_1 < 1000) {
    if (param_1 < 10) goto LAB_0005a814;
    if (param_1 < 100) {
      local_22 = '\0';
      cVar1 = (char)(param_1 / 10);
      local_24 = cVar1 + '0';
      local_23 = (char)param_1 + cVar1 * -10 + '0';
    }
    else {
      local_24 = (char)(param_1 / 100) + '0';
      param_1 = param_1 % 100;
      iVar8 = param_1 >> 0x1f;
      local_30 = iVar8;
      local_2c = param_1;
      (*(code *)PTR_FUN_00145044)(iVar8,param_1,0,10);
      local_23 = extraout_v1 + '0';
      (*(code *)PTR_FUN_00145048)(iVar8,param_1,0,10);
      local_22 = extraout_v1_00 + '0';
      local_21 = 0;
    }
  }
  else {
    uVar6 = (*(code *)PTR_dcgettext_00146498)(0,PTR_LAB_00144578 + 0x6f28,5);
    internal_warning(uVar6,*puVar7);
    local_24 = '1';
    *puVar7 = 1;
    local_23 = '\0';
  }
LAB_0005a6ec:
  while( true ) {
    iVar8 = bind_variable(puVar2 + 0x6f20,&local_24,0);
    puVar3 = PTR_array_needs_making_00144fb8;
    param_1 = *(int *)puVar4;
    *(uint *)(iVar8 + 0x14) = *(uint *)(iVar8 + 0x14) | 1;
    *(undefined4 *)puVar3 = 1;
    if (local_1c == param_1) break;
    (*(code *)PTR___stack_chk_fail_00146488)();
LAB_0005a814:
    local_24 = (char)param_1 + '0';
    local_23 = '\0';
  }
  return;
}

