
int describe_command(char *command,char *path,int describe_command_verbose)

{
  undefined *puVar1;
  int iVar2;
  char **ppcVar3;
  alias **ppaVar4;
  int iVar5;
  int iVar6;
  FILE *file;
  undefined *puVar7;
  char *pcVar8;
  alias *paVar9;
  param pVar10;
  cmdentry *apcStack_3c [2];
  cmdentry entry;
  
  puVar1 = PTR___stack_chk_guard_0012b14c;
  paVar9 = (alias *)PTR_stdout_0012ae40;
  iVar2 = *(int *)PTR___stack_chk_guard_0012b14c;
  if (path == (char *)0x0) {
    path = (char *)(*(int *)(*(int *)PTR_ash_ptr_to_globals_var_0012a850 + 0xf0) + 5);
  }
  apcStack_3c[0] = (cmdentry *)path;
  if (describe_command_verbose == 0) {
    ppcVar3 = findkwd(command);
    paVar9 = (alias *)PTR_stdout_0012ae40;
    if (ppcVar3 != (char **)0x0) {
      outstr(command,*(FILE **)PTR_stdout_0012ae40);
      goto LAB_0008070c;
    }
    ppaVar4 = __lookupalias(command);
    paVar9 = *ppaVar4;
    if (paVar9 != (alias *)0x0) {
      outstr(PTR_UINT_0012a18c + 0x7efc,*(FILE **)PTR_stdout_0012ae40);
      file = (FILE *)paVar9->name;
      pcVar8 = single_quote(paVar9->val);
      out1fmt(PTR_UINT_0012a18c + 0x7620,file,pcVar8);
      iVar6 = *(int *)puVar1;
      iVar5 = 0;
joined_r0x00080680:
      if (iVar2 != iVar6) goto LAB_0008073c;
      return iVar5;
    }
    file = (FILE *)&entry;
    find_command(command,(cmdentry *)file,(int)&entry.u,&SUB_00000002,(cmdentry *)path);
    paVar9 = (alias *)PTR_stdout_0012ae40;
    if (entry.cmdtype == '\x01') goto LAB_000806f4;
    if (entry.cmdtype == '\x02') {
      outstr(command,*(FILE **)PTR_stdout_0012ae40);
      goto LAB_0008070c;
    }
    if (entry.cmdtype != '\0') {
      iVar6 = *(int *)puVar1;
      iVar5 = 0x7f;
      goto joined_r0x00080680;
    }
LAB_00080778:
    pcVar8 = command;
    if (-1 < entry.u.index) {
      iVar5 = *(int *)PTR_ash_ptr_to_globals_memstack_0012a858;
      pVar10 = entry.u;
      do {
        pcVar8 = path_advance((char **)apcStack_3c,command);
        pVar10.cmd = (builtincmd *)(pVar10.index + -1);
        iVar6 = *(int *)(iVar5 + 4);
        *(char **)(iVar5 + 4) = pcVar8;
        *(int *)(iVar5 + 0xc) = *(int *)(iVar5 + 0xc) + (iVar6 - (int)pcVar8);
      } while (pVar10.index != -1);
    }
    if (describe_command_verbose != 0) {
      out1fmt(PTR_UINT_0012a18c + 0x7f18,pcVar8);
      goto LAB_0008070c;
    }
  }
  else {
    outstr(command,*(FILE **)PTR_stdout_0012ae40);
    ppcVar3 = findkwd(command);
    if (ppcVar3 == (char **)0x0) {
      ppaVar4 = __lookupalias(command);
      if (*ppaVar4 != (alias *)0x0) {
        out1fmt(PTR_UINT_0012a18c + 0x7f04,(*ppaVar4)->val);
        goto LAB_0008070c;
      }
      find_command(command,&entry,(int)&entry.u,&SUB_00000002,apcStack_3c[0]);
      if (entry.cmdtype == '\x01') {
LAB_000806f4:
        file = (FILE *)paVar9->next;
        if (describe_command_verbose != 0) goto LAB_00080744;
        outstr(command,file);
        goto LAB_0008070c;
      }
      if (entry.cmdtype == '\x02') {
        if ((*(entry.u.cmd)->name & 1U) == 0) {
          puVar7 = (undefined *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c);
        }
        else {
          puVar7 = PTR_UINT_0012a18c + 0x7ef0;
        }
        out1fmt(PTR_UINT_0012a18c + 0x7f30,puVar7);
        goto LAB_0008070c;
      }
      if (entry.cmdtype != '\0') {
        file = *(FILE **)paVar9;
        outstr(PTR_UINT_0012a18c + 0x7f48,file);
        iVar5 = 0x7f;
        iVar6 = *(int *)puVar1;
        goto joined_r0x00080680;
      }
      goto LAB_00080778;
    }
    pcVar8 = PTR_UINT_0012a18c + 0x7edc;
  }
  outstr(pcVar8,(FILE *)paVar9->next);
LAB_0008070c:
  while( true ) {
    file = (FILE *)paVar9->next;
    outstr(PTR_UINT_0012a18c + -0xea0,file);
    if (iVar2 == *(int *)puVar1) break;
LAB_0008073c:
    (*(code *)PTR___stack_chk_fail_0012b0c8)();
LAB_00080744:
    outstr(PTR_UINT_0012a18c + 0x7f20,file);
  }
  return 0;
}



undefined4 FUN_000804fc(int param_1,int param_2,int param_3)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  int iVar4;
  undefined4 uVar5;
  int *piVar6;
  undefined4 *puVar7;
  int iVar8;
  undefined4 *puVar9;
  int in_t9;
  code *pcVar10;
  int local_3c [2];
  char local_34 [4];
  undefined4 *local_30;
  int local_2c;
  
  piVar6 = *(int **)(in_t9 + 0xaac50);
  local_2c = *piVar6;
  if (param_2 == 0) {
    param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;
  }
  local_3c[0] = param_2;
  if (param_3 == 0) {
    iVar1 = FUN_0006d194(param_1);
    if (iVar1 != 0) {
      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);
      FUN_00071ae0(param_1,*puVar7);
      goto LAB_0008070c;
    }
    puVar7 = (undefined4 *)FUN_0006cfd8(param_1);
    puVar7 = (undefined4 *)*puVar7;
    if (puVar7 != (undefined4 *)0x0) {
      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));
      uVar5 = puVar7[1];
      uVar2 = FUN_00073c90(puVar7[2]);
      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);
      if (local_2c != *piVar6) goto LAB_00080738;
      return 0;
    }
    FUN_0007fe58(param_1,local_34,&local_30,2,param_2);
    if (local_34[0] == '\x01') {
      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);
LAB_000806f4:
      if (param_3 != 0) goto LAB_00080744;
      FUN_00071ae0(param_1,*puVar7);
      goto LAB_0008070c;
    }
    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);
    if (local_34[0] == '\x02') {
      FUN_00071ae0(param_1,*puVar7);
      goto LAB_0008070c;
    }
    if (local_34[0] != '\0') {
      if (local_2c == *piVar6) {
        return 0x7f;
      }
      pcVar10 = *(code **)(in_t9 + 0xaabcc);
      goto LAB_0008073c;
    }
    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);
LAB_00080778:
    iVar1 = param_1;
    if (-1 < (int)local_30) {
      iVar8 = **(int **)(in_t9 + 0xaa35c);
      puVar9 = local_30;
      do {
        iVar1 = FUN_00075108(local_3c,param_1);
        puVar9 = (undefined4 *)((int)puVar9 + -1);
        iVar4 = *(int *)(iVar8 + 4);
        *(int *)(iVar8 + 4) = iVar1;
        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);
      } while (puVar9 != (undefined4 *)0xffffffff);
    }
    if (param_3 != 0) {
      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);
      goto LAB_0008070c;
    }
  }
  else {
    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);
    FUN_00071ae0(param_1,*puVar7);
    iVar1 = FUN_0006d194(param_1);
    if (iVar1 == 0) {
      piVar3 = (int *)FUN_0006cfd8(param_1);
      if (*piVar3 != 0) {
        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));
        goto LAB_0008070c;
      }
      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);
      if (local_34[0] == '\x01') goto LAB_000806f4;
      if (local_34[0] == '\x02') {
        if ((*(byte *)*local_30 & 1) == 0) {
          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;
        }
        else {
          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;
        }
        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);
        goto LAB_0008070c;
      }
      if (local_34[0] != '\0') {
        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);
        if (local_2c == *piVar6) {
          return 0x7f;
        }
        pcVar10 = *(code **)(in_t9 + 0xaabcc);
        goto LAB_0008073c;
      }
      goto LAB_00080778;
    }
    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;
  }
  FUN_00071ae0(iVar1,*puVar7);
LAB_0008070c:
  while (FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6) {
LAB_00080738:
    pcVar10 = *(code **)(in_t9 + 0xaabcc);
LAB_0008073c:
    (*pcVar10)();
LAB_00080744:
    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);
  }
  return 0;
}


lui gp,0xb
addiu gp,gp,0x1c54
addu gp,gp,t9
addiu sp,sp,-0x60
sw s3,0x44(sp)
lw s3,-0x7004(gp)
sw gp,0x18(sp)
sw s2,0x40(sp)
or s2,a2,zero
sw s1,0x3c(sp)
or s1,a0,zero
sw s0,0x38(sp)
or s0,a1,zero
sw ra,0x5c(sp)
sw s8,0x58(sp)
sw s7,0x54(sp)
sw s6,0x50(sp)
sw s5,0x4c(sp)
sw s4,0x48(sp)
sw a1,0x24(sp)
lw v0,0x0(s3)
sw v0,0x34(sp)
bne a1,zero,0x00080568
_lw v0,-0x7900(gp)
lw v0,0x0(v0)
lw s0,0xf0(v0)
addiu s0,s0,0x5
beq s2,zero,0x000805c8
_sw s0,0x24(sp)
lw s4,-0x7310(gp)
or a0,s1,zero
lw s0,-0x793c(gp)
addiu s0,s0,0x1ae0
or t9,s0,zero
bal 0x00071ae0
_lw a1,0x0(s4)
lw gp,0x18(sp)
lw t9,-0x793c(gp)
addiu t9,t9,-0x2e6c
bal 0x0006d194
_or a0,s1,zero
beq v0,zero,0x00080838
_lw gp,0x18(sp)
lw s1,-0x7fc4(gp)
addiu s1,s1,0x7edc
lw a1,0x0(s4)
or t9,s0,zero
bal 0x00071ae0
_or a0,s1,zero
b 0x0008070c
_lw gp,0x18(sp)
lw t9,-0x793c(gp)
addiu t9,t9,-0x2e6c
bal 0x0006d194
_or a0,s1,zero
beq v0,zero,0x00080604
_lw gp,0x18(sp)
lw s4,-0x7310(gp)
or a0,s1,zero
lw s0,-0x793c(gp)
addiu s0,s0,0x1ae0
or t9,s0,zero
bal 0x00071ae0
_lw a1,0x0(s4)
b 0x0008070c
_lw gp,0x18(sp)
lw t9,-0x793c(gp)
addiu t9,t9,-0x3028
bal 0x0006cfd8
_or a0,s1,zero
lw s4,0x0(v0)
beq s4,zero,0x000806b8
_lw gp,0x18(sp)
lw v0,-0x7310(gp)
lw a0,-0x7fc4(gp)
lw t9,-0x793c(gp)
lw a1,0x0(v0)
addiu t9,t9,0x1ae0
bal 0x00071ae0
_addiu a0,a0,0x7efc
lw gp,0x18(sp)
lw a0,0x8(s4)
lw t9,-0x793c(gp)
addiu t9,t9,0x3c90
bal 0x00073c90
_lw s0,0x4(s4)
or a1,s0,zero
lw gp,0x18(sp)
or a2,v0,zero
lw a0,-0x7fc4(gp)
lw t9,-0x793c(gp)
addiu t9,t9,-0x14c8
bal 0x0006eb38
_addiu a0,a0,0x7620
or v0,s2,zero
lw a0,0x34(sp)
lw v1,0x0(s3)
bne a0,v1,0x00080738
_lw gp,0x18(sp)
lw ra,0x5c(sp)
lw s8,0x58(sp)
lw s7,0x54(sp)
lw s6,0x50(sp)
lw s5,0x4c(sp)
lw s4,0x48(sp)
lw s3,0x44(sp)
lw s2,0x40(sp)
lw s1,0x3c(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x60
lw t9,-0x78a4(gp)
li a3,0x2
addiu a2,sp,0x30
sw s0,0x10(sp)
addiu a1,sp,0x2c
addiu t9,t9,-0x1a8
bal 0x0007fe58
_or a0,s1,zero
li v1,0x1
lb v0,0x2c(sp)
bne v0,v1,0x0008075c
_lw gp,0x18(sp)
lw s0,-0x793c(gp)
lw s4,-0x7310(gp)
addiu s0,s0,0x1ae0
bne s2,zero,0x00080744
_lw a1,0x0(s4)
or t9,s0,zero
bal 0x00071ae0
_or a0,s1,zero
lw gp,0x18(sp)
lw a0,-0x7fc4(gp)
or t9,s0,zero
lw a1,0x0(s4)
or s2,zero,zero
bal 0x00071ae0
_addiu a0,a0,-0xea0
or v0,s2,zero
lw a0,0x34(sp)
lw v1,0x0(s3)
beq a0,v1,0x00080688
_lw gp,0x18(sp)
lw t9,-0x7088(gp)
jalr t9
_nop
lw a0,-0x7fc4(gp)
or t9,s0,zero
bal 0x00071ae0
_addiu a0,a0,0x7f20
b 0x0008070c
_lw gp,0x18(sp)
li v1,0x2
beq v0,v1,0x000807fc
_lw s4,-0x7310(gp)
bne v0,zero,0x0008081c
_lw s0,-0x793c(gp)
lw s4,-0x7310(gp)
addiu s0,s0,0x1ae0
lw s6,0x30(sp)
bltz s6,0x000807d8
_lw v0,-0x78f8(gp)
addiu a2,sp,0x24
lw s7,-0x793c(gp)
li s8,-0x1
lw s5,0x0(v0)
addiu s7,s7,0x5108
or a0,a2,zero
sw a2,0x20(sp)
or t9,s7,zero
bal 0x00075108
_or a1,s1,zero
addiu s6,s6,-0x1
lw a0,0x4(s5)
lw v1,0xc(s5)
lw gp,0x18(sp)
subu a0,a0,v0
lw a2,0x20(sp)
sw v0,0x4(s5)
addu v1,v1,a0
bne s6,s8,0x00080798
_sw v1,0xc(s5)
or s1,v0,zero
beq s2,zero,0x000805b0
_or a1,s1,zero
lw a0,-0x7fc4(gp)
lw t9,-0x793c(gp)
addiu t9,t9,-0x14c8
bal 0x0006eb38
_addiu a0,a0,0x7f18
b 0x0008070c
_lw gp,0x18(sp)
or a0,s1,zero
lw s0,-0x793c(gp)
addiu s0,s0,0x1ae0
or t9,s0,zero
bal 0x00071ae0
_lw a1,0x0(s4)
b 0x0008070c
_lw gp,0x18(sp)
lw a0,0x34(sp)
li s2,0x7f
lw v1,0x0(s3)
beq a0,v1,0x00080688
_or v0,s2,zero
b 0x0008073c
_lw t9,-0x7088(gp)
lw t9,-0x793c(gp)
addiu t9,t9,-0x3028
bal 0x0006cfd8
_or a0,s1,zero
lw v0,0x0(v0)
beq v0,zero,0x00080874
_lw gp,0x18(sp)
lw a0,-0x7fc4(gp)
lw t9,-0x793c(gp)
lw a1,0x8(v0)
addiu t9,t9,-0x14c8
bal 0x0006eb38
_addiu a0,a0,0x7f04
b 0x0008070c
_lw gp,0x18(sp)
lw t9,-0x78a4(gp)
li a3,0x2
lw v0,0x24(sp)
addiu a2,sp,0x30
addiu a1,sp,0x2c
addiu t9,t9,-0x1a8
sw v0,0x10(sp)
bal 0x0007fe58
_or a0,s1,zero
li v1,0x1
lb v0,0x2c(sp)
beq v0,v1,0x000806f4
_lw gp,0x18(sp)
li v1,0x2
beq v0,v1,0x000808ec
_nop
beq v0,zero,0x00080778
_lw a0,-0x7fc4(gp)
or t9,s0,zero
lw a1,0x0(s4)
li s2,0x7f
bal 0x00071ae0
_addiu a0,a0,0x7f48
or v0,s2,zero
lw a0,0x34(sp)
lw v1,0x0(s3)
beq a0,v1,0x00080688
_lw gp,0x18(sp)
b 0x0008073c
_lw t9,-0x7088(gp)
lw v0,0x30(sp)
lw v0,0x0(v0)
lbu v0,0x0(v0)
andi v0,v0,0x1
beq v0,zero,0x00080928
_lw v0,-0x7904(gp)
lw a1,-0x7fc4(gp)
addiu a1,a1,0x7ef0
lw a0,-0x7fc4(gp)
lw t9,-0x793c(gp)
addiu t9,t9,-0x14c8
bal 0x0006eb38
_addiu a0,a0,0x7f30
b 0x0008070c
_lw gp,0x18(sp)
lw a1,0x0(v0)
b 0x0008090c
_addiu a1,a1,0x2c
(translation_unit "undefined4 FUN_000804fc(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  int in_t9;\n  code *pcVar10;\n  int local_3c [2];\n  char local_34 [4];\n  undefined4 *local_30;\n  int local_2c;\n  \n  piVar6 = *(int **)(in_t9 + 0xaac50);\n  local_2c = *piVar6;\n  if (param_2 == 0) {\n    param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;\n  }\n  local_3c[0] = param_2;\n  if (param_3 == 0) {\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = (undefined4 *)FUN_0006cfd8(param_1);\n    puVar7 = (undefined4 *)*puVar7;\n    if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }\n    FUN_0007fe58(param_1,local_34,&local_30,2,param_2);\n    if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_00080778:\n    iVar1 = param_1;\n    if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }\n    if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }\n  }\n  else {\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }\n  FUN_00071ae0(iVar1,*puVar7);\nLAB_0008070c:\n  while (FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6) {\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_000804fc(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  int in_t9;\n  code *pcVar10;\n  int local_3c [2];\n  char local_34 [4];\n  undefined4 *local_30;\n  int local_2c;\n  \n  piVar6 = *(int **)(in_t9 + 0xaac50);\n  local_2c = *piVar6;\n  if (param_2 == 0) {\n    param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;\n  }\n  local_3c[0] = param_2;\n  if (param_3 == 0) {\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = (undefined4 *)FUN_0006cfd8(param_1);\n    puVar7 = (undefined4 *)*puVar7;\n    if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }\n    FUN_0007fe58(param_1,local_34,&local_30,2,param_2);\n    if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_00080778:\n    iVar1 = param_1;\n    if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }\n    if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }\n  }\n  else {\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }\n  FUN_00071ae0(iVar1,*puVar7);\nLAB_0008070c:\n  while (FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6) {\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_000804fc(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  int in_t9;\n  code *pcVar10;\n  int local_3c [2];\n  char local_34 [4];\n  undefined4 *local_30;\n  int local_2c;\n  \n  piVar6 = *(int **)(in_t9 + 0xaac50);\n  local_2c = *piVar6;\n  if (param_2 == 0) {\n    param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;\n  }\n  local_3c[0] = param_2;\n  if (param_3 == 0) {\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = (undefined4 *)FUN_0006cfd8(param_1);\n    puVar7 = (undefined4 *)*puVar7;\n    if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }\n    FUN_0007fe58(param_1,local_34,&local_30,2,param_2);\n    if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_00080778:\n    iVar1 = param_1;\n    if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }\n    if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }\n  }\n  else {\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }\n  FUN_00071ae0(iVar1,*puVar7);\nLAB_0008070c:\n  while (FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6) {\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "code *pcVar10;" type_identifier (pointer_declarator "*pcVar10" * identifier) ;) (declaration "int local_3c [2];" primitive_type (array_declarator "local_3c [2]" identifier [ number_literal ]) ;) (declaration "char local_34 [4];" primitive_type (array_declarator "local_34 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "piVar6 = *(int **)(in_t9 + 0xaac50);" (assignment_expression "piVar6 = *(int **)(in_t9 + 0xaac50)" identifier = (pointer_expression "*(int **)(in_t9 + 0xaac50)" * (cast_expression "(int **)(in_t9 + 0xaac50)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaac50)" ( (binary_expression "in_t9 + 0xaac50" identifier + number_literal) ))))) ;) (expression_statement "local_2c = *piVar6;" (assignment_expression "local_2c = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (if_statement "if (param_2 == 0) {\n    param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;\n  }" { (expression_statement "param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;" (assignment_expression "param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5" identifier = (binary_expression "*(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5" (pointer_expression "*(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0)" * (cast_expression "(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(**(int **)(in_t9 + 0xaa354) + 0xf0)" ( (binary_expression "**(int **)(in_t9 + 0xaa354) + 0xf0" (pointer_expression "**(int **)(in_t9 + 0xaa354)" * (pointer_expression "*(int **)(in_t9 + 0xaa354)" * (cast_expression "(int **)(in_t9 + 0xaa354)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa354)" ( (binary_expression "in_t9 + 0xaa354" identifier + number_literal) ))))) + number_literal) )))) + number_literal)) ;) })) (expression_statement "local_3c[0] = param_2;" (assignment_expression "local_3c[0] = param_2" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_3 == 0) {\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = (undefined4 *)FUN_0006cfd8(param_1);\n    puVar7 = (undefined4 *)*puVar7;\n    if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }\n    FUN_0007fe58(param_1,local_34,&local_30,2,param_2);\n    if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_00080778:\n    iVar1 = param_1;\n    if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }\n    if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }\n  }\n  else {\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = (undefined4 *)FUN_0006cfd8(param_1);\n    puVar7 = (undefined4 *)*puVar7;\n    if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }\n    FUN_0007fe58(param_1,local_34,&local_30,2,param_2);\n    if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_00080778:\n    iVar1 = param_1;\n    if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }\n    if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }\n  }" { (expression_statement "iVar1 = FUN_0006d194(param_1);" (assignment_expression "iVar1 = FUN_0006d194(param_1)" identifier = (call_expression "FUN_0006d194(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" { (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0xaa944);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0xaa944)" identifier = (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" * (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa944)" ( (binary_expression "in_t9 + 0xaa944" identifier + number_literal) ))))) ;) (expression_statement "FUN_00071ae0(param_1,*puVar7);" (call_expression "FUN_00071ae0(param_1,*puVar7)" identifier (argument_list "(param_1,*puVar7)" ( identifier , (pointer_expression "*puVar7" * identifier) ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) (expression_statement "puVar7 = (undefined4 *)FUN_0006cfd8(param_1);" (assignment_expression "puVar7 = (undefined4 *)FUN_0006cfd8(param_1)" identifier = (cast_expression "(undefined4 *)FUN_0006cfd8(param_1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0006cfd8(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (expression_statement "puVar7 = (undefined4 *)*puVar7;" (assignment_expression "puVar7 = (undefined4 *)*puVar7" identifier = (cast_expression "(undefined4 *)*puVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier))) ;) (if_statement "if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }" if (parenthesized_expression "(puVar7 != (undefined4 *)0x0)" ( (binary_expression "puVar7 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }" { (expression_statement "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));" (call_expression "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944))" identifier (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944))" ( (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7efc" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal) , (pointer_expression "**(undefined4 **)(in_t9 + 0xaa944)" * (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" * (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa944)" ( (binary_expression "in_t9 + 0xaa944" identifier + number_literal) ))))) ))) ;) (expression_statement "uVar5 = puVar7[1];" (assignment_expression "uVar5 = puVar7[1]" identifier = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = FUN_00073c90(puVar7[2]);" (assignment_expression "uVar2 = FUN_00073c90(puVar7[2])" identifier = (call_expression "FUN_00073c90(puVar7[2])" identifier (argument_list "(puVar7[2])" ( (subscript_expression "puVar7[2]" identifier [ number_literal ]) )))) ;) (expression_statement "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);" (call_expression "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2)" identifier (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2)" ( (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7620" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal) , identifier , identifier ))) ;) (if_statement "if (local_2c != *piVar6) goto LAB_00080738;" if (parenthesized_expression "(local_2c != *piVar6)" ( (binary_expression "local_2c != *piVar6" identifier != (pointer_expression "*piVar6" * identifier)) )) (goto_statement "goto LAB_00080738;" goto statement_identifier ;)) (return_statement "return 0;" return number_literal ;) })) (expression_statement "FUN_0007fe58(param_1,local_34,&local_30,2,param_2);" (call_expression "FUN_0007fe58(param_1,local_34,&local_30,2,param_2)" identifier (argument_list "(param_1,local_34,&local_30,2,param_2)" ( identifier , identifier , (pointer_expression "&local_30" & identifier) , number_literal , identifier ))) ;) (if_statement "if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" if (parenthesized_expression "(local_34[0] == '\x01')" ( (binary_expression "local_34[0] == '\x01'" (subscript_expression "local_34[0]" identifier [ number_literal ]) == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" { (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0xaa944);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0xaa944)" identifier = (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" * (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa944)" ( (binary_expression "in_t9 + 0xaa944" identifier + number_literal) ))))) ;) (labeled_statement "LAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;" statement_identifier : (if_statement "if (param_3 != 0) goto LAB_00080744;" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00080744;" goto statement_identifier ;))) (expression_statement "FUN_00071ae0(param_1,*puVar7);" (call_expression "FUN_00071ae0(param_1,*puVar7)" identifier (argument_list "(param_1,*puVar7)" ( identifier , (pointer_expression "*puVar7" * identifier) ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0xaa944);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0xaa944)" identifier = (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" * (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa944)" ( (binary_expression "in_t9 + 0xaa944" identifier + number_literal) ))))) ;) (if_statement "if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" if (parenthesized_expression "(local_34[0] == '\x02')" ( (binary_expression "local_34[0] == '\x02'" (subscript_expression "local_34[0]" identifier [ number_literal ]) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" { (expression_statement "FUN_00071ae0(param_1,*puVar7);" (call_expression "FUN_00071ae0(param_1,*puVar7)" identifier (argument_list "(param_1,*puVar7)" ( identifier , (pointer_expression "*puVar7" * identifier) ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) (if_statement "if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }" if (parenthesized_expression "(local_34[0] != '\0')" ( (binary_expression "local_34[0] != '\0'" (subscript_expression "local_34[0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }" { (if_statement "if (local_2c == *piVar6) {\n        return 0x7f;\n      }" if (parenthesized_expression "(local_2c == *piVar6)" ( (binary_expression "local_2c == *piVar6" identifier == (pointer_expression "*piVar6" * identifier)) )) (compound_statement "{\n        return 0x7f;\n      }" { (return_statement "return 0x7f;" return number_literal ;) })) (expression_statement "pcVar10 = *(code **)(in_t9 + 0xaabcc);" (assignment_expression "pcVar10 = *(code **)(in_t9 + 0xaabcc)" identifier = (pointer_expression "*(code **)(in_t9 + 0xaabcc)" * (cast_expression "(code **)(in_t9 + 0xaabcc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaabcc)" ( (binary_expression "in_t9 + 0xaabcc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0008073c;" goto statement_identifier ;) })) (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0xaa944);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0xaa944)" identifier = (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" * (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa944)" ( (binary_expression "in_t9 + 0xaa944" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00080778:\n    iVar1 = param_1;" statement_identifier : (expression_statement "iVar1 = param_1;" (assignment_expression "iVar1 = param_1" identifier = identifier) ;)) (if_statement "if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }" if (parenthesized_expression "(-1 < (int)local_30)" ( (binary_expression "-1 < (int)local_30" number_literal < (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }" { (expression_statement "iVar8 = **(int **)(in_t9 + 0xaa35c);" (assignment_expression "iVar8 = **(int **)(in_t9 + 0xaa35c)" identifier = (pointer_expression "**(int **)(in_t9 + 0xaa35c)" * (pointer_expression "*(int **)(in_t9 + 0xaa35c)" * (cast_expression "(int **)(in_t9 + 0xaa35c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa35c)" ( (binary_expression "in_t9 + 0xaa35c" identifier + number_literal) )))))) ;) (expression_statement "puVar9 = local_30;" (assignment_expression "puVar9 = local_30" identifier = identifier) ;) (do_statement "do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);" do (compound_statement "{\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      }" { (expression_statement "iVar1 = FUN_00075108(local_3c,param_1);" (assignment_expression "iVar1 = FUN_00075108(local_3c,param_1)" identifier = (call_expression "FUN_00075108(local_3c,param_1)" identifier (argument_list "(local_3c,param_1)" ( identifier , identifier )))) ;) (expression_statement "puVar9 = (undefined4 *)((int)puVar9 + -1);" (assignment_expression "puVar9 = (undefined4 *)((int)puVar9 + -1)" identifier = (cast_expression "(undefined4 *)((int)puVar9 + -1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + -1)" ( (binary_expression "(int)puVar9 + -1" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar4 = *(int *)(iVar8 + 4);" (assignment_expression "iVar4 = *(int *)(iVar8 + 4)" identifier = (pointer_expression "*(int *)(iVar8 + 4)" * (cast_expression "(int *)(iVar8 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar8 + 4) = iVar1;" (assignment_expression "*(int *)(iVar8 + 4) = iVar1" (pointer_expression "*(int *)(iVar8 + 4)" * (cast_expression "(int *)(iVar8 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);" (assignment_expression "*(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1)" (pointer_expression "*(int *)(iVar8 + 0xc)" * (cast_expression "(int *)(iVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar8 + 0xc) + (iVar4 - iVar1)" (pointer_expression "*(int *)(iVar8 + 0xc)" * (cast_expression "(int *)(iVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) + (parenthesized_expression "(iVar4 - iVar1)" ( (binary_expression "iVar4 - iVar1" identifier - identifier) )))) ;) }) while (parenthesized_expression "(puVar9 != (undefined4 *)0xffffffff)" ( (binary_expression "puVar9 != (undefined4 *)0xffffffff" identifier != (cast_expression "(undefined4 *)0xffffffff" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (if_statement "if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }" { (expression_statement "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);" (call_expression "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1)" identifier (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1)" ( (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7f18" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal) , identifier ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) }) (else_clause "else {\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }" else (compound_statement "{\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }" { (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0xaa944);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0xaa944)" identifier = (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" * (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa944)" ( (binary_expression "in_t9 + 0xaa944" identifier + number_literal) ))))) ;) (expression_statement "FUN_00071ae0(param_1,*puVar7);" (call_expression "FUN_00071ae0(param_1,*puVar7)" identifier (argument_list "(param_1,*puVar7)" ( identifier , (pointer_expression "*puVar7" * identifier) ))) ;) (expression_statement "iVar1 = FUN_0006d194(param_1);" (assignment_expression "iVar1 = FUN_0006d194(param_1)" identifier = (call_expression "FUN_0006d194(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }" { (expression_statement "piVar3 = (int *)FUN_0006cfd8(param_1);" (assignment_expression "piVar3 = (int *)FUN_0006cfd8(param_1)" identifier = (cast_expression "(int *)FUN_0006cfd8(param_1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0006cfd8(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (if_statement "if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }" if (parenthesized_expression "(*piVar3 != 0)" ( (binary_expression "*piVar3 != 0" (pointer_expression "*piVar3" * identifier) != number_literal) )) (compound_statement "{\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }" { (expression_statement "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));" (call_expression "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8))" identifier (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8))" ( (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7f04" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined4 *)(*piVar3 + 8)" * (cast_expression "(undefined4 *)(*piVar3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar3 + 8)" ( (binary_expression "*piVar3 + 8" (pointer_expression "*piVar3" * identifier) + number_literal) )))) ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) (expression_statement "FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);" (call_expression "FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0])" identifier (argument_list "(param_1,local_34,&local_30,2,local_3c[0])" ( identifier , identifier , (pointer_expression "&local_30" & identifier) , number_literal , (subscript_expression "local_3c[0]" identifier [ number_literal ]) ))) ;) (if_statement "if (local_34[0] == '\x01') goto LAB_000806f4;" if (parenthesized_expression "(local_34[0] == '\x01')" ( (binary_expression "local_34[0] == '\x01'" (subscript_expression "local_34[0]" identifier [ number_literal ]) == (char_literal "'\x01'" ' escape_sequence ')) )) (goto_statement "goto LAB_000806f4;" goto statement_identifier ;)) (if_statement "if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }" if (parenthesized_expression "(local_34[0] == '\x02')" ( (binary_expression "local_34[0] == '\x02'" (subscript_expression "local_34[0]" identifier [ number_literal ]) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }" { (if_statement "if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }" if (parenthesized_expression "((*(byte *)*local_30 & 1) == 0)" ( (binary_expression "(*(byte *)*local_30 & 1) == 0" (parenthesized_expression "(*(byte *)*local_30 & 1)" ( (binary_expression "*(byte *)*local_30 & 1" (pointer_expression "*(byte *)*local_30" * (cast_expression "(byte *)*local_30" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_30" * identifier))) & number_literal) )) == number_literal) )) (compound_statement "{\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }" { (expression_statement "iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;" (assignment_expression "iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c" identifier = (binary_expression "**(int **)(in_t9 + 0xaa350) + 0x2c" (pointer_expression "**(int **)(in_t9 + 0xaa350)" * (pointer_expression "*(int **)(in_t9 + 0xaa350)" * (cast_expression "(int **)(in_t9 + 0xaa350)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa350)" ( (binary_expression "in_t9 + 0xaa350" identifier + number_literal) ))))) + number_literal)) ;) }) (else_clause "else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }" else (compound_statement "{\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }" { (expression_statement "iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;" (assignment_expression "iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0" identifier = (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7ef0" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal)) ;) }))) (expression_statement "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);" (call_expression "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1)" identifier (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1)" ( (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7f30" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal) , identifier ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) (if_statement "if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }" if (parenthesized_expression "(local_34[0] != '\0')" ( (binary_expression "local_34[0] != '\0'" (subscript_expression "local_34[0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }" { (expression_statement "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);" (call_expression "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7)" identifier (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7)" ( (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7f48" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal) , (pointer_expression "*puVar7" * identifier) ))) ;) (if_statement "if (local_2c == *piVar6) {\n          return 0x7f;\n        }" if (parenthesized_expression "(local_2c == *piVar6)" ( (binary_expression "local_2c == *piVar6" identifier == (pointer_expression "*piVar6" * identifier)) )) (compound_statement "{\n          return 0x7f;\n        }" { (return_statement "return 0x7f;" return number_literal ;) })) (expression_statement "pcVar10 = *(code **)(in_t9 + 0xaabcc);" (assignment_expression "pcVar10 = *(code **)(in_t9 + 0xaabcc)" identifier = (pointer_expression "*(code **)(in_t9 + 0xaabcc)" * (cast_expression "(code **)(in_t9 + 0xaabcc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaabcc)" ( (binary_expression "in_t9 + 0xaabcc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0008073c;" goto statement_identifier ;) })) (goto_statement "goto LAB_00080778;" goto statement_identifier ;) })) (expression_statement "iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;" (assignment_expression "iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc" identifier = (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7edc" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal)) ;) }))) (expression_statement "FUN_00071ae0(iVar1,*puVar7);" (call_expression "FUN_00071ae0(iVar1,*puVar7)" identifier (argument_list "(iVar1,*puVar7)" ( identifier , (pointer_expression "*puVar7" * identifier) ))) ;) (labeled_statement "LAB_0008070c:\n  while (FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6) {\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }" statement_identifier : (while_statement "while (FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6) {\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }" while (parenthesized_expression "(FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6)" ( (comma_expression "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6" (call_expression "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7)" identifier (argument_list "(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7)" ( (binary_expression "*(int *)(in_t9 + 0xa9c90) + -0xea0" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal) , (pointer_expression "*puVar7" * identifier) ))) , (binary_expression "local_2c != *piVar6" identifier != (pointer_expression "*piVar6" * identifier))) )) (compound_statement "{\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }" { (labeled_statement "LAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);" statement_identifier : (expression_statement "pcVar10 = *(code **)(in_t9 + 0xaabcc);" (assignment_expression "pcVar10 = *(code **)(in_t9 + 0xaabcc)" identifier = (pointer_expression "*(code **)(in_t9 + 0xaabcc)" * (cast_expression "(code **)(in_t9 + 0xaabcc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaabcc)" ( (binary_expression "in_t9 + 0xaabcc" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0008073c:\n    (*pcVar10)();" statement_identifier : (expression_statement "(*pcVar10)();" (call_expression "(*pcVar10)()" (parenthesized_expression "(*pcVar10)" ( (pointer_expression "*pcVar10" * identifier) )) (argument_list "()" ( ))) ;)) (labeled_statement "LAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);" statement_identifier : (expression_statement "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);" (call_expression "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20)" identifier (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7f20)" ( (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7f20" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal) ))) ;)) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int describe_command(char *command,char *path,int describe_command_verbose)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  char **ppcVar3;\n  alias **ppaVar4;\n  int iVar5;\n  int iVar6;\n  FILE *file;\n  undefined *puVar7;\n  char *pcVar8;\n  alias *paVar9;\n  param pVar10;\n  cmdentry *apcStack_3c [2];\n  cmdentry entry;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  paVar9 = (alias *)PTR_stdout_0012ae40;\n  iVar2 = *(int *)PTR___stack_chk_guard_0012b14c;\n  if (path == (char *)0x0) {\n    path = (char *)(*(int *)(*(int *)PTR_ash_ptr_to_globals_var_0012a850 + 0xf0) + 5);\n  }\n  apcStack_3c[0] = (cmdentry *)path;\n  if (describe_command_verbose == 0) {\n    ppcVar3 = findkwd(command);\n    paVar9 = (alias *)PTR_stdout_0012ae40;\n    if (ppcVar3 != (char **)0x0) {\n      outstr(command,*(FILE **)PTR_stdout_0012ae40);\n      goto LAB_0008070c;\n    }\n    ppaVar4 = __lookupalias(command);\n    paVar9 = *ppaVar4;\n    if (paVar9 != (alias *)0x0) {\n      outstr(PTR_UINT_0012a18c + 0x7efc,*(FILE **)PTR_stdout_0012ae40);\n      file = (FILE *)paVar9->name;\n      pcVar8 = single_quote(paVar9->val);\n      out1fmt(PTR_UINT_0012a18c + 0x7620,file,pcVar8);\n      iVar6 = *(int *)puVar1;\n      iVar5 = 0;\njoined_r0x00080680:\n      if (iVar2 != iVar6) goto LAB_0008073c;\n      return iVar5;\n    }\n    file = (FILE *)&entry;\n    find_command(command,(cmdentry *)file,(int)&entry.u,&SUB_00000002,(cmdentry *)path);\n    paVar9 = (alias *)PTR_stdout_0012ae40;\n    if (entry.cmdtype == '\x01') goto LAB_000806f4;\n    if (entry.cmdtype == '\x02') {\n      outstr(command,*(FILE **)PTR_stdout_0012ae40);\n      goto LAB_0008070c;\n    }\n    if (entry.cmdtype != '\0') {\n      iVar6 = *(int *)puVar1;\n      iVar5 = 0x7f;\n      goto joined_r0x00080680;\n    }\nLAB_00080778:\n    pcVar8 = command;\n    if (-1 < entry.u.index) {\n      iVar5 = *(int *)PTR_ash_ptr_to_globals_memstack_0012a858;\n      pVar10 = entry.u;\n      do {\n        pcVar8 = path_advance((char **)apcStack_3c,command);\n        pVar10.cmd = (builtincmd *)(pVar10.index + -1);\n        iVar6 = *(int *)(iVar5 + 4);\n        *(char **)(iVar5 + 4) = pcVar8;\n        *(int *)(iVar5 + 0xc) = *(int *)(iVar5 + 0xc) + (iVar6 - (int)pcVar8);\n      } while (pVar10.index != -1);\n    }\n    if (describe_command_verbose != 0) {\n      out1fmt(PTR_UINT_0012a18c + 0x7f18,pcVar8);\n      goto LAB_0008070c;\n    }\n  }\n  else {\n    outstr(command,*(FILE **)PTR_stdout_0012ae40);\n    ppcVar3 = findkwd(command);\n    if (ppcVar3 == (char **)0x0) {\n      ppaVar4 = __lookupalias(command);\n      if (*ppaVar4 != (alias *)0x0) {\n        out1fmt(PTR_UINT_0012a18c + 0x7f04,(*ppaVar4)->val);\n        goto LAB_0008070c;\n      }\n      find_command(command,&entry,(int)&entry.u,&SUB_00000002,apcStack_3c[0]);\n      if (entry.cmdtype == '\x01') {\nLAB_000806f4:\n        file = (FILE *)paVar9->next;\n        if (describe_command_verbose != 0) goto LAB_00080744;\n        outstr(command,file);\n        goto LAB_0008070c;\n      }\n      if (entry.cmdtype == '\x02') {\n        if ((*(entry.u.cmd)->name & 1U) == 0) {\n          puVar7 = (undefined *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c);\n        }\n        else {\n          puVar7 = PTR_UINT_0012a18c + 0x7ef0;\n        }\n        out1fmt(PTR_UINT_0012a18c + 0x7f30,puVar7);\n        goto LAB_0008070c;\n      }\n      if (entry.cmdtype != '\0') {\n        file = *(FILE **)paVar9;\n        outstr(PTR_UINT_0012a18c + 0x7f48,file);\n        iVar5 = 0x7f;\n        iVar6 = *(int *)puVar1;\n        goto joined_r0x00080680;\n      }\n      goto LAB_00080778;\n    }\n    pcVar8 = PTR_UINT_0012a18c + 0x7edc;\n  }\n  outstr(pcVar8,(FILE *)paVar9->next);\nLAB_0008070c:\n  while( true ) {\n    file = (FILE *)paVar9->next;\n    outstr(PTR_UINT_0012a18c + -0xea0,file);\n    if (iVar2 == *(int *)puVar1) break;\nLAB_0008073c:\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_00080744:\n    outstr(PTR_UINT_0012a18c + 0x7f20,file);\n  }\n  return 0;\n}\n\n" (function_definition "int describe_command(char *command,char *path,int describe_command_verbose)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  char **ppcVar3;\n  alias **ppaVar4;\n  int iVar5;\n  int iVar6;\n  FILE *file;\n  undefined *puVar7;\n  char *pcVar8;\n  alias *paVar9;\n  param pVar10;\n  cmdentry *apcStack_3c [2];\n  cmdentry entry;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  paVar9 = (alias *)PTR_stdout_0012ae40;\n  iVar2 = *(int *)PTR___stack_chk_guard_0012b14c;\n  if (path == (char *)0x0) {\n    path = (char *)(*(int *)(*(int *)PTR_ash_ptr_to_globals_var_0012a850 + 0xf0) + 5);\n  }\n  apcStack_3c[0] = (cmdentry *)path;\n  if (describe_command_verbose == 0) {\n    ppcVar3 = findkwd(command);\n    paVar9 = (alias *)PTR_stdout_0012ae40;\n    if (ppcVar3 != (char **)0x0) {\n      outstr(command,*(FILE **)PTR_stdout_0012ae40);\n      goto LAB_0008070c;\n    }\n    ppaVar4 = __lookupalias(command);\n    paVar9 = *ppaVar4;\n    if (paVar9 != (alias *)0x0) {\n      outstr(PTR_UINT_0012a18c + 0x7efc,*(FILE **)PTR_stdout_0012ae40);\n      file = (FILE *)paVar9->name;\n      pcVar8 = single_quote(paVar9->val);\n      out1fmt(PTR_UINT_0012a18c + 0x7620,file,pcVar8);\n      iVar6 = *(int *)puVar1;\n      iVar5 = 0;\njoined_r0x00080680:\n      if (iVar2 != iVar6) goto LAB_0008073c;\n      return iVar5;\n    }\n    file = (FILE *)&entry;\n    find_command(command,(cmdentry *)file,(int)&entry.u,&SUB_00000002,(cmdentry *)path);\n    paVar9 = (alias *)PTR_stdout_0012ae40;\n    if (entry.cmdtype == '\x01') goto LAB_000806f4;\n    if (entry.cmdtype == '\x02') {\n      outstr(command,*(FILE **)PTR_stdout_0012ae40);\n      goto LAB_0008070c;\n    }\n    if (entry.cmdtype != '\0') {\n      iVar6 = *(int *)puVar1;\n      iVar5 = 0x7f;\n      goto joined_r0x00080680;\n    }\nLAB_00080778:\n    pcVar8 = command;\n    if (-1 < entry.u.index) {\n      iVar5 = *(int *)PTR_ash_ptr_to_globals_memstack_0012a858;\n      pVar10 = entry.u;\n      do {\n        pcVar8 = path_advance((char **)apcStack_3c,command);\n        pVar10.cmd = (builtincmd *)(pVar10.index + -1);\n        iVar6 = *(int *)(iVar5 + 4);\n        *(char **)(iVar5 + 4) = pcVar8;\n        *(int *)(iVar5 + 0xc) = *(int *)(iVar5 + 0xc) + (iVar6 - (int)pcVar8);\n      } while (pVar10.index != -1);\n    }\n    if (describe_command_verbose != 0) {\n      out1fmt(PTR_UINT_0012a18c + 0x7f18,pcVar8);\n      goto LAB_0008070c;\n    }\n  }\n  else {\n    outstr(command,*(FILE **)PTR_stdout_0012ae40);\n    ppcVar3 = findkwd(command);\n    if (ppcVar3 == (char **)0x0) {\n      ppaVar4 = __lookupalias(command);\n      if (*ppaVar4 != (alias *)0x0) {\n        out1fmt(PTR_UINT_0012a18c + 0x7f04,(*ppaVar4)->val);\n        goto LAB_0008070c;\n      }\n      find_command(command,&entry,(int)&entry.u,&SUB_00000002,apcStack_3c[0]);\n      if (entry.cmdtype == '\x01') {\nLAB_000806f4:\n        file = (FILE *)paVar9->next;\n        if (describe_command_verbose != 0) goto LAB_00080744;\n        outstr(command,file);\n        goto LAB_0008070c;\n      }\n      if (entry.cmdtype == '\x02') {\n        if ((*(entry.u.cmd)->name & 1U) == 0) {\n          puVar7 = (undefined *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c);\n        }\n        else {\n          puVar7 = PTR_UINT_0012a18c + 0x7ef0;\n        }\n        out1fmt(PTR_UINT_0012a18c + 0x7f30,puVar7);\n        goto LAB_0008070c;\n      }\n      if (entry.cmdtype != '\0') {\n        file = *(FILE **)paVar9;\n        outstr(PTR_UINT_0012a18c + 0x7f48,file);\n        iVar5 = 0x7f;\n        iVar6 = *(int *)puVar1;\n        goto joined_r0x00080680;\n      }\n      goto LAB_00080778;\n    }\n    pcVar8 = PTR_UINT_0012a18c + 0x7edc;\n  }\n  outstr(pcVar8,(FILE *)paVar9->next);\nLAB_0008070c:\n  while( true ) {\n    file = (FILE *)paVar9->next;\n    outstr(PTR_UINT_0012a18c + -0xea0,file);\n    if (iVar2 == *(int *)puVar1) break;\nLAB_0008073c:\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_00080744:\n    outstr(PTR_UINT_0012a18c + 0x7f20,file);\n  }\n  return 0;\n}" primitive_type (function_declarator "describe_command(char *command,char *path,int describe_command_verbose)" identifier (parameter_list "(char *command,char *path,int describe_command_verbose)" ( (parameter_declaration "char *command" primitive_type (pointer_declarator "*command" * identifier)) , (parameter_declaration "char *path" primitive_type (pointer_declarator "*path" * identifier)) , (parameter_declaration "int describe_command_verbose" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  char **ppcVar3;\n  alias **ppaVar4;\n  int iVar5;\n  int iVar6;\n  FILE *file;\n  undefined *puVar7;\n  char *pcVar8;\n  alias *paVar9;\n  param pVar10;\n  cmdentry *apcStack_3c [2];\n  cmdentry entry;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  paVar9 = (alias *)PTR_stdout_0012ae40;\n  iVar2 = *(int *)PTR___stack_chk_guard_0012b14c;\n  if (path == (char *)0x0) {\n    path = (char *)(*(int *)(*(int *)PTR_ash_ptr_to_globals_var_0012a850 + 0xf0) + 5);\n  }\n  apcStack_3c[0] = (cmdentry *)path;\n  if (describe_command_verbose == 0) {\n    ppcVar3 = findkwd(command);\n    paVar9 = (alias *)PTR_stdout_0012ae40;\n    if (ppcVar3 != (char **)0x0) {\n      outstr(command,*(FILE **)PTR_stdout_0012ae40);\n      goto LAB_0008070c;\n    }\n    ppaVar4 = __lookupalias(command);\n    paVar9 = *ppaVar4;\n    if (paVar9 != (alias *)0x0) {\n      outstr(PTR_UINT_0012a18c + 0x7efc,*(FILE **)PTR_stdout_0012ae40);\n      file = (FILE *)paVar9->name;\n      pcVar8 = single_quote(paVar9->val);\n      out1fmt(PTR_UINT_0012a18c + 0x7620,file,pcVar8);\n      iVar6 = *(int *)puVar1;\n      iVar5 = 0;\njoined_r0x00080680:\n      if (iVar2 != iVar6) goto LAB_0008073c;\n      return iVar5;\n    }\n    file = (FILE *)&entry;\n    find_command(command,(cmdentry *)file,(int)&entry.u,&SUB_00000002,(cmdentry *)path);\n    paVar9 = (alias *)PTR_stdout_0012ae40;\n    if (entry.cmdtype == '\x01') goto LAB_000806f4;\n    if (entry.cmdtype == '\x02') {\n      outstr(command,*(FILE **)PTR_stdout_0012ae40);\n      goto LAB_0008070c;\n    }\n    if (entry.cmdtype != '\0') {\n      iVar6 = *(int *)puVar1;\n      iVar5 = 0x7f;\n      goto joined_r0x00080680;\n    }\nLAB_00080778:\n    pcVar8 = command;\n    if (-1 < entry.u.index) {\n      iVar5 = *(int *)PTR_ash_ptr_to_globals_memstack_0012a858;\n      pVar10 = entry.u;\n      do {\n        pcVar8 = path_advance((char **)apcStack_3c,command);\n        pVar10.cmd = (builtincmd *)(pVar10.index + -1);\n        iVar6 = *(int *)(iVar5 + 4);\n        *(char **)(iVar5 + 4) = pcVar8;\n        *(int *)(iVar5 + 0xc) = *(int *)(iVar5 + 0xc) + (iVar6 - (int)pcVar8);\n      } while (pVar10.index != -1);\n    }\n    if (describe_command_verbose != 0) {\n      out1fmt(PTR_UINT_0012a18c + 0x7f18,pcVar8);\n      goto LAB_0008070c;\n    }\n  }\n  else {\n    outstr(command,*(FILE **)PTR_stdout_0012ae40);\n    ppcVar3 = findkwd(command);\n    if (ppcVar3 == (char **)0x0) {\n      ppaVar4 = __lookupalias(command);\n      if (*ppaVar4 != (alias *)0x0) {\n        out1fmt(PTR_UINT_0012a18c + 0x7f04,(*ppaVar4)->val);\n        goto LAB_0008070c;\n      }\n      find_command(command,&entry,(int)&entry.u,&SUB_00000002,apcStack_3c[0]);\n      if (entry.cmdtype == '\x01') {\nLAB_000806f4:\n        file = (FILE *)paVar9->next;\n        if (describe_command_verbose != 0) goto LAB_00080744;\n        outstr(command,file);\n        goto LAB_0008070c;\n      }\n      if (entry.cmdtype == '\x02') {\n        if ((*(entry.u.cmd)->name & 1U) == 0) {\n          puVar7 = (undefined *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c);\n        }\n        else {\n          puVar7 = PTR_UINT_0012a18c + 0x7ef0;\n        }\n        out1fmt(PTR_UINT_0012a18c + 0x7f30,puVar7);\n        goto LAB_0008070c;\n      }\n      if (entry.cmdtype != '\0') {\n        file = *(FILE **)paVar9;\n        outstr(PTR_UINT_0012a18c + 0x7f48,file);\n        iVar5 = 0x7f;\n        iVar6 = *(int *)puVar1;\n        goto joined_r0x00080680;\n      }\n      goto LAB_00080778;\n    }\n    pcVar8 = PTR_UINT_0012a18c + 0x7edc;\n  }\n  outstr(pcVar8,(FILE *)paVar9->next);\nLAB_0008070c:\n  while( true ) {\n    file = (FILE *)paVar9->next;\n    outstr(PTR_UINT_0012a18c + -0xea0,file);\n    if (iVar2 == *(int *)puVar1) break;\nLAB_0008073c:\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_00080744:\n    outstr(PTR_UINT_0012a18c + 0x7f20,file);\n  }\n  return 0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char **ppcVar3;" primitive_type (pointer_declarator "**ppcVar3" * (pointer_declarator "*ppcVar3" * identifier)) ;) (declaration "alias **ppaVar4;" type_identifier (pointer_declarator "**ppaVar4" * (pointer_declarator "*ppaVar4" * identifier)) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "FILE *file;" type_identifier (pointer_declarator "*file" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "alias *paVar9;" type_identifier (pointer_declarator "*paVar9" * identifier) ;) (declaration "param pVar10;" type_identifier identifier ;) (declaration "cmdentry *apcStack_3c [2];" type_identifier (pointer_declarator "*apcStack_3c [2]" * (array_declarator "apcStack_3c [2]" identifier [ number_literal ])) ;) (declaration "cmdentry entry;" type_identifier identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0012b14c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0012b14c" identifier = identifier) ;) (expression_statement "paVar9 = (alias *)PTR_stdout_0012ae40;" (assignment_expression "paVar9 = (alias *)PTR_stdout_0012ae40" identifier = (cast_expression "(alias *)PTR_stdout_0012ae40" ( (type_descriptor "alias *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar2 = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "iVar2 = *(int *)PTR___stack_chk_guard_0012b14c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0012b14c" * (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (path == (char *)0x0) {\n    path = (char *)(*(int *)(*(int *)PTR_ash_ptr_to_globals_var_0012a850 + 0xf0) + 5);\n  }" if (parenthesized_expression "(path == (char *)0x0)" ( (binary_expression "path == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    path = (char *)(*(int *)(*(int *)PTR_ash_ptr_to_globals_var_0012a850 + 0xf0) + 5);\n  }" { (expression_statement "path = (char *)(*(int *)(*(int *)PTR_ash_ptr_to_globals_var_0012a850 + 0xf0) + 5);" (assignment_expression "path = (char *)(*(int *)(*(int *)PTR_ash_ptr_to_globals_var_0012a850 + 0xf0) + 5)" identifier = (cast_expression "(char *)(*(int *)(*(int *)PTR_ash_ptr_to_globals_var_0012a850 + 0xf0) + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)PTR_ash_ptr_to_globals_var_0012a850 + 0xf0) + 5)" ( (binary_expression "*(int *)(*(int *)PTR_ash_ptr_to_globals_var_0012a850 + 0xf0) + 5" (pointer_expression "*(int *)(*(int *)PTR_ash_ptr_to_globals_var_0012a850 + 0xf0)" * (cast_expression "(int *)(*(int *)PTR_ash_ptr_to_globals_var_0012a850 + 0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)PTR_ash_ptr_to_globals_var_0012a850 + 0xf0)" ( (binary_expression "*(int *)PTR_ash_ptr_to_globals_var_0012a850 + 0xf0" (pointer_expression "*(int *)PTR_ash_ptr_to_globals_var_0012a850" * (cast_expression "(int *)PTR_ash_ptr_to_globals_var_0012a850" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) )))) ;) })) (expression_statement "apcStack_3c[0] = (cmdentry *)path;" (assignment_expression "apcStack_3c[0] = (cmdentry *)path" (subscript_expression "apcStack_3c[0]" identifier [ number_literal ]) = (cast_expression "(cmdentry *)path" ( (type_descriptor "cmdentry *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (describe_command_verbose == 0) {\n    ppcVar3 = findkwd(command);\n    paVar9 = (alias *)PTR_stdout_0012ae40;\n    if (ppcVar3 != (char **)0x0) {\n      outstr(command,*(FILE **)PTR_stdout_0012ae40);\n      goto LAB_0008070c;\n    }\n    ppaVar4 = __lookupalias(command);\n    paVar9 = *ppaVar4;\n    if (paVar9 != (alias *)0x0) {\n      outstr(PTR_UINT_0012a18c + 0x7efc,*(FILE **)PTR_stdout_0012ae40);\n      file = (FILE *)paVar9->name;\n      pcVar8 = single_quote(paVar9->val);\n      out1fmt(PTR_UINT_0012a18c + 0x7620,file,pcVar8);\n      iVar6 = *(int *)puVar1;\n      iVar5 = 0;\njoined_r0x00080680:\n      if (iVar2 != iVar6) goto LAB_0008073c;\n      return iVar5;\n    }\n    file = (FILE *)&entry;\n    find_command(command,(cmdentry *)file,(int)&entry.u,&SUB_00000002,(cmdentry *)path);\n    paVar9 = (alias *)PTR_stdout_0012ae40;\n    if (entry.cmdtype == '\x01') goto LAB_000806f4;\n    if (entry.cmdtype == '\x02') {\n      outstr(command,*(FILE **)PTR_stdout_0012ae40);\n      goto LAB_0008070c;\n    }\n    if (entry.cmdtype != '\0') {\n      iVar6 = *(int *)puVar1;\n      iVar5 = 0x7f;\n      goto joined_r0x00080680;\n    }\nLAB_00080778:\n    pcVar8 = command;\n    if (-1 < entry.u.index) {\n      iVar5 = *(int *)PTR_ash_ptr_to_globals_memstack_0012a858;\n      pVar10 = entry.u;\n      do {\n        pcVar8 = path_advance((char **)apcStack_3c,command);\n        pVar10.cmd = (builtincmd *)(pVar10.index + -1);\n        iVar6 = *(int *)(iVar5 + 4);\n        *(char **)(iVar5 + 4) = pcVar8;\n        *(int *)(iVar5 + 0xc) = *(int *)(iVar5 + 0xc) + (iVar6 - (int)pcVar8);\n      } while (pVar10.index != -1);\n    }\n    if (describe_command_verbose != 0) {\n      out1fmt(PTR_UINT_0012a18c + 0x7f18,pcVar8);\n      goto LAB_0008070c;\n    }\n  }\n  else {\n    outstr(command,*(FILE **)PTR_stdout_0012ae40);\n    ppcVar3 = findkwd(command);\n    if (ppcVar3 == (char **)0x0) {\n      ppaVar4 = __lookupalias(command);\n      if (*ppaVar4 != (alias *)0x0) {\n        out1fmt(PTR_UINT_0012a18c + 0x7f04,(*ppaVar4)->val);\n        goto LAB_0008070c;\n      }\n      find_command(command,&entry,(int)&entry.u,&SUB_00000002,apcStack_3c[0]);\n      if (entry.cmdtype == '\x01') {\nLAB_000806f4:\n        file = (FILE *)paVar9->next;\n        if (describe_command_verbose != 0) goto LAB_00080744;\n        outstr(command,file);\n        goto LAB_0008070c;\n      }\n      if (entry.cmdtype == '\x02') {\n        if ((*(entry.u.cmd)->name & 1U) == 0) {\n          puVar7 = (undefined *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c);\n        }\n        else {\n          puVar7 = PTR_UINT_0012a18c + 0x7ef0;\n        }\n        out1fmt(PTR_UINT_0012a18c + 0x7f30,puVar7);\n        goto LAB_0008070c;\n      }\n      if (entry.cmdtype != '\0') {\n        file = *(FILE **)paVar9;\n        outstr(PTR_UINT_0012a18c + 0x7f48,file);\n        iVar5 = 0x7f;\n        iVar6 = *(int *)puVar1;\n        goto joined_r0x00080680;\n      }\n      goto LAB_00080778;\n    }\n    pcVar8 = PTR_UINT_0012a18c + 0x7edc;\n  }" if (parenthesized_expression "(describe_command_verbose == 0)" ( (binary_expression "describe_command_verbose == 0" identifier == number_literal) )) (compound_statement "{\n    ppcVar3 = findkwd(command);\n    paVar9 = (alias *)PTR_stdout_0012ae40;\n    if (ppcVar3 != (char **)0x0) {\n      outstr(command,*(FILE **)PTR_stdout_0012ae40);\n      goto LAB_0008070c;\n    }\n    ppaVar4 = __lookupalias(command);\n    paVar9 = *ppaVar4;\n    if (paVar9 != (alias *)0x0) {\n      outstr(PTR_UINT_0012a18c + 0x7efc,*(FILE **)PTR_stdout_0012ae40);\n      file = (FILE *)paVar9->name;\n      pcVar8 = single_quote(paVar9->val);\n      out1fmt(PTR_UINT_0012a18c + 0x7620,file,pcVar8);\n      iVar6 = *(int *)puVar1;\n      iVar5 = 0;\njoined_r0x00080680:\n      if (iVar2 != iVar6) goto LAB_0008073c;\n      return iVar5;\n    }\n    file = (FILE *)&entry;\n    find_command(command,(cmdentry *)file,(int)&entry.u,&SUB_00000002,(cmdentry *)path);\n    paVar9 = (alias *)PTR_stdout_0012ae40;\n    if (entry.cmdtype == '\x01') goto LAB_000806f4;\n    if (entry.cmdtype == '\x02') {\n      outstr(command,*(FILE **)PTR_stdout_0012ae40);\n      goto LAB_0008070c;\n    }\n    if (entry.cmdtype != '\0') {\n      iVar6 = *(int *)puVar1;\n      iVar5 = 0x7f;\n      goto joined_r0x00080680;\n    }\nLAB_00080778:\n    pcVar8 = command;\n    if (-1 < entry.u.index) {\n      iVar5 = *(int *)PTR_ash_ptr_to_globals_memstack_0012a858;\n      pVar10 = entry.u;\n      do {\n        pcVar8 = path_advance((char **)apcStack_3c,command);\n        pVar10.cmd = (builtincmd *)(pVar10.index + -1);\n        iVar6 = *(int *)(iVar5 + 4);\n        *(char **)(iVar5 + 4) = pcVar8;\n        *(int *)(iVar5 + 0xc) = *(int *)(iVar5 + 0xc) + (iVar6 - (int)pcVar8);\n      } while (pVar10.index != -1);\n    }\n    if (describe_command_verbose != 0) {\n      out1fmt(PTR_UINT_0012a18c + 0x7f18,pcVar8);\n      goto LAB_0008070c;\n    }\n  }" { (expression_statement "ppcVar3 = findkwd(command);" (assignment_expression "ppcVar3 = findkwd(command)" identifier = (call_expression "findkwd(command)" identifier (argument_list "(command)" ( identifier )))) ;) (expression_statement "paVar9 = (alias *)PTR_stdout_0012ae40;" (assignment_expression "paVar9 = (alias *)PTR_stdout_0012ae40" identifier = (cast_expression "(alias *)PTR_stdout_0012ae40" ( (type_descriptor "alias *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (ppcVar3 != (char **)0x0) {\n      outstr(command,*(FILE **)PTR_stdout_0012ae40);\n      goto LAB_0008070c;\n    }" if (parenthesized_expression "(ppcVar3 != (char **)0x0)" ( (binary_expression "ppcVar3 != (char **)0x0" identifier != (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n      outstr(command,*(FILE **)PTR_stdout_0012ae40);\n      goto LAB_0008070c;\n    }" { (expression_statement "outstr(command,*(FILE **)PTR_stdout_0012ae40);" (call_expression "outstr(command,*(FILE **)PTR_stdout_0012ae40)" identifier (argument_list "(command,*(FILE **)PTR_stdout_0012ae40)" ( identifier , (pointer_expression "*(FILE **)PTR_stdout_0012ae40" * (cast_expression "(FILE **)PTR_stdout_0012ae40" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) (expression_statement "ppaVar4 = __lookupalias(command);" (assignment_expression "ppaVar4 = __lookupalias(command)" identifier = (call_expression "__lookupalias(command)" identifier (argument_list "(command)" ( identifier )))) ;) (expression_statement "paVar9 = *ppaVar4;" (assignment_expression "paVar9 = *ppaVar4" identifier = (pointer_expression "*ppaVar4" * identifier)) ;) (if_statement "if (paVar9 != (alias *)0x0) {\n      outstr(PTR_UINT_0012a18c + 0x7efc,*(FILE **)PTR_stdout_0012ae40);\n      file = (FILE *)paVar9->name;\n      pcVar8 = single_quote(paVar9->val);\n      out1fmt(PTR_UINT_0012a18c + 0x7620,file,pcVar8);\n      iVar6 = *(int *)puVar1;\n      iVar5 = 0;\njoined_r0x00080680:\n      if (iVar2 != iVar6) goto LAB_0008073c;\n      return iVar5;\n    }" if (parenthesized_expression "(paVar9 != (alias *)0x0)" ( (binary_expression "paVar9 != (alias *)0x0" identifier != (cast_expression "(alias *)0x0" ( (type_descriptor "alias *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      outstr(PTR_UINT_0012a18c + 0x7efc,*(FILE **)PTR_stdout_0012ae40);\n      file = (FILE *)paVar9->name;\n      pcVar8 = single_quote(paVar9->val);\n      out1fmt(PTR_UINT_0012a18c + 0x7620,file,pcVar8);\n      iVar6 = *(int *)puVar1;\n      iVar5 = 0;\njoined_r0x00080680:\n      if (iVar2 != iVar6) goto LAB_0008073c;\n      return iVar5;\n    }" { (expression_statement "outstr(PTR_UINT_0012a18c + 0x7efc,*(FILE **)PTR_stdout_0012ae40);" (call_expression "outstr(PTR_UINT_0012a18c + 0x7efc,*(FILE **)PTR_stdout_0012ae40)" identifier (argument_list "(PTR_UINT_0012a18c + 0x7efc,*(FILE **)PTR_stdout_0012ae40)" ( (binary_expression "PTR_UINT_0012a18c + 0x7efc" identifier + number_literal) , (pointer_expression "*(FILE **)PTR_stdout_0012ae40" * (cast_expression "(FILE **)PTR_stdout_0012ae40" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "file = (FILE *)paVar9->name;" (assignment_expression "file = (FILE *)paVar9->name" identifier = (cast_expression "(FILE *)paVar9->name" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "paVar9->name" identifier -> field_identifier))) ;) (expression_statement "pcVar8 = single_quote(paVar9->val);" (assignment_expression "pcVar8 = single_quote(paVar9->val)" identifier = (call_expression "single_quote(paVar9->val)" identifier (argument_list "(paVar9->val)" ( (field_expression "paVar9->val" identifier -> field_identifier) )))) ;) (expression_statement "out1fmt(PTR_UINT_0012a18c + 0x7620,file,pcVar8);" (call_expression "out1fmt(PTR_UINT_0012a18c + 0x7620,file,pcVar8)" identifier (argument_list "(PTR_UINT_0012a18c + 0x7620,file,pcVar8)" ( (binary_expression "PTR_UINT_0012a18c + 0x7620" identifier + number_literal) , identifier , identifier ))) ;) (expression_statement "iVar6 = *(int *)puVar1;" (assignment_expression "iVar6 = *(int *)puVar1" identifier = (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (labeled_statement "joined_r0x00080680:\n      if (iVar2 != iVar6) goto LAB_0008073c;" statement_identifier : (if_statement "if (iVar2 != iVar6) goto LAB_0008073c;" if (parenthesized_expression "(iVar2 != iVar6)" ( (binary_expression "iVar2 != iVar6" identifier != identifier) )) (goto_statement "goto LAB_0008073c;" goto statement_identifier ;))) (return_statement "return iVar5;" return identifier ;) })) (expression_statement "file = (FILE *)&entry;" (assignment_expression "file = (FILE *)&entry" identifier = (cast_expression "(FILE *)&entry" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&entry" & identifier))) ;) (expression_statement "find_command(command,(cmdentry *)file,(int)&entry.u,&SUB_00000002,(cmdentry *)path);" (call_expression "find_command(command,(cmdentry *)file,(int)&entry.u,&SUB_00000002,(cmdentry *)path)" identifier (argument_list "(command,(cmdentry *)file,(int)&entry.u,&SUB_00000002,(cmdentry *)path)" ( identifier , (cast_expression "(cmdentry *)file" ( (type_descriptor "cmdentry *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)&entry.u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&entry.u" & (field_expression "entry.u" identifier . field_identifier))) , (pointer_expression "&SUB_00000002" & identifier) , (cast_expression "(cmdentry *)path" ( (type_descriptor "cmdentry *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "paVar9 = (alias *)PTR_stdout_0012ae40;" (assignment_expression "paVar9 = (alias *)PTR_stdout_0012ae40" identifier = (cast_expression "(alias *)PTR_stdout_0012ae40" ( (type_descriptor "alias *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (entry.cmdtype == '\x01') goto LAB_000806f4;" if (parenthesized_expression "(entry.cmdtype == '\x01')" ( (binary_expression "entry.cmdtype == '\x01'" (field_expression "entry.cmdtype" identifier . field_identifier) == (char_literal "'\x01'" ' escape_sequence ')) )) (goto_statement "goto LAB_000806f4;" goto statement_identifier ;)) (if_statement "if (entry.cmdtype == '\x02') {\n      outstr(command,*(FILE **)PTR_stdout_0012ae40);\n      goto LAB_0008070c;\n    }" if (parenthesized_expression "(entry.cmdtype == '\x02')" ( (binary_expression "entry.cmdtype == '\x02'" (field_expression "entry.cmdtype" identifier . field_identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      outstr(command,*(FILE **)PTR_stdout_0012ae40);\n      goto LAB_0008070c;\n    }" { (expression_statement "outstr(command,*(FILE **)PTR_stdout_0012ae40);" (call_expression "outstr(command,*(FILE **)PTR_stdout_0012ae40)" identifier (argument_list "(command,*(FILE **)PTR_stdout_0012ae40)" ( identifier , (pointer_expression "*(FILE **)PTR_stdout_0012ae40" * (cast_expression "(FILE **)PTR_stdout_0012ae40" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) (if_statement "if (entry.cmdtype != '\0') {\n      iVar6 = *(int *)puVar1;\n      iVar5 = 0x7f;\n      goto joined_r0x00080680;\n    }" if (parenthesized_expression "(entry.cmdtype != '\0')" ( (binary_expression "entry.cmdtype != '\0'" (field_expression "entry.cmdtype" identifier . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar6 = *(int *)puVar1;\n      iVar5 = 0x7f;\n      goto joined_r0x00080680;\n    }" { (expression_statement "iVar6 = *(int *)puVar1;" (assignment_expression "iVar6 = *(int *)puVar1" identifier = (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar5 = 0x7f;" (assignment_expression "iVar5 = 0x7f" identifier = number_literal) ;) (goto_statement "goto joined_r0x00080680;" goto statement_identifier ;) })) (labeled_statement "LAB_00080778:\n    pcVar8 = command;" statement_identifier : (expression_statement "pcVar8 = command;" (assignment_expression "pcVar8 = command" identifier = identifier) ;)) (if_statement "if (-1 < entry.u.index) {\n      iVar5 = *(int *)PTR_ash_ptr_to_globals_memstack_0012a858;\n      pVar10 = entry.u;\n      do {\n        pcVar8 = path_advance((char **)apcStack_3c,command);\n        pVar10.cmd = (builtincmd *)(pVar10.index + -1);\n        iVar6 = *(int *)(iVar5 + 4);\n        *(char **)(iVar5 + 4) = pcVar8;\n        *(int *)(iVar5 + 0xc) = *(int *)(iVar5 + 0xc) + (iVar6 - (int)pcVar8);\n      } while (pVar10.index != -1);\n    }" if (parenthesized_expression "(-1 < entry.u.index)" ( (binary_expression "-1 < entry.u.index" number_literal < (field_expression "entry.u.index" (field_expression "entry.u" identifier . field_identifier) . field_identifier)) )) (compound_statement "{\n      iVar5 = *(int *)PTR_ash_ptr_to_globals_memstack_0012a858;\n      pVar10 = entry.u;\n      do {\n        pcVar8 = path_advance((char **)apcStack_3c,command);\n        pVar10.cmd = (builtincmd *)(pVar10.index + -1);\n        iVar6 = *(int *)(iVar5 + 4);\n        *(char **)(iVar5 + 4) = pcVar8;\n        *(int *)(iVar5 + 0xc) = *(int *)(iVar5 + 0xc) + (iVar6 - (int)pcVar8);\n      } while (pVar10.index != -1);\n    }" { (expression_statement "iVar5 = *(int *)PTR_ash_ptr_to_globals_memstack_0012a858;" (assignment_expression "iVar5 = *(int *)PTR_ash_ptr_to_globals_memstack_0012a858" identifier = (pointer_expression "*(int *)PTR_ash_ptr_to_globals_memstack_0012a858" * (cast_expression "(int *)PTR_ash_ptr_to_globals_memstack_0012a858" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pVar10 = entry.u;" (assignment_expression "pVar10 = entry.u" identifier = (field_expression "entry.u" identifier . field_identifier)) ;) (do_statement "do {\n        pcVar8 = path_advance((char **)apcStack_3c,command);\n        pVar10.cmd = (builtincmd *)(pVar10.index + -1);\n        iVar6 = *(int *)(iVar5 + 4);\n        *(char **)(iVar5 + 4) = pcVar8;\n        *(int *)(iVar5 + 0xc) = *(int *)(iVar5 + 0xc) + (iVar6 - (int)pcVar8);\n      } while (pVar10.index != -1);" do (compound_statement "{\n        pcVar8 = path_advance((char **)apcStack_3c,command);\n        pVar10.cmd = (builtincmd *)(pVar10.index + -1);\n        iVar6 = *(int *)(iVar5 + 4);\n        *(char **)(iVar5 + 4) = pcVar8;\n        *(int *)(iVar5 + 0xc) = *(int *)(iVar5 + 0xc) + (iVar6 - (int)pcVar8);\n      }" { (expression_statement "pcVar8 = path_advance((char **)apcStack_3c,command);" (assignment_expression "pcVar8 = path_advance((char **)apcStack_3c,command)" identifier = (call_expression "path_advance((char **)apcStack_3c,command)" identifier (argument_list "((char **)apcStack_3c,command)" ( (cast_expression "(char **)apcStack_3c" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , identifier )))) ;) (expression_statement "pVar10.cmd = (builtincmd *)(pVar10.index + -1);" (assignment_expression "pVar10.cmd = (builtincmd *)(pVar10.index + -1)" (field_expression "pVar10.cmd" identifier . field_identifier) = (cast_expression "(builtincmd *)(pVar10.index + -1)" ( (type_descriptor "builtincmd *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pVar10.index + -1)" ( (binary_expression "pVar10.index + -1" (field_expression "pVar10.index" identifier . field_identifier) + number_literal) )))) ;) (expression_statement "iVar6 = *(int *)(iVar5 + 4);" (assignment_expression "iVar6 = *(int *)(iVar5 + 4)" identifier = (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(char **)(iVar5 + 4) = pcVar8;" (assignment_expression "*(char **)(iVar5 + 4) = pcVar8" (pointer_expression "*(char **)(iVar5 + 4)" * (cast_expression "(char **)(iVar5 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar5 + 0xc) = *(int *)(iVar5 + 0xc) + (iVar6 - (int)pcVar8);" (assignment_expression "*(int *)(iVar5 + 0xc) = *(int *)(iVar5 + 0xc) + (iVar6 - (int)pcVar8)" (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar5 + 0xc) + (iVar6 - (int)pcVar8)" (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) + (parenthesized_expression "(iVar6 - (int)pcVar8)" ( (binary_expression "iVar6 - (int)pcVar8" identifier - (cast_expression "(int)pcVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }) while (parenthesized_expression "(pVar10.index != -1)" ( (binary_expression "pVar10.index != -1" (field_expression "pVar10.index" identifier . field_identifier) != number_literal) )) ;) })) (if_statement "if (describe_command_verbose != 0) {\n      out1fmt(PTR_UINT_0012a18c + 0x7f18,pcVar8);\n      goto LAB_0008070c;\n    }" if (parenthesized_expression "(describe_command_verbose != 0)" ( (binary_expression "describe_command_verbose != 0" identifier != number_literal) )) (compound_statement "{\n      out1fmt(PTR_UINT_0012a18c + 0x7f18,pcVar8);\n      goto LAB_0008070c;\n    }" { (expression_statement "out1fmt(PTR_UINT_0012a18c + 0x7f18,pcVar8);" (call_expression "out1fmt(PTR_UINT_0012a18c + 0x7f18,pcVar8)" identifier (argument_list "(PTR_UINT_0012a18c + 0x7f18,pcVar8)" ( (binary_expression "PTR_UINT_0012a18c + 0x7f18" identifier + number_literal) , identifier ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) }) (else_clause "else {\n    outstr(command,*(FILE **)PTR_stdout_0012ae40);\n    ppcVar3 = findkwd(command);\n    if (ppcVar3 == (char **)0x0) {\n      ppaVar4 = __lookupalias(command);\n      if (*ppaVar4 != (alias *)0x0) {\n        out1fmt(PTR_UINT_0012a18c + 0x7f04,(*ppaVar4)->val);\n        goto LAB_0008070c;\n      }\n      find_command(command,&entry,(int)&entry.u,&SUB_00000002,apcStack_3c[0]);\n      if (entry.cmdtype == '\x01') {\nLAB_000806f4:\n        file = (FILE *)paVar9->next;\n        if (describe_command_verbose != 0) goto LAB_00080744;\n        outstr(command,file);\n        goto LAB_0008070c;\n      }\n      if (entry.cmdtype == '\x02') {\n        if ((*(entry.u.cmd)->name & 1U) == 0) {\n          puVar7 = (undefined *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c);\n        }\n        else {\n          puVar7 = PTR_UINT_0012a18c + 0x7ef0;\n        }\n        out1fmt(PTR_UINT_0012a18c + 0x7f30,puVar7);\n        goto LAB_0008070c;\n      }\n      if (entry.cmdtype != '\0') {\n        file = *(FILE **)paVar9;\n        outstr(PTR_UINT_0012a18c + 0x7f48,file);\n        iVar5 = 0x7f;\n        iVar6 = *(int *)puVar1;\n        goto joined_r0x00080680;\n      }\n      goto LAB_00080778;\n    }\n    pcVar8 = PTR_UINT_0012a18c + 0x7edc;\n  }" else (compound_statement "{\n    outstr(command,*(FILE **)PTR_stdout_0012ae40);\n    ppcVar3 = findkwd(command);\n    if (ppcVar3 == (char **)0x0) {\n      ppaVar4 = __lookupalias(command);\n      if (*ppaVar4 != (alias *)0x0) {\n        out1fmt(PTR_UINT_0012a18c + 0x7f04,(*ppaVar4)->val);\n        goto LAB_0008070c;\n      }\n      find_command(command,&entry,(int)&entry.u,&SUB_00000002,apcStack_3c[0]);\n      if (entry.cmdtype == '\x01') {\nLAB_000806f4:\n        file = (FILE *)paVar9->next;\n        if (describe_command_verbose != 0) goto LAB_00080744;\n        outstr(command,file);\n        goto LAB_0008070c;\n      }\n      if (entry.cmdtype == '\x02') {\n        if ((*(entry.u.cmd)->name & 1U) == 0) {\n          puVar7 = (undefined *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c);\n        }\n        else {\n          puVar7 = PTR_UINT_0012a18c + 0x7ef0;\n        }\n        out1fmt(PTR_UINT_0012a18c + 0x7f30,puVar7);\n        goto LAB_0008070c;\n      }\n      if (entry.cmdtype != '\0') {\n        file = *(FILE **)paVar9;\n        outstr(PTR_UINT_0012a18c + 0x7f48,file);\n        iVar5 = 0x7f;\n        iVar6 = *(int *)puVar1;\n        goto joined_r0x00080680;\n      }\n      goto LAB_00080778;\n    }\n    pcVar8 = PTR_UINT_0012a18c + 0x7edc;\n  }" { (expression_statement "outstr(command,*(FILE **)PTR_stdout_0012ae40);" (call_expression "outstr(command,*(FILE **)PTR_stdout_0012ae40)" identifier (argument_list "(command,*(FILE **)PTR_stdout_0012ae40)" ( identifier , (pointer_expression "*(FILE **)PTR_stdout_0012ae40" * (cast_expression "(FILE **)PTR_stdout_0012ae40" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "ppcVar3 = findkwd(command);" (assignment_expression "ppcVar3 = findkwd(command)" identifier = (call_expression "findkwd(command)" identifier (argument_list "(command)" ( identifier )))) ;) (if_statement "if (ppcVar3 == (char **)0x0) {\n      ppaVar4 = __lookupalias(command);\n      if (*ppaVar4 != (alias *)0x0) {\n        out1fmt(PTR_UINT_0012a18c + 0x7f04,(*ppaVar4)->val);\n        goto LAB_0008070c;\n      }\n      find_command(command,&entry,(int)&entry.u,&SUB_00000002,apcStack_3c[0]);\n      if (entry.cmdtype == '\x01') {\nLAB_000806f4:\n        file = (FILE *)paVar9->next;\n        if (describe_command_verbose != 0) goto LAB_00080744;\n        outstr(command,file);\n        goto LAB_0008070c;\n      }\n      if (entry.cmdtype == '\x02') {\n        if ((*(entry.u.cmd)->name & 1U) == 0) {\n          puVar7 = (undefined *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c);\n        }\n        else {\n          puVar7 = PTR_UINT_0012a18c + 0x7ef0;\n        }\n        out1fmt(PTR_UINT_0012a18c + 0x7f30,puVar7);\n        goto LAB_0008070c;\n      }\n      if (entry.cmdtype != '\0') {\n        file = *(FILE **)paVar9;\n        outstr(PTR_UINT_0012a18c + 0x7f48,file);\n        iVar5 = 0x7f;\n        iVar6 = *(int *)puVar1;\n        goto joined_r0x00080680;\n      }\n      goto LAB_00080778;\n    }" if (parenthesized_expression "(ppcVar3 == (char **)0x0)" ( (binary_expression "ppcVar3 == (char **)0x0" identifier == (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n      ppaVar4 = __lookupalias(command);\n      if (*ppaVar4 != (alias *)0x0) {\n        out1fmt(PTR_UINT_0012a18c + 0x7f04,(*ppaVar4)->val);\n        goto LAB_0008070c;\n      }\n      find_command(command,&entry,(int)&entry.u,&SUB_00000002,apcStack_3c[0]);\n      if (entry.cmdtype == '\x01') {\nLAB_000806f4:\n        file = (FILE *)paVar9->next;\n        if (describe_command_verbose != 0) goto LAB_00080744;\n        outstr(command,file);\n        goto LAB_0008070c;\n      }\n      if (entry.cmdtype == '\x02') {\n        if ((*(entry.u.cmd)->name & 1U) == 0) {\n          puVar7 = (undefined *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c);\n        }\n        else {\n          puVar7 = PTR_UINT_0012a18c + 0x7ef0;\n        }\n        out1fmt(PTR_UINT_0012a18c + 0x7f30,puVar7);\n        goto LAB_0008070c;\n      }\n      if (entry.cmdtype != '\0') {\n        file = *(FILE **)paVar9;\n        outstr(PTR_UINT_0012a18c + 0x7f48,file);\n        iVar5 = 0x7f;\n        iVar6 = *(int *)puVar1;\n        goto joined_r0x00080680;\n      }\n      goto LAB_00080778;\n    }" { (expression_statement "ppaVar4 = __lookupalias(command);" (assignment_expression "ppaVar4 = __lookupalias(command)" identifier = (call_expression "__lookupalias(command)" identifier (argument_list "(command)" ( identifier )))) ;) (if_statement "if (*ppaVar4 != (alias *)0x0) {\n        out1fmt(PTR_UINT_0012a18c + 0x7f04,(*ppaVar4)->val);\n        goto LAB_0008070c;\n      }" if (parenthesized_expression "(*ppaVar4 != (alias *)0x0)" ( (binary_expression "*ppaVar4 != (alias *)0x0" (pointer_expression "*ppaVar4" * identifier) != (cast_expression "(alias *)0x0" ( (type_descriptor "alias *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        out1fmt(PTR_UINT_0012a18c + 0x7f04,(*ppaVar4)->val);\n        goto LAB_0008070c;\n      }" { (expression_statement "out1fmt(PTR_UINT_0012a18c + 0x7f04,(*ppaVar4)->val);" (call_expression "out1fmt(PTR_UINT_0012a18c + 0x7f04,(*ppaVar4)->val)" identifier (argument_list "(PTR_UINT_0012a18c + 0x7f04,(*ppaVar4)->val)" ( (binary_expression "PTR_UINT_0012a18c + 0x7f04" identifier + number_literal) , (field_expression "(*ppaVar4)->val" (parenthesized_expression "(*ppaVar4)" ( (pointer_expression "*ppaVar4" * identifier) )) -> field_identifier) ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) (expression_statement "find_command(command,&entry,(int)&entry.u,&SUB_00000002,apcStack_3c[0]);" (call_expression "find_command(command,&entry,(int)&entry.u,&SUB_00000002,apcStack_3c[0])" identifier (argument_list "(command,&entry,(int)&entry.u,&SUB_00000002,apcStack_3c[0])" ( identifier , (pointer_expression "&entry" & identifier) , (cast_expression "(int)&entry.u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&entry.u" & (field_expression "entry.u" identifier . field_identifier))) , (pointer_expression "&SUB_00000002" & identifier) , (subscript_expression "apcStack_3c[0]" identifier [ number_literal ]) ))) ;) (if_statement "if (entry.cmdtype == '\x01') {\nLAB_000806f4:\n        file = (FILE *)paVar9->next;\n        if (describe_command_verbose != 0) goto LAB_00080744;\n        outstr(command,file);\n        goto LAB_0008070c;\n      }" if (parenthesized_expression "(entry.cmdtype == '\x01')" ( (binary_expression "entry.cmdtype == '\x01'" (field_expression "entry.cmdtype" identifier . field_identifier) == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\nLAB_000806f4:\n        file = (FILE *)paVar9->next;\n        if (describe_command_verbose != 0) goto LAB_00080744;\n        outstr(command,file);\n        goto LAB_0008070c;\n      }" { (labeled_statement "LAB_000806f4:\n        file = (FILE *)paVar9->next;" statement_identifier : (expression_statement "file = (FILE *)paVar9->next;" (assignment_expression "file = (FILE *)paVar9->next" identifier = (cast_expression "(FILE *)paVar9->next" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "paVar9->next" identifier -> field_identifier))) ;)) (if_statement "if (describe_command_verbose != 0) goto LAB_00080744;" if (parenthesized_expression "(describe_command_verbose != 0)" ( (binary_expression "describe_command_verbose != 0" identifier != number_literal) )) (goto_statement "goto LAB_00080744;" goto statement_identifier ;)) (expression_statement "outstr(command,file);" (call_expression "outstr(command,file)" identifier (argument_list "(command,file)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) (if_statement "if (entry.cmdtype == '\x02') {\n        if ((*(entry.u.cmd)->name & 1U) == 0) {\n          puVar7 = (undefined *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c);\n        }\n        else {\n          puVar7 = PTR_UINT_0012a18c + 0x7ef0;\n        }\n        out1fmt(PTR_UINT_0012a18c + 0x7f30,puVar7);\n        goto LAB_0008070c;\n      }" if (parenthesized_expression "(entry.cmdtype == '\x02')" ( (binary_expression "entry.cmdtype == '\x02'" (field_expression "entry.cmdtype" identifier . field_identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n        if ((*(entry.u.cmd)->name & 1U) == 0) {\n          puVar7 = (undefined *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c);\n        }\n        else {\n          puVar7 = PTR_UINT_0012a18c + 0x7ef0;\n        }\n        out1fmt(PTR_UINT_0012a18c + 0x7f30,puVar7);\n        goto LAB_0008070c;\n      }" { (if_statement "if ((*(entry.u.cmd)->name & 1U) == 0) {\n          puVar7 = (undefined *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c);\n        }\n        else {\n          puVar7 = PTR_UINT_0012a18c + 0x7ef0;\n        }" if (parenthesized_expression "((*(entry.u.cmd)->name & 1U) == 0)" ( (binary_expression "(*(entry.u.cmd)->name & 1U) == 0" (parenthesized_expression "(*(entry.u.cmd)->name & 1U)" ( (binary_expression "*(entry.u.cmd)->name & 1U" (pointer_expression "*(entry.u.cmd)->name" * (field_expression "(entry.u.cmd)->name" (parenthesized_expression "(entry.u.cmd)" ( (field_expression "entry.u.cmd" (field_expression "entry.u" identifier . field_identifier) . field_identifier) )) -> field_identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n          puVar7 = (undefined *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c);\n        }" { (expression_statement "puVar7 = (undefined *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c);" (assignment_expression "puVar7 = (undefined *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c)" identifier = (cast_expression "(undefined *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c)" ( (binary_expression "*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c" (pointer_expression "*(int *)PTR_ash_ptr_to_globals_misc_0012a84c" * (cast_expression "(int *)PTR_ash_ptr_to_globals_misc_0012a84c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) ;) }) (else_clause "else {\n          puVar7 = PTR_UINT_0012a18c + 0x7ef0;\n        }" else (compound_statement "{\n          puVar7 = PTR_UINT_0012a18c + 0x7ef0;\n        }" { (expression_statement "puVar7 = PTR_UINT_0012a18c + 0x7ef0;" (assignment_expression "puVar7 = PTR_UINT_0012a18c + 0x7ef0" identifier = (binary_expression "PTR_UINT_0012a18c + 0x7ef0" identifier + number_literal)) ;) }))) (expression_statement "out1fmt(PTR_UINT_0012a18c + 0x7f30,puVar7);" (call_expression "out1fmt(PTR_UINT_0012a18c + 0x7f30,puVar7)" identifier (argument_list "(PTR_UINT_0012a18c + 0x7f30,puVar7)" ( (binary_expression "PTR_UINT_0012a18c + 0x7f30" identifier + number_literal) , identifier ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) (if_statement "if (entry.cmdtype != '\0') {\n        file = *(FILE **)paVar9;\n        outstr(PTR_UINT_0012a18c + 0x7f48,file);\n        iVar5 = 0x7f;\n        iVar6 = *(int *)puVar1;\n        goto joined_r0x00080680;\n      }" if (parenthesized_expression "(entry.cmdtype != '\0')" ( (binary_expression "entry.cmdtype != '\0'" (field_expression "entry.cmdtype" identifier . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        file = *(FILE **)paVar9;\n        outstr(PTR_UINT_0012a18c + 0x7f48,file);\n        iVar5 = 0x7f;\n        iVar6 = *(int *)puVar1;\n        goto joined_r0x00080680;\n      }" { (expression_statement "file = *(FILE **)paVar9;" (assignment_expression "file = *(FILE **)paVar9" identifier = (pointer_expression "*(FILE **)paVar9" * (cast_expression "(FILE **)paVar9" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "outstr(PTR_UINT_0012a18c + 0x7f48,file);" (call_expression "outstr(PTR_UINT_0012a18c + 0x7f48,file)" identifier (argument_list "(PTR_UINT_0012a18c + 0x7f48,file)" ( (binary_expression "PTR_UINT_0012a18c + 0x7f48" identifier + number_literal) , identifier ))) ;) (expression_statement "iVar5 = 0x7f;" (assignment_expression "iVar5 = 0x7f" identifier = number_literal) ;) (expression_statement "iVar6 = *(int *)puVar1;" (assignment_expression "iVar6 = *(int *)puVar1" identifier = (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (goto_statement "goto joined_r0x00080680;" goto statement_identifier ;) })) (goto_statement "goto LAB_00080778;" goto statement_identifier ;) })) (expression_statement "pcVar8 = PTR_UINT_0012a18c + 0x7edc;" (assignment_expression "pcVar8 = PTR_UINT_0012a18c + 0x7edc" identifier = (binary_expression "PTR_UINT_0012a18c + 0x7edc" identifier + number_literal)) ;) }))) (expression_statement "outstr(pcVar8,(FILE *)paVar9->next);" (call_expression "outstr(pcVar8,(FILE *)paVar9->next)" identifier (argument_list "(pcVar8,(FILE *)paVar9->next)" ( identifier , (cast_expression "(FILE *)paVar9->next" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "paVar9->next" identifier -> field_identifier)) ))) ;) (labeled_statement "LAB_0008070c:\n  while( true ) {\n    file = (FILE *)paVar9->next;\n    outstr(PTR_UINT_0012a18c + -0xea0,file);\n    if (iVar2 == *(int *)puVar1) break;\nLAB_0008073c:\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_00080744:\n    outstr(PTR_UINT_0012a18c + 0x7f20,file);\n  }" statement_identifier : (while_statement "while( true ) {\n    file = (FILE *)paVar9->next;\n    outstr(PTR_UINT_0012a18c + -0xea0,file);\n    if (iVar2 == *(int *)puVar1) break;\nLAB_0008073c:\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_00080744:\n    outstr(PTR_UINT_0012a18c + 0x7f20,file);\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    file = (FILE *)paVar9->next;\n    outstr(PTR_UINT_0012a18c + -0xea0,file);\n    if (iVar2 == *(int *)puVar1) break;\nLAB_0008073c:\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_00080744:\n    outstr(PTR_UINT_0012a18c + 0x7f20,file);\n  }" { (expression_statement "file = (FILE *)paVar9->next;" (assignment_expression "file = (FILE *)paVar9->next" identifier = (cast_expression "(FILE *)paVar9->next" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "paVar9->next" identifier -> field_identifier))) ;) (expression_statement "outstr(PTR_UINT_0012a18c + -0xea0,file);" (call_expression "outstr(PTR_UINT_0012a18c + -0xea0,file)" identifier (argument_list "(PTR_UINT_0012a18c + -0xea0,file)" ( (binary_expression "PTR_UINT_0012a18c + -0xea0" identifier + number_literal) , identifier ))) ;) (if_statement "if (iVar2 == *(int *)puVar1) break;" if (parenthesized_expression "(iVar2 == *(int *)puVar1)" ( (binary_expression "iVar2 == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0008073c:\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();" statement_identifier : (expression_statement "(*(code *)PTR___stack_chk_fail_0012b0c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" * (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;)) (labeled_statement "LAB_00080744:\n    outstr(PTR_UINT_0012a18c + 0x7f20,file);" statement_identifier : (expression_statement "outstr(PTR_UINT_0012a18c + 0x7f20,file);" (call_expression "outstr(PTR_UINT_0012a18c + 0x7f20,file)" identifier (argument_list "(PTR_UINT_0012a18c + 0x7f20,file)" ( (binary_expression "PTR_UINT_0012a18c + 0x7f20" identifier + number_literal) , identifier ))) ;)) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined4 FUN_000804fc(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  int in_t9;\n  code *pcVar10;\n  int local_3c [2];\n  char local_34 [4];\n  undefined4 *local_30;\n  int local_2c;\n  \n  piVar6 = *(int **)(in_t9 + 0xaac50);\n  local_2c = *piVar6;\n  if (param_2 == 0) {\n    param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;\n  }\n  local_3c[0] = param_2;\n  if (param_3 == 0) {\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = (undefined4 *)FUN_0006cfd8(param_1);\n    puVar7 = (undefined4 *)*puVar7;\n    if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }\n    FUN_0007fe58(param_1,local_34,&local_30,2,param_2);\n    if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_00080778:\n    iVar1 = param_1;\n    if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }\n    if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }\n  }\n  else {\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }\n  FUN_00071ae0(iVar1,*puVar7);\nLAB_0008070c:\n  while (FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6) {\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_000804fc(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  int in_t9;\n  code *pcVar10;\n  int local_3c [2];\n  char local_34 [4];\n  undefined4 *local_30;\n  int local_2c;\n  \n  piVar6 = *(int **)(in_t9 + 0xaac50);\n  local_2c = *piVar6;\n  if (param_2 == 0) {\n    param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;\n  }\n  local_3c[0] = param_2;\n  if (param_3 == 0) {\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = (undefined4 *)FUN_0006cfd8(param_1);\n    puVar7 = (undefined4 *)*puVar7;\n    if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }\n    FUN_0007fe58(param_1,local_34,&local_30,2,param_2);\n    if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_00080778:\n    iVar1 = param_1;\n    if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }\n    if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }\n  }\n  else {\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }\n  FUN_00071ae0(iVar1,*puVar7);\nLAB_0008070c:\n  while (FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6) {\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_000804fc(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  int in_t9;\n  code *pcVar10;\n  int local_3c [2];\n  char local_34 [4];\n  undefined4 *local_30;\n  int local_2c;\n  \n  piVar6 = *(int **)(in_t9 + 0xaac50);\n  local_2c = *piVar6;\n  if (param_2 == 0) {\n    param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;\n  }\n  local_3c[0] = param_2;\n  if (param_3 == 0) {\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = (undefined4 *)FUN_0006cfd8(param_1);\n    puVar7 = (undefined4 *)*puVar7;\n    if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }\n    FUN_0007fe58(param_1,local_34,&local_30,2,param_2);\n    if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_00080778:\n    iVar1 = param_1;\n    if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }\n    if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }\n  }\n  else {\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }\n  FUN_00071ae0(iVar1,*puVar7);\nLAB_0008070c:\n  while (FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6) {\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "code *pcVar10;" type_identifier (pointer_declarator "*pcVar10" * identifier) ;) (declaration "int local_3c [2];" primitive_type (array_declarator "local_3c [2]" identifier [ number_literal ]) ;) (declaration "char local_34 [4];" primitive_type (array_declarator "local_34 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "piVar6 = *(int **)(in_t9 + 0xaac50);" (assignment_expression "piVar6 = *(int **)(in_t9 + 0xaac50)" identifier = (pointer_expression "*(int **)(in_t9 + 0xaac50)" * (cast_expression "(int **)(in_t9 + 0xaac50)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaac50)" ( (binary_expression "in_t9 + 0xaac50" identifier + number_literal) ))))) ;) (expression_statement "local_2c = *piVar6;" (assignment_expression "local_2c = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (if_statement "if (param_2 == 0) {\n    param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;\n  }" { (expression_statement "param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;" (assignment_expression "param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5" identifier = (binary_expression "*(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5" (pointer_expression "*(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0)" * (cast_expression "(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(**(int **)(in_t9 + 0xaa354) + 0xf0)" ( (binary_expression "**(int **)(in_t9 + 0xaa354) + 0xf0" (pointer_expression "**(int **)(in_t9 + 0xaa354)" * (pointer_expression "*(int **)(in_t9 + 0xaa354)" * (cast_expression "(int **)(in_t9 + 0xaa354)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa354)" ( (binary_expression "in_t9 + 0xaa354" identifier + number_literal) ))))) + number_literal) )))) + number_literal)) ;) })) (expression_statement "local_3c[0] = param_2;" (assignment_expression "local_3c[0] = param_2" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_3 == 0) {\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = (undefined4 *)FUN_0006cfd8(param_1);\n    puVar7 = (undefined4 *)*puVar7;\n    if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }\n    FUN_0007fe58(param_1,local_34,&local_30,2,param_2);\n    if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_00080778:\n    iVar1 = param_1;\n    if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }\n    if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }\n  }\n  else {\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = (undefined4 *)FUN_0006cfd8(param_1);\n    puVar7 = (undefined4 *)*puVar7;\n    if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }\n    FUN_0007fe58(param_1,local_34,&local_30,2,param_2);\n    if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_00080778:\n    iVar1 = param_1;\n    if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }\n    if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }\n  }" { (expression_statement "iVar1 = FUN_0006d194(param_1);" (assignment_expression "iVar1 = FUN_0006d194(param_1)" identifier = (call_expression "FUN_0006d194(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" { (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0xaa944);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0xaa944)" identifier = (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" * (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa944)" ( (binary_expression "in_t9 + 0xaa944" identifier + number_literal) ))))) ;) (expression_statement "FUN_00071ae0(param_1,*puVar7);" (call_expression "FUN_00071ae0(param_1,*puVar7)" identifier (argument_list "(param_1,*puVar7)" ( identifier , (pointer_expression "*puVar7" * identifier) ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) (expression_statement "puVar7 = (undefined4 *)FUN_0006cfd8(param_1);" (assignment_expression "puVar7 = (undefined4 *)FUN_0006cfd8(param_1)" identifier = (cast_expression "(undefined4 *)FUN_0006cfd8(param_1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0006cfd8(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (expression_statement "puVar7 = (undefined4 *)*puVar7;" (assignment_expression "puVar7 = (undefined4 *)*puVar7" identifier = (cast_expression "(undefined4 *)*puVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier))) ;) (if_statement "if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }" if (parenthesized_expression "(puVar7 != (undefined4 *)0x0)" ( (binary_expression "puVar7 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }" { (expression_statement "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));" (call_expression "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944))" identifier (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944))" ( (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7efc" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal) , (pointer_expression "**(undefined4 **)(in_t9 + 0xaa944)" * (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" * (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa944)" ( (binary_expression "in_t9 + 0xaa944" identifier + number_literal) ))))) ))) ;) (expression_statement "uVar5 = puVar7[1];" (assignment_expression "uVar5 = puVar7[1]" identifier = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = FUN_00073c90(puVar7[2]);" (assignment_expression "uVar2 = FUN_00073c90(puVar7[2])" identifier = (call_expression "FUN_00073c90(puVar7[2])" identifier (argument_list "(puVar7[2])" ( (subscript_expression "puVar7[2]" identifier [ number_literal ]) )))) ;) (expression_statement "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);" (call_expression "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2)" identifier (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2)" ( (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7620" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal) , identifier , identifier ))) ;) (if_statement "if (local_2c != *piVar6) goto LAB_00080738;" if (parenthesized_expression "(local_2c != *piVar6)" ( (binary_expression "local_2c != *piVar6" identifier != (pointer_expression "*piVar6" * identifier)) )) (goto_statement "goto LAB_00080738;" goto statement_identifier ;)) (return_statement "return 0;" return number_literal ;) })) (expression_statement "FUN_0007fe58(param_1,local_34,&local_30,2,param_2);" (call_expression "FUN_0007fe58(param_1,local_34,&local_30,2,param_2)" identifier (argument_list "(param_1,local_34,&local_30,2,param_2)" ( identifier , identifier , (pointer_expression "&local_30" & identifier) , number_literal , identifier ))) ;) (if_statement "if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" if (parenthesized_expression "(local_34[0] == '\x01')" ( (binary_expression "local_34[0] == '\x01'" (subscript_expression "local_34[0]" identifier [ number_literal ]) == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" { (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0xaa944);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0xaa944)" identifier = (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" * (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa944)" ( (binary_expression "in_t9 + 0xaa944" identifier + number_literal) ))))) ;) (labeled_statement "LAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;" statement_identifier : (if_statement "if (param_3 != 0) goto LAB_00080744;" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00080744;" goto statement_identifier ;))) (expression_statement "FUN_00071ae0(param_1,*puVar7);" (call_expression "FUN_00071ae0(param_1,*puVar7)" identifier (argument_list "(param_1,*puVar7)" ( identifier , (pointer_expression "*puVar7" * identifier) ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0xaa944);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0xaa944)" identifier = (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" * (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa944)" ( (binary_expression "in_t9 + 0xaa944" identifier + number_literal) ))))) ;) (if_statement "if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" if (parenthesized_expression "(local_34[0] == '\x02')" ( (binary_expression "local_34[0] == '\x02'" (subscript_expression "local_34[0]" identifier [ number_literal ]) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" { (expression_statement "FUN_00071ae0(param_1,*puVar7);" (call_expression "FUN_00071ae0(param_1,*puVar7)" identifier (argument_list "(param_1,*puVar7)" ( identifier , (pointer_expression "*puVar7" * identifier) ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) (if_statement "if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }" if (parenthesized_expression "(local_34[0] != '\0')" ( (binary_expression "local_34[0] != '\0'" (subscript_expression "local_34[0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }" { (if_statement "if (local_2c == *piVar6) {\n        return 0x7f;\n      }" if (parenthesized_expression "(local_2c == *piVar6)" ( (binary_expression "local_2c == *piVar6" identifier == (pointer_expression "*piVar6" * identifier)) )) (compound_statement "{\n        return 0x7f;\n      }" { (return_statement "return 0x7f;" return number_literal ;) })) (expression_statement "pcVar10 = *(code **)(in_t9 + 0xaabcc);" (assignment_expression "pcVar10 = *(code **)(in_t9 + 0xaabcc)" identifier = (pointer_expression "*(code **)(in_t9 + 0xaabcc)" * (cast_expression "(code **)(in_t9 + 0xaabcc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaabcc)" ( (binary_expression "in_t9 + 0xaabcc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0008073c;" goto statement_identifier ;) })) (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0xaa944);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0xaa944)" identifier = (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" * (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa944)" ( (binary_expression "in_t9 + 0xaa944" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00080778:\n    iVar1 = param_1;" statement_identifier : (expression_statement "iVar1 = param_1;" (assignment_expression "iVar1 = param_1" identifier = identifier) ;)) (if_statement "if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }" if (parenthesized_expression "(-1 < (int)local_30)" ( (binary_expression "-1 < (int)local_30" number_literal < (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }" { (expression_statement "iVar8 = **(int **)(in_t9 + 0xaa35c);" (assignment_expression "iVar8 = **(int **)(in_t9 + 0xaa35c)" identifier = (pointer_expression "**(int **)(in_t9 + 0xaa35c)" * (pointer_expression "*(int **)(in_t9 + 0xaa35c)" * (cast_expression "(int **)(in_t9 + 0xaa35c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa35c)" ( (binary_expression "in_t9 + 0xaa35c" identifier + number_literal) )))))) ;) (expression_statement "puVar9 = local_30;" (assignment_expression "puVar9 = local_30" identifier = identifier) ;) (do_statement "do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);" do (compound_statement "{\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      }" { (expression_statement "iVar1 = FUN_00075108(local_3c,param_1);" (assignment_expression "iVar1 = FUN_00075108(local_3c,param_1)" identifier = (call_expression "FUN_00075108(local_3c,param_1)" identifier (argument_list "(local_3c,param_1)" ( identifier , identifier )))) ;) (expression_statement "puVar9 = (undefined4 *)((int)puVar9 + -1);" (assignment_expression "puVar9 = (undefined4 *)((int)puVar9 + -1)" identifier = (cast_expression "(undefined4 *)((int)puVar9 + -1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + -1)" ( (binary_expression "(int)puVar9 + -1" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar4 = *(int *)(iVar8 + 4);" (assignment_expression "iVar4 = *(int *)(iVar8 + 4)" identifier = (pointer_expression "*(int *)(iVar8 + 4)" * (cast_expression "(int *)(iVar8 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar8 + 4) = iVar1;" (assignment_expression "*(int *)(iVar8 + 4) = iVar1" (pointer_expression "*(int *)(iVar8 + 4)" * (cast_expression "(int *)(iVar8 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);" (assignment_expression "*(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1)" (pointer_expression "*(int *)(iVar8 + 0xc)" * (cast_expression "(int *)(iVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar8 + 0xc) + (iVar4 - iVar1)" (pointer_expression "*(int *)(iVar8 + 0xc)" * (cast_expression "(int *)(iVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) + (parenthesized_expression "(iVar4 - iVar1)" ( (binary_expression "iVar4 - iVar1" identifier - identifier) )))) ;) }) while (parenthesized_expression "(puVar9 != (undefined4 *)0xffffffff)" ( (binary_expression "puVar9 != (undefined4 *)0xffffffff" identifier != (cast_expression "(undefined4 *)0xffffffff" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (if_statement "if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }" { (expression_statement "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);" (call_expression "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1)" identifier (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1)" ( (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7f18" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal) , identifier ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) }) (else_clause "else {\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }" else (compound_statement "{\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }" { (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0xaa944);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0xaa944)" identifier = (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" * (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa944)" ( (binary_expression "in_t9 + 0xaa944" identifier + number_literal) ))))) ;) (expression_statement "FUN_00071ae0(param_1,*puVar7);" (call_expression "FUN_00071ae0(param_1,*puVar7)" identifier (argument_list "(param_1,*puVar7)" ( identifier , (pointer_expression "*puVar7" * identifier) ))) ;) (expression_statement "iVar1 = FUN_0006d194(param_1);" (assignment_expression "iVar1 = FUN_0006d194(param_1)" identifier = (call_expression "FUN_0006d194(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }" { (expression_statement "piVar3 = (int *)FUN_0006cfd8(param_1);" (assignment_expression "piVar3 = (int *)FUN_0006cfd8(param_1)" identifier = (cast_expression "(int *)FUN_0006cfd8(param_1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0006cfd8(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (if_statement "if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }" if (parenthesized_expression "(*piVar3 != 0)" ( (binary_expression "*piVar3 != 0" (pointer_expression "*piVar3" * identifier) != number_literal) )) (compound_statement "{\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }" { (expression_statement "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));" (call_expression "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8))" identifier (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8))" ( (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7f04" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined4 *)(*piVar3 + 8)" * (cast_expression "(undefined4 *)(*piVar3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar3 + 8)" ( (binary_expression "*piVar3 + 8" (pointer_expression "*piVar3" * identifier) + number_literal) )))) ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) (expression_statement "FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);" (call_expression "FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0])" identifier (argument_list "(param_1,local_34,&local_30,2,local_3c[0])" ( identifier , identifier , (pointer_expression "&local_30" & identifier) , number_literal , (subscript_expression "local_3c[0]" identifier [ number_literal ]) ))) ;) (if_statement "if (local_34[0] == '\x01') goto LAB_000806f4;" if (parenthesized_expression "(local_34[0] == '\x01')" ( (binary_expression "local_34[0] == '\x01'" (subscript_expression "local_34[0]" identifier [ number_literal ]) == (char_literal "'\x01'" ' escape_sequence ')) )) (goto_statement "goto LAB_000806f4;" goto statement_identifier ;)) (if_statement "if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }" if (parenthesized_expression "(local_34[0] == '\x02')" ( (binary_expression "local_34[0] == '\x02'" (subscript_expression "local_34[0]" identifier [ number_literal ]) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }" { (if_statement "if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }" if (parenthesized_expression "((*(byte *)*local_30 & 1) == 0)" ( (binary_expression "(*(byte *)*local_30 & 1) == 0" (parenthesized_expression "(*(byte *)*local_30 & 1)" ( (binary_expression "*(byte *)*local_30 & 1" (pointer_expression "*(byte *)*local_30" * (cast_expression "(byte *)*local_30" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_30" * identifier))) & number_literal) )) == number_literal) )) (compound_statement "{\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }" { (expression_statement "iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;" (assignment_expression "iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c" identifier = (binary_expression "**(int **)(in_t9 + 0xaa350) + 0x2c" (pointer_expression "**(int **)(in_t9 + 0xaa350)" * (pointer_expression "*(int **)(in_t9 + 0xaa350)" * (cast_expression "(int **)(in_t9 + 0xaa350)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaa350)" ( (binary_expression "in_t9 + 0xaa350" identifier + number_literal) ))))) + number_literal)) ;) }) (else_clause "else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }" else (compound_statement "{\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }" { (expression_statement "iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;" (assignment_expression "iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0" identifier = (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7ef0" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal)) ;) }))) (expression_statement "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);" (call_expression "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1)" identifier (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1)" ( (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7f30" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal) , identifier ))) ;) (goto_statement "goto LAB_0008070c;" goto statement_identifier ;) })) (if_statement "if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }" if (parenthesized_expression "(local_34[0] != '\0')" ( (binary_expression "local_34[0] != '\0'" (subscript_expression "local_34[0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }" { (expression_statement "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);" (call_expression "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7)" identifier (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7)" ( (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7f48" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal) , (pointer_expression "*puVar7" * identifier) ))) ;) (if_statement "if (local_2c == *piVar6) {\n          return 0x7f;\n        }" if (parenthesized_expression "(local_2c == *piVar6)" ( (binary_expression "local_2c == *piVar6" identifier == (pointer_expression "*piVar6" * identifier)) )) (compound_statement "{\n          return 0x7f;\n        }" { (return_statement "return 0x7f;" return number_literal ;) })) (expression_statement "pcVar10 = *(code **)(in_t9 + 0xaabcc);" (assignment_expression "pcVar10 = *(code **)(in_t9 + 0xaabcc)" identifier = (pointer_expression "*(code **)(in_t9 + 0xaabcc)" * (cast_expression "(code **)(in_t9 + 0xaabcc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaabcc)" ( (binary_expression "in_t9 + 0xaabcc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0008073c;" goto statement_identifier ;) })) (goto_statement "goto LAB_00080778;" goto statement_identifier ;) })) (expression_statement "iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;" (assignment_expression "iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc" identifier = (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7edc" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal)) ;) }))) (expression_statement "FUN_00071ae0(iVar1,*puVar7);" (call_expression "FUN_00071ae0(iVar1,*puVar7)" identifier (argument_list "(iVar1,*puVar7)" ( identifier , (pointer_expression "*puVar7" * identifier) ))) ;) (labeled_statement "LAB_0008070c:\n  while (FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6) {\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }" statement_identifier : (while_statement "while (FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6) {\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }" while (parenthesized_expression "(FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6)" ( (comma_expression "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6" (call_expression "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7)" identifier (argument_list "(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7)" ( (binary_expression "*(int *)(in_t9 + 0xa9c90) + -0xea0" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal) , (pointer_expression "*puVar7" * identifier) ))) , (binary_expression "local_2c != *piVar6" identifier != (pointer_expression "*piVar6" * identifier))) )) (compound_statement "{\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }" { (labeled_statement "LAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);" statement_identifier : (expression_statement "pcVar10 = *(code **)(in_t9 + 0xaabcc);" (assignment_expression "pcVar10 = *(code **)(in_t9 + 0xaabcc)" identifier = (pointer_expression "*(code **)(in_t9 + 0xaabcc)" * (cast_expression "(code **)(in_t9 + 0xaabcc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xaabcc)" ( (binary_expression "in_t9 + 0xaabcc" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0008073c:\n    (*pcVar10)();" statement_identifier : (expression_statement "(*pcVar10)();" (call_expression "(*pcVar10)()" (parenthesized_expression "(*pcVar10)" ( (pointer_expression "*pcVar10" * identifier) )) (argument_list "()" ( ))) ;)) (labeled_statement "LAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);" statement_identifier : (expression_statement "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);" (call_expression "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20)" identifier (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7f20)" ( (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7f20" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" * (cast_expression "(int *)(in_t9 + 0xa9c90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xa9c90)" ( (binary_expression "in_t9 + 0xa9c90" identifier + number_literal) )))) + number_literal) ))) ;)) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) )))) + LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * IDENT)) )) (goto_statement goto statement_identifier ;)) (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , LIT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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) )))) + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , LIT , (subscript_expression IDENT [ LIT ]) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }))) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (pointer_expression * IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) ))) ;) (labeled_statement statement_identifier : (while_statement while (parenthesized_expression ( (comma_expression (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (pointer_expression * IDENT) ))) , (binary_expression IDENT != (pointer_expression * IDENT))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;)) }))) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_000804fc(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  int in_t9;\n  code *pcVar10;\n  int local_3c [2];\n  char local_34 [4];\n  undefined4 *local_30;\n  int local_2c;\n  \n  piVar6 = *(int **)(in_t9 + 0xaac50);\n  local_2c = *piVar6;\n  if (param_2 == 0) {\n    param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;\n  }\n  local_3c[0] = param_2;\n  if (param_3 == 0) {\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = (undefined4 *)FUN_0006cfd8(param_1);\n    puVar7 = (undefined4 *)*puVar7;\n    if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }\n    FUN_0007fe58(param_1,local_34,&local_30,2,param_2);\n    if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_00080778:\n    iVar1 = param_1;\n    if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }\n    if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }\n  }\n  else {\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }\n  FUN_00071ae0(iVar1,*puVar7);\nLAB_0008070c:\n  while (FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6) {\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_000804fc(int param_1,int param_2,int param_3)" (identifier "FUN_000804fc") (parameter_list "(int param_1,int param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  undefined4 *puVar7;\n  int iVar8;\n  undefined4 *puVar9;\n  int in_t9;\n  code *pcVar10;\n  int local_3c [2];\n  char local_34 [4];\n  undefined4 *local_30;\n  int local_2c;\n  \n  piVar6 = *(int **)(in_t9 + 0xaac50);\n  local_2c = *piVar6;\n  if (param_2 == 0) {\n    param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;\n  }\n  local_3c[0] = param_2;\n  if (param_3 == 0) {\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = (undefined4 *)FUN_0006cfd8(param_1);\n    puVar7 = (undefined4 *)*puVar7;\n    if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }\n    FUN_0007fe58(param_1,local_34,&local_30,2,param_2);\n    if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_00080778:\n    iVar1 = param_1;\n    if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }\n    if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }\n  }\n  else {\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }\n  FUN_00071ae0(iVar1,*puVar7);\nLAB_0008070c:\n  while (FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6) {\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }\n  return 0;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "undefined4 *puVar9;" (type_identifier "undefined4") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "int in_t9;" (primitive_type "int") (identifier "in_t9") (; ";")) (declaration "code *pcVar10;" (type_identifier "code") (pointer_declarator "*pcVar10" (* "*") (identifier "pcVar10")) (; ";")) (declaration "int local_3c [2];" (primitive_type "int") (array_declarator "local_3c [2]" (identifier "local_3c") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "char local_34 [4];" (primitive_type "char") (array_declarator "local_34 [4]" (identifier "local_34") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined4 *local_30;" (type_identifier "undefined4") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "piVar6 = *(int **)(in_t9 + 0xaac50);" (assignment_expression "piVar6 = *(int **)(in_t9 + 0xaac50)" (identifier "piVar6") (= "=") (pointer_expression "*(int **)(in_t9 + 0xaac50)" (* "*") (cast_expression "(int **)(in_t9 + 0xaac50)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xaac50)" (( "(") (binary_expression "in_t9 + 0xaac50" (identifier "in_t9") (+ "+") (number_literal "0xaac50")) () ")"))))) (; ";")) (expression_statement "local_2c = *piVar6;" (assignment_expression "local_2c = *piVar6" (identifier "local_2c") (= "=") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) (; ";")) (if_statement "if (param_2 == 0) {\n    param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;\n  }" ({ "{") (expression_statement "param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;" (assignment_expression "param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5" (identifier "param_2") (= "=") (binary_expression "*(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5" (pointer_expression "*(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0)" (* "*") (cast_expression "(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(**(int **)(in_t9 + 0xaa354) + 0xf0)" (( "(") (binary_expression "**(int **)(in_t9 + 0xaa354) + 0xf0" (pointer_expression "**(int **)(in_t9 + 0xaa354)" (* "*") (pointer_expression "*(int **)(in_t9 + 0xaa354)" (* "*") (cast_expression "(int **)(in_t9 + 0xaa354)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xaa354)" (( "(") (binary_expression "in_t9 + 0xaa354" (identifier "in_t9") (+ "+") (number_literal "0xaa354")) () ")"))))) (+ "+") (number_literal "0xf0")) () ")")))) (+ "+") (number_literal "5"))) (; ";")) (} "}"))) (expression_statement "local_3c[0] = param_2;" (assignment_expression "local_3c[0] = param_2" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "param_2")) (; ";")) (if_statement "if (param_3 == 0) {\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = (undefined4 *)FUN_0006cfd8(param_1);\n    puVar7 = (undefined4 *)*puVar7;\n    if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }\n    FUN_0007fe58(param_1,local_34,&local_30,2,param_2);\n    if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_00080778:\n    iVar1 = param_1;\n    if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }\n    if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }\n  }\n  else {\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = (undefined4 *)FUN_0006cfd8(param_1);\n    puVar7 = (undefined4 *)*puVar7;\n    if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }\n    FUN_0007fe58(param_1,local_34,&local_30,2,param_2);\n    if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }\n    if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_00080778:\n    iVar1 = param_1;\n    if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }\n    if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }\n  }" ({ "{") (expression_statement "iVar1 = FUN_0006d194(param_1);" (assignment_expression "iVar1 = FUN_0006d194(param_1)" (identifier "iVar1") (= "=") (call_expression "FUN_0006d194(param_1)" (identifier "FUN_0006d194") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar1 != 0) {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" ({ "{") (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0xaa944);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0xaa944)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" (* "*") (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xaa944)" (( "(") (binary_expression "in_t9 + 0xaa944" (identifier "in_t9") (+ "+") (number_literal "0xaa944")) () ")"))))) (; ";")) (expression_statement "FUN_00071ae0(param_1,*puVar7);" (call_expression "FUN_00071ae0(param_1,*puVar7)" (identifier "FUN_00071ae0") (argument_list "(param_1,*puVar7)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) () ")"))) (; ";")) (goto_statement "goto LAB_0008070c;" (goto "goto") (statement_identifier "LAB_0008070c") (; ";")) (} "}"))) (expression_statement "puVar7 = (undefined4 *)FUN_0006cfd8(param_1);" (assignment_expression "puVar7 = (undefined4 *)FUN_0006cfd8(param_1)" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)FUN_0006cfd8(param_1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0006cfd8(param_1)" (identifier "FUN_0006cfd8") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))))) (; ";")) (expression_statement "puVar7 = (undefined4 *)*puVar7;" (assignment_expression "puVar7 = (undefined4 *)*puVar7" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)*puVar7" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")))) (; ";")) (if_statement "if (puVar7 != (undefined4 *)0x0) {\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }" (if "if") (parenthesized_expression "(puVar7 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar7 != (undefined4 *)0x0" (identifier "puVar7") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));\n      uVar5 = puVar7[1];\n      uVar2 = FUN_00073c90(puVar7[2]);\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);\n      if (local_2c != *piVar6) goto LAB_00080738;\n      return 0;\n    }" ({ "{") (expression_statement "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));" (call_expression "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944))" (identifier "FUN_00071ae0") (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944))" (( "(") (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7efc" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" (* "*") (cast_expression "(int *)(in_t9 + 0xa9c90)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xa9c90)" (( "(") (binary_expression "in_t9 + 0xa9c90" (identifier "in_t9") (+ "+") (number_literal "0xa9c90")) () ")")))) (+ "+") (number_literal "0x7efc")) (, ",") (pointer_expression "**(undefined4 **)(in_t9 + 0xaa944)" (* "*") (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" (* "*") (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xaa944)" (( "(") (binary_expression "in_t9 + 0xaa944" (identifier "in_t9") (+ "+") (number_literal "0xaa944")) () ")"))))) () ")"))) (; ";")) (expression_statement "uVar5 = puVar7[1];" (assignment_expression "uVar5 = puVar7[1]" (identifier "uVar5") (= "=") (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar2 = FUN_00073c90(puVar7[2]);" (assignment_expression "uVar2 = FUN_00073c90(puVar7[2])" (identifier "uVar2") (= "=") (call_expression "FUN_00073c90(puVar7[2])" (identifier "FUN_00073c90") (argument_list "(puVar7[2])" (( "(") (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")) () ")")))) (; ";")) (expression_statement "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);" (call_expression "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2)" (identifier "FUN_0006eb38") (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2)" (( "(") (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7620" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" (* "*") (cast_expression "(int *)(in_t9 + 0xa9c90)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xa9c90)" (( "(") (binary_expression "in_t9 + 0xa9c90" (identifier "in_t9") (+ "+") (number_literal "0xa9c90")) () ")")))) (+ "+") (number_literal "0x7620")) (, ",") (identifier "uVar5") (, ",") (identifier "uVar2") () ")"))) (; ";")) (if_statement "if (local_2c != *piVar6) goto LAB_00080738;" (if "if") (parenthesized_expression "(local_2c != *piVar6)" (( "(") (binary_expression "local_2c != *piVar6" (identifier "local_2c") (!= "!=") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) () ")")) (goto_statement "goto LAB_00080738;" (goto "goto") (statement_identifier "LAB_00080738") (; ";"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "FUN_0007fe58(param_1,local_34,&local_30,2,param_2);" (call_expression "FUN_0007fe58(param_1,local_34,&local_30,2,param_2)" (identifier "FUN_0007fe58") (argument_list "(param_1,local_34,&local_30,2,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "local_34") (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (number_literal "2") (, ",") (identifier "param_2") () ")"))) (; ";")) (if_statement "if (local_34[0] == '\x01') {\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" (if "if") (parenthesized_expression "(local_34[0] == '\x01')" (( "(") (binary_expression "local_34[0] == '\x01'" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\nLAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" ({ "{") (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0xaa944);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0xaa944)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" (* "*") (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xaa944)" (( "(") (binary_expression "in_t9 + 0xaa944" (identifier "in_t9") (+ "+") (number_literal "0xaa944")) () ")"))))) (; ";")) (labeled_statement "LAB_000806f4:\n      if (param_3 != 0) goto LAB_00080744;" (statement_identifier "LAB_000806f4") (: ":") (if_statement "if (param_3 != 0) goto LAB_00080744;" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00080744;" (goto "goto") (statement_identifier "LAB_00080744") (; ";")))) (expression_statement "FUN_00071ae0(param_1,*puVar7);" (call_expression "FUN_00071ae0(param_1,*puVar7)" (identifier "FUN_00071ae0") (argument_list "(param_1,*puVar7)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) () ")"))) (; ";")) (goto_statement "goto LAB_0008070c;" (goto "goto") (statement_identifier "LAB_0008070c") (; ";")) (} "}"))) (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0xaa944);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0xaa944)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" (* "*") (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xaa944)" (( "(") (binary_expression "in_t9 + 0xaa944" (identifier "in_t9") (+ "+") (number_literal "0xaa944")) () ")"))))) (; ";")) (if_statement "if (local_34[0] == '\x02') {\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" (if "if") (parenthesized_expression "(local_34[0] == '\x02')" (( "(") (binary_expression "local_34[0] == '\x02'" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n      FUN_00071ae0(param_1,*puVar7);\n      goto LAB_0008070c;\n    }" ({ "{") (expression_statement "FUN_00071ae0(param_1,*puVar7);" (call_expression "FUN_00071ae0(param_1,*puVar7)" (identifier "FUN_00071ae0") (argument_list "(param_1,*puVar7)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) () ")"))) (; ";")) (goto_statement "goto LAB_0008070c;" (goto "goto") (statement_identifier "LAB_0008070c") (; ";")) (} "}"))) (if_statement "if (local_34[0] != '\0') {\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }" (if "if") (parenthesized_expression "(local_34[0] != '\0')" (( "(") (binary_expression "local_34[0] != '\0'" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if (local_2c == *piVar6) {\n        return 0x7f;\n      }\n      pcVar10 = *(code **)(in_t9 + 0xaabcc);\n      goto LAB_0008073c;\n    }" ({ "{") (if_statement "if (local_2c == *piVar6) {\n        return 0x7f;\n      }" (if "if") (parenthesized_expression "(local_2c == *piVar6)" (( "(") (binary_expression "local_2c == *piVar6" (identifier "local_2c") (== "==") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) () ")")) (compound_statement "{\n        return 0x7f;\n      }" ({ "{") (return_statement "return 0x7f;" (return "return") (number_literal "0x7f") (; ";")) (} "}"))) (expression_statement "pcVar10 = *(code **)(in_t9 + 0xaabcc);" (assignment_expression "pcVar10 = *(code **)(in_t9 + 0xaabcc)" (identifier "pcVar10") (= "=") (pointer_expression "*(code **)(in_t9 + 0xaabcc)" (* "*") (cast_expression "(code **)(in_t9 + 0xaabcc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xaabcc)" (( "(") (binary_expression "in_t9 + 0xaabcc" (identifier "in_t9") (+ "+") (number_literal "0xaabcc")) () ")"))))) (; ";")) (goto_statement "goto LAB_0008073c;" (goto "goto") (statement_identifier "LAB_0008073c") (; ";")) (} "}"))) (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0xaa944);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0xaa944)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" (* "*") (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xaa944)" (( "(") (binary_expression "in_t9 + 0xaa944" (identifier "in_t9") (+ "+") (number_literal "0xaa944")) () ")"))))) (; ";")) (labeled_statement "LAB_00080778:\n    iVar1 = param_1;" (statement_identifier "LAB_00080778") (: ":") (expression_statement "iVar1 = param_1;" (assignment_expression "iVar1 = param_1" (identifier "iVar1") (= "=") (identifier "param_1")) (; ";"))) (if_statement "if (-1 < (int)local_30) {\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }" (if "if") (parenthesized_expression "(-1 < (int)local_30)" (( "(") (binary_expression "-1 < (int)local_30" (number_literal "-1") (< "<") (cast_expression "(int)local_30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_30"))) () ")")) (compound_statement "{\n      iVar8 = **(int **)(in_t9 + 0xaa35c);\n      puVar9 = local_30;\n      do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);\n    }" ({ "{") (expression_statement "iVar8 = **(int **)(in_t9 + 0xaa35c);" (assignment_expression "iVar8 = **(int **)(in_t9 + 0xaa35c)" (identifier "iVar8") (= "=") (pointer_expression "**(int **)(in_t9 + 0xaa35c)" (* "*") (pointer_expression "*(int **)(in_t9 + 0xaa35c)" (* "*") (cast_expression "(int **)(in_t9 + 0xaa35c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xaa35c)" (( "(") (binary_expression "in_t9 + 0xaa35c" (identifier "in_t9") (+ "+") (number_literal "0xaa35c")) () ")")))))) (; ";")) (expression_statement "puVar9 = local_30;" (assignment_expression "puVar9 = local_30" (identifier "puVar9") (= "=") (identifier "local_30")) (; ";")) (do_statement "do {\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      } while (puVar9 != (undefined4 *)0xffffffff);" (do "do") (compound_statement "{\n        iVar1 = FUN_00075108(local_3c,param_1);\n        puVar9 = (undefined4 *)((int)puVar9 + -1);\n        iVar4 = *(int *)(iVar8 + 4);\n        *(int *)(iVar8 + 4) = iVar1;\n        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);\n      }" ({ "{") (expression_statement "iVar1 = FUN_00075108(local_3c,param_1);" (assignment_expression "iVar1 = FUN_00075108(local_3c,param_1)" (identifier "iVar1") (= "=") (call_expression "FUN_00075108(local_3c,param_1)" (identifier "FUN_00075108") (argument_list "(local_3c,param_1)" (( "(") (identifier "local_3c") (, ",") (identifier "param_1") () ")")))) (; ";")) (expression_statement "puVar9 = (undefined4 *)((int)puVar9 + -1);" (assignment_expression "puVar9 = (undefined4 *)((int)puVar9 + -1)" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)((int)puVar9 + -1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar9 + -1)" (( "(") (binary_expression "(int)puVar9 + -1" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "iVar4 = *(int *)(iVar8 + 4);" (assignment_expression "iVar4 = *(int *)(iVar8 + 4)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar8 + 4)" (* "*") (cast_expression "(int *)(iVar8 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 4)" (( "(") (binary_expression "iVar8 + 4" (identifier "iVar8") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(int *)(iVar8 + 4) = iVar1;" (assignment_expression "*(int *)(iVar8 + 4) = iVar1" (pointer_expression "*(int *)(iVar8 + 4)" (* "*") (cast_expression "(int *)(iVar8 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 4)" (( "(") (binary_expression "iVar8 + 4" (identifier "iVar8") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "*(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);" (assignment_expression "*(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1)" (pointer_expression "*(int *)(iVar8 + 0xc)" (* "*") (cast_expression "(int *)(iVar8 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0xc)" (( "(") (binary_expression "iVar8 + 0xc" (identifier "iVar8") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "*(int *)(iVar8 + 0xc) + (iVar4 - iVar1)" (pointer_expression "*(int *)(iVar8 + 0xc)" (* "*") (cast_expression "(int *)(iVar8 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0xc)" (( "(") (binary_expression "iVar8 + 0xc" (identifier "iVar8") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (parenthesized_expression "(iVar4 - iVar1)" (( "(") (binary_expression "iVar4 - iVar1" (identifier "iVar4") (- "-") (identifier "iVar1")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar9 != (undefined4 *)0xffffffff)" (( "(") (binary_expression "puVar9 != (undefined4 *)0xffffffff" (identifier "puVar9") (!= "!=") (cast_expression "(undefined4 *)0xffffffff" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (; ";")) (} "}"))) (if_statement "if (param_3 != 0) {\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);\n      goto LAB_0008070c;\n    }" ({ "{") (expression_statement "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);" (call_expression "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1)" (identifier "FUN_0006eb38") (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1)" (( "(") (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7f18" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" (* "*") (cast_expression "(int *)(in_t9 + 0xa9c90)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xa9c90)" (( "(") (binary_expression "in_t9 + 0xa9c90" (identifier "in_t9") (+ "+") (number_literal "0xa9c90")) () ")")))) (+ "+") (number_literal "0x7f18")) (, ",") (identifier "iVar1") () ")"))) (; ";")) (goto_statement "goto LAB_0008070c;" (goto "goto") (statement_identifier "LAB_0008070c") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }" (else "else") (compound_statement "{\n    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);\n    FUN_00071ae0(param_1,*puVar7);\n    iVar1 = FUN_0006d194(param_1);\n    if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }\n    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;\n  }" ({ "{") (expression_statement "puVar7 = *(undefined4 **)(in_t9 + 0xaa944);" (assignment_expression "puVar7 = *(undefined4 **)(in_t9 + 0xaa944)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined4 **)(in_t9 + 0xaa944)" (* "*") (cast_expression "(undefined4 **)(in_t9 + 0xaa944)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xaa944)" (( "(") (binary_expression "in_t9 + 0xaa944" (identifier "in_t9") (+ "+") (number_literal "0xaa944")) () ")"))))) (; ";")) (expression_statement "FUN_00071ae0(param_1,*puVar7);" (call_expression "FUN_00071ae0(param_1,*puVar7)" (identifier "FUN_00071ae0") (argument_list "(param_1,*puVar7)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) () ")"))) (; ";")) (expression_statement "iVar1 = FUN_0006d194(param_1);" (assignment_expression "iVar1 = FUN_0006d194(param_1)" (identifier "iVar1") (= "=") (call_expression "FUN_0006d194(param_1)" (identifier "FUN_0006d194") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      piVar3 = (int *)FUN_0006cfd8(param_1);\n      if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }\n      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);\n      if (local_34[0] == '\x01') goto LAB_000806f4;\n      if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }\n      if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }\n      goto LAB_00080778;\n    }" ({ "{") (expression_statement "piVar3 = (int *)FUN_0006cfd8(param_1);" (assignment_expression "piVar3 = (int *)FUN_0006cfd8(param_1)" (identifier "piVar3") (= "=") (cast_expression "(int *)FUN_0006cfd8(param_1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0006cfd8(param_1)" (identifier "FUN_0006cfd8") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))))) (; ";")) (if_statement "if (*piVar3 != 0) {\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }" (if "if") (parenthesized_expression "(*piVar3 != 0)" (( "(") (binary_expression "*piVar3 != 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));\n        goto LAB_0008070c;\n      }" ({ "{") (expression_statement "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));" (call_expression "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8))" (identifier "FUN_0006eb38") (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8))" (( "(") (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7f04" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" (* "*") (cast_expression "(int *)(in_t9 + 0xa9c90)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xa9c90)" (( "(") (binary_expression "in_t9 + 0xa9c90" (identifier "in_t9") (+ "+") (number_literal "0xa9c90")) () ")")))) (+ "+") (number_literal "0x7f04")) (, ",") (pointer_expression "*(undefined4 *)(*piVar3 + 8)" (* "*") (cast_expression "(undefined4 *)(*piVar3 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar3 + 8)" (( "(") (binary_expression "*piVar3 + 8" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (number_literal "8")) () ")")))) () ")"))) (; ";")) (goto_statement "goto LAB_0008070c;" (goto "goto") (statement_identifier "LAB_0008070c") (; ";")) (} "}"))) (expression_statement "FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);" (call_expression "FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0])" (identifier "FUN_0007fe58") (argument_list "(param_1,local_34,&local_30,2,local_3c[0])" (( "(") (identifier "param_1") (, ",") (identifier "local_34") (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (number_literal "2") (, ",") (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) () ")"))) (; ";")) (if_statement "if (local_34[0] == '\x01') goto LAB_000806f4;" (if "if") (parenthesized_expression "(local_34[0] == '\x01')" (( "(") (binary_expression "local_34[0] == '\x01'" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (goto_statement "goto LAB_000806f4;" (goto "goto") (statement_identifier "LAB_000806f4") (; ";"))) (if_statement "if (local_34[0] == '\x02') {\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }" (if "if") (parenthesized_expression "(local_34[0] == '\x02')" (( "(") (binary_expression "local_34[0] == '\x02'" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n        if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }\n        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);\n        goto LAB_0008070c;\n      }" ({ "{") (if_statement "if ((*(byte *)*local_30 & 1) == 0) {\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }\n        else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }" (if "if") (parenthesized_expression "((*(byte *)*local_30 & 1) == 0)" (( "(") (binary_expression "(*(byte *)*local_30 & 1) == 0" (parenthesized_expression "(*(byte *)*local_30 & 1)" (( "(") (binary_expression "*(byte *)*local_30 & 1" (pointer_expression "*(byte *)*local_30" (* "*") (cast_expression "(byte *)*local_30" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_30" (* "*") (identifier "local_30")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;\n        }" ({ "{") (expression_statement "iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;" (assignment_expression "iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c" (identifier "iVar1") (= "=") (binary_expression "**(int **)(in_t9 + 0xaa350) + 0x2c" (pointer_expression "**(int **)(in_t9 + 0xaa350)" (* "*") (pointer_expression "*(int **)(in_t9 + 0xaa350)" (* "*") (cast_expression "(int **)(in_t9 + 0xaa350)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xaa350)" (( "(") (binary_expression "in_t9 + 0xaa350" (identifier "in_t9") (+ "+") (number_literal "0xaa350")) () ")"))))) (+ "+") (number_literal "0x2c"))) (; ";")) (} "}")) (else_clause "else {\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }" (else "else") (compound_statement "{\n          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;\n        }" ({ "{") (expression_statement "iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;" (assignment_expression "iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0" (identifier "iVar1") (= "=") (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7ef0" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" (* "*") (cast_expression "(int *)(in_t9 + 0xa9c90)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xa9c90)" (( "(") (binary_expression "in_t9 + 0xa9c90" (identifier "in_t9") (+ "+") (number_literal "0xa9c90")) () ")")))) (+ "+") (number_literal "0x7ef0"))) (; ";")) (} "}")))) (expression_statement "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);" (call_expression "FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1)" (identifier "FUN_0006eb38") (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1)" (( "(") (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7f30" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" (* "*") (cast_expression "(int *)(in_t9 + 0xa9c90)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xa9c90)" (( "(") (binary_expression "in_t9 + 0xa9c90" (identifier "in_t9") (+ "+") (number_literal "0xa9c90")) () ")")))) (+ "+") (number_literal "0x7f30")) (, ",") (identifier "iVar1") () ")"))) (; ";")) (goto_statement "goto LAB_0008070c;" (goto "goto") (statement_identifier "LAB_0008070c") (; ";")) (} "}"))) (if_statement "if (local_34[0] != '\0') {\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }" (if "if") (parenthesized_expression "(local_34[0] != '\0')" (( "(") (binary_expression "local_34[0] != '\0'" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);\n        if (local_2c == *piVar6) {\n          return 0x7f;\n        }\n        pcVar10 = *(code **)(in_t9 + 0xaabcc);\n        goto LAB_0008073c;\n      }" ({ "{") (expression_statement "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);" (call_expression "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7)" (identifier "FUN_00071ae0") (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7)" (( "(") (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7f48" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" (* "*") (cast_expression "(int *)(in_t9 + 0xa9c90)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xa9c90)" (( "(") (binary_expression "in_t9 + 0xa9c90" (identifier "in_t9") (+ "+") (number_literal "0xa9c90")) () ")")))) (+ "+") (number_literal "0x7f48")) (, ",") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) () ")"))) (; ";")) (if_statement "if (local_2c == *piVar6) {\n          return 0x7f;\n        }" (if "if") (parenthesized_expression "(local_2c == *piVar6)" (( "(") (binary_expression "local_2c == *piVar6" (identifier "local_2c") (== "==") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) () ")")) (compound_statement "{\n          return 0x7f;\n        }" ({ "{") (return_statement "return 0x7f;" (return "return") (number_literal "0x7f") (; ";")) (} "}"))) (expression_statement "pcVar10 = *(code **)(in_t9 + 0xaabcc);" (assignment_expression "pcVar10 = *(code **)(in_t9 + 0xaabcc)" (identifier "pcVar10") (= "=") (pointer_expression "*(code **)(in_t9 + 0xaabcc)" (* "*") (cast_expression "(code **)(in_t9 + 0xaabcc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xaabcc)" (( "(") (binary_expression "in_t9 + 0xaabcc" (identifier "in_t9") (+ "+") (number_literal "0xaabcc")) () ")"))))) (; ";")) (goto_statement "goto LAB_0008073c;" (goto "goto") (statement_identifier "LAB_0008073c") (; ";")) (} "}"))) (goto_statement "goto LAB_00080778;" (goto "goto") (statement_identifier "LAB_00080778") (; ";")) (} "}"))) (expression_statement "iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;" (assignment_expression "iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc" (identifier "iVar1") (= "=") (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7edc" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" (* "*") (cast_expression "(int *)(in_t9 + 0xa9c90)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xa9c90)" (( "(") (binary_expression "in_t9 + 0xa9c90" (identifier "in_t9") (+ "+") (number_literal "0xa9c90")) () ")")))) (+ "+") (number_literal "0x7edc"))) (; ";")) (} "}")))) (expression_statement "FUN_00071ae0(iVar1,*puVar7);" (call_expression "FUN_00071ae0(iVar1,*puVar7)" (identifier "FUN_00071ae0") (argument_list "(iVar1,*puVar7)" (( "(") (identifier "iVar1") (, ",") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) () ")"))) (; ";")) (labeled_statement "LAB_0008070c:\n  while (FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6) {\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }" (statement_identifier "LAB_0008070c") (: ":") (while_statement "while (FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6) {\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }" (while "while") (parenthesized_expression "(FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6)" (( "(") (comma_expression "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6" (call_expression "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7)" (identifier "FUN_00071ae0") (argument_list "(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7)" (( "(") (binary_expression "*(int *)(in_t9 + 0xa9c90) + -0xea0" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" (* "*") (cast_expression "(int *)(in_t9 + 0xa9c90)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xa9c90)" (( "(") (binary_expression "in_t9 + 0xa9c90" (identifier "in_t9") (+ "+") (number_literal "0xa9c90")) () ")")))) (+ "+") (number_literal "-0xea0")) (, ",") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) () ")"))) (, ",") (binary_expression "local_2c != *piVar6" (identifier "local_2c") (!= "!=") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")))) () ")")) (compound_statement "{\nLAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);\nLAB_0008073c:\n    (*pcVar10)();\nLAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);\n  }" ({ "{") (labeled_statement "LAB_00080738:\n    pcVar10 = *(code **)(in_t9 + 0xaabcc);" (statement_identifier "LAB_00080738") (: ":") (expression_statement "pcVar10 = *(code **)(in_t9 + 0xaabcc);" (assignment_expression "pcVar10 = *(code **)(in_t9 + 0xaabcc)" (identifier "pcVar10") (= "=") (pointer_expression "*(code **)(in_t9 + 0xaabcc)" (* "*") (cast_expression "(code **)(in_t9 + 0xaabcc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xaabcc)" (( "(") (binary_expression "in_t9 + 0xaabcc" (identifier "in_t9") (+ "+") (number_literal "0xaabcc")) () ")"))))) (; ";"))) (labeled_statement "LAB_0008073c:\n    (*pcVar10)();" (statement_identifier "LAB_0008073c") (: ":") (expression_statement "(*pcVar10)();" (call_expression "(*pcVar10)()" (parenthesized_expression "(*pcVar10)" (( "(") (pointer_expression "*pcVar10" (* "*") (identifier "pcVar10")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (labeled_statement "LAB_00080744:\n    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);" (statement_identifier "LAB_00080744") (: ":") (expression_statement "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);" (call_expression "FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20)" (identifier "FUN_00071ae0") (argument_list "(*(int *)(in_t9 + 0xa9c90) + 0x7f20)" (( "(") (binary_expression "*(int *)(in_t9 + 0xa9c90) + 0x7f20" (pointer_expression "*(int *)(in_t9 + 0xa9c90)" (* "*") (cast_expression "(int *)(in_t9 + 0xa9c90)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xa9c90)" (( "(") (binary_expression "in_t9 + 0xa9c90" (identifier "in_t9") (+ "+") (number_literal "0xa9c90")) () ")")))) (+ "+") (number_literal "0x7f20")) () ")"))) (; ";"))) (} "}")))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

int function_1(char *command,char *var_1,int var_2)

{
  type_1 *puVar1;
  int var_11;
  char **var_4;
  type_2 **ppaVar4;
  int var_15;
  int var_12;
  type_3 *file;
  type_1 *puVar7;
  char *pcVar8;
  type_2 *var_7;
  type_4 pVar10;
  type_5 *apcStack_3c [2];
  type_5 entry;
  
  puVar1 = PTR___stack_chk_guard_0012b14c;
  var_7 = (type_2 *)PTR_stdout_0012ae40;
  var_11 = *(int *)PTR___stack_chk_guard_0012b14c;
  if (var_1 == (char *)0x0) {
    var_1 = (char *)(*(int *)(*(int *)PTR_ash_ptr_to_globals_var_0012a850 + 0xf0) + 5);
  }
  apcStack_3c[0] = (type_5 *)var_1;
  if (var_2 == 0) {
    var_4 = var_3(command);
    var_7 = (type_2 *)PTR_stdout_0012ae40;
    if (var_4 != (char **)0x0) {
      var_5(command,*(type_3 **)PTR_stdout_0012ae40);
      goto LAB_0008070c;
    }
    ppaVar4 = var_6(command);
    var_7 = *ppaVar4;
    if (var_7 != (type_2 *)0x0) {
      var_5(var_8 + 0x7efc,*(type_3 **)PTR_stdout_0012ae40);
      file = (type_3 *)var_7->name;
      pcVar8 = var_9(var_7->val);
      var_10(var_8 + 0x7620,file,pcVar8);
      var_12 = *(int *)puVar1;
      var_15 = 0;
joined_r0x00080680:
      if (var_11 != var_12) goto LAB_0008073c;
      return var_15;
    }
    file = (type_3 *)&entry;
    var_13(command,(type_5 *)file,(int)&entry.u,&SUB_00000002,(type_5 *)var_1);
    var_7 = (type_2 *)PTR_stdout_0012ae40;
    if (entry.cmdtype == '\x01') goto LAB_000806f4;
    if (entry.cmdtype == '\x02') {
      var_5(command,*(type_3 **)PTR_stdout_0012ae40);
      goto LAB_0008070c;
    }
    if (entry.cmdtype != '\0') {
      var_12 = *(int *)puVar1;
      var_15 = 0x7f;
      goto joined_r0x00080680;
    }
LAB_00080778:
    pcVar8 = command;
    if (-1 < entry.u.index) {
      var_15 = *(int *)PTR_ash_ptr_to_globals_memstack_0012a858;
      pVar10 = entry.u;
      do {
        pcVar8 = var_14((char **)apcStack_3c,command);
        pVar10.cmd = (type_6 *)(pVar10.index + -1);
        var_12 = *(int *)(var_15 + 4);
        *(char **)(var_15 + 4) = pcVar8;
        *(int *)(var_15 + 0xc) = *(int *)(var_15 + 0xc) + (var_12 - (int)pcVar8);
      } while (pVar10.index != -1);
    }
    if (var_2 != 0) {
      var_10(var_8 + 0x7f18,pcVar8);
      goto LAB_0008070c;
    }
  }
  else {
    var_5(command,*(type_3 **)PTR_stdout_0012ae40);
    var_4 = var_3(command);
    if (var_4 == (char **)0x0) {
      ppaVar4 = var_6(command);
      if (*ppaVar4 != (type_2 *)0x0) {
        var_10(var_8 + 0x7f04,(*ppaVar4)->val);
        goto LAB_0008070c;
      }
      var_13(command,&entry,(int)&entry.u,&SUB_00000002,apcStack_3c[0]);
      if (entry.cmdtype == '\x01') {
LAB_000806f4:
        file = (type_3 *)var_7->next;
        if (var_2 != 0) goto LAB_00080744;
        var_5(command,file);
        goto LAB_0008070c;
      }
      if (entry.cmdtype == '\x02') {
        if ((*(entry.u.cmd)->name & 1U) == 0) {
          puVar7 = (type_1 *)(*(int *)PTR_ash_ptr_to_globals_misc_0012a84c + 0x2c);
        }
        else {
          puVar7 = var_8 + 0x7ef0;
        }
        var_10(var_8 + 0x7f30,puVar7);
        goto LAB_0008070c;
      }
      if (entry.cmdtype != '\0') {
        file = *(type_3 **)var_7;
        var_5(var_8 + 0x7f48,file);
        var_15 = 0x7f;
        var_12 = *(int *)puVar1;
        goto joined_r0x00080680;
      }
      goto LAB_00080778;
    }
    pcVar8 = var_8 + 0x7edc;
  }
  var_5(pcVar8,(type_3 *)var_7->next);
LAB_0008070c:
  while( true ) {
    file = (type_3 *)var_7->next;
    var_5(var_8 + -0xea0,file);
    if (var_11 == *(int *)puVar1) break;
LAB_0008073c:
    (*(type_7 *)PTR___stack_chk_fail_0012b0c8)();
LAB_00080744:
    var_5(var_8 + 0x7f20,file);
  }
  return 0;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (return_statement (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier)) (number_literal) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (identifier)))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier)) (number_literal) (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (identifier)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))) (labeled_statement label: (statement_identifier) (while_statement condition: (parenthesized_expression (comma_expression left: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (pointer_expression argument: (identifier)))) right: (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))) body: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))))) (return_statement (number_literal)))))

undefined4 MASKED(int param_1,int param_2,int param_3)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  int iVar4;
  undefined4 uVar5;
  int *piVar6;
  undefined4 *puVar7;
  int iVar8;
  undefined4 *puVar9;
  int in_t9;
  code *pcVar10;
  int local_3c [2];
  char local_34 [4];
  undefined4 *local_30;
  int local_2c;
  
  piVar6 = *(int **)(in_t9 + 0xaac50);
  local_2c = *piVar6;
  if (param_2 == 0) {
    param_2 = *(int *)(**(int **)(in_t9 + 0xaa354) + 0xf0) + 5;
  }
  local_3c[0] = param_2;
  if (param_3 == 0) {
    iVar1 = FUN_0006d194(param_1);
    if (iVar1 != 0) {
      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);
      FUN_00071ae0(param_1,*puVar7);
      goto LAB_0008070c;
    }
    puVar7 = (undefined4 *)FUN_0006cfd8(param_1);
    puVar7 = (undefined4 *)*puVar7;
    if (puVar7 != (undefined4 *)0x0) {
      FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7efc,**(undefined4 **)(in_t9 + 0xaa944));
      uVar5 = puVar7[1];
      uVar2 = FUN_00073c90(puVar7[2]);
      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7620,uVar5,uVar2);
      if (local_2c != *piVar6) goto LAB_00080738;
      return 0;
    }
    FUN_0007fe58(param_1,local_34,&local_30,2,param_2);
    if (local_34[0] == '\x01') {
      puVar7 = *(undefined4 **)(in_t9 + 0xaa944);
LAB_000806f4:
      if (param_3 != 0) goto LAB_00080744;
      FUN_00071ae0(param_1,*puVar7);
      goto LAB_0008070c;
    }
    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);
    if (local_34[0] == '\x02') {
      FUN_00071ae0(param_1,*puVar7);
      goto LAB_0008070c;
    }
    if (local_34[0] != '\0') {
      if (local_2c == *piVar6) {
        return 0x7f;
      }
      pcVar10 = *(code **)(in_t9 + 0xaabcc);
      goto LAB_0008073c;
    }
    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);
LAB_00080778:
    iVar1 = param_1;
    if (-1 < (int)local_30) {
      iVar8 = **(int **)(in_t9 + 0xaa35c);
      puVar9 = local_30;
      do {
        iVar1 = FUN_00075108(local_3c,param_1);
        puVar9 = (undefined4 *)((int)puVar9 + -1);
        iVar4 = *(int *)(iVar8 + 4);
        *(int *)(iVar8 + 4) = iVar1;
        *(int *)(iVar8 + 0xc) = *(int *)(iVar8 + 0xc) + (iVar4 - iVar1);
      } while (puVar9 != (undefined4 *)0xffffffff);
    }
    if (param_3 != 0) {
      FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f18,iVar1);
      goto LAB_0008070c;
    }
  }
  else {
    puVar7 = *(undefined4 **)(in_t9 + 0xaa944);
    FUN_00071ae0(param_1,*puVar7);
    iVar1 = FUN_0006d194(param_1);
    if (iVar1 == 0) {
      piVar3 = (int *)FUN_0006cfd8(param_1);
      if (*piVar3 != 0) {
        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f04,*(undefined4 *)(*piVar3 + 8));
        goto LAB_0008070c;
      }
      FUN_0007fe58(param_1,local_34,&local_30,2,local_3c[0]);
      if (local_34[0] == '\x01') goto LAB_000806f4;
      if (local_34[0] == '\x02') {
        if ((*(byte *)*local_30 & 1) == 0) {
          iVar1 = **(int **)(in_t9 + 0xaa350) + 0x2c;
        }
        else {
          iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7ef0;
        }
        FUN_0006eb38(*(int *)(in_t9 + 0xa9c90) + 0x7f30,iVar1);
        goto LAB_0008070c;
      }
      if (local_34[0] != '\0') {
        FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f48,*puVar7);
        if (local_2c == *piVar6) {
          return 0x7f;
        }
        pcVar10 = *(code **)(in_t9 + 0xaabcc);
        goto LAB_0008073c;
      }
      goto LAB_00080778;
    }
    iVar1 = *(int *)(in_t9 + 0xa9c90) + 0x7edc;
  }
  FUN_00071ae0(iVar1,*puVar7);
LAB_0008070c:
  while (FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + -0xea0,*puVar7), local_2c != *piVar6) {
LAB_00080738:
    pcVar10 = *(code **)(in_t9 + 0xaabcc);
LAB_0008073c:
    (*pcVar10)();
LAB_00080744:
    FUN_00071ae0(*(int *)(in_t9 + 0xa9c90) + 0x7f20);
  }
  return 0;
}

