
void bb_displayroutes(int noresolve,int netstatfmt)

{
  undefined *puVar1;
  undefined *puVar2;
  undefined *puVar3;
  int iVar4;
  uint *puVar5;
  int iVar6;
  undefined *puVar7;
  undefined *puVar8;
  undefined *puVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  uint uVar13;
  char *pcVar14;
  char cVar15;
  undefined *puVar16;
  char *pcVar17;
  uint *puVar18;
  ulong d;
  ulong g;
  ulong m;
  int flgs;
  int ref;
  int use;
  int metric;
  int mtu;
  int win;
  int ir;
  sockaddr_in s_addr;
  char flags [16];
  char devname [64];
  
  puVar3 = PTR___stack_chk_guard_0012b14c;
  iVar4 = *(int *)PTR___stack_chk_guard_0012b14c;
  puVar5 = (uint *)(*(code *)PTR_xfopen_for_read_0012a39c)(PTR_UINT_0012a18c + 0x4100);
  if (netstatfmt != 0) goto LAB_000475e4;
  puVar16 = PTR_UINT_0012a18c + 0x40ec;
  while( true ) {
    (*(code *)PTR___printf_chk_0012ae30)(1,PTR_UINT_0012a18c + 0x4110,puVar16);
    iVar6 = (*(code *)PTR_fscanf_0012af40)(puVar5,PTR_UINT_0012a18c + 0x4168);
    puVar1 = PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8;
    puVar16 = PTR_UINT_0012a18c;
    if (-1 < iVar6) break;
LAB_00047470:
    if ((*puVar5 & 0x10) == 0) {
LAB_000475c8:
      (*(code *)PTR_bb_perror_msg_and_die_0012a1ec)
                (PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + -0x4770);
    }
    else {
      (*(code *)PTR_fclose_0012ad6c)(puVar5);
      if (iVar4 == *(int *)puVar3) {
        return;
      }
    }
    (*(code *)PTR___stack_chk_fail_0012b0c8)();
LAB_000475e4:
    puVar16 = PTR_UINT_0012a18c + 0x40d8;
  }
  puVar7 = PTR_UINT_0012a18c + 0x4190;
  puVar8 = PTR_UINT_0012a18c + 0x41c0;
  puVar9 = PTR_UINT_0012a18c + 0x41ac;
  do {
    do {
      iVar6 = (*(code *)PTR_fscanf_0012af40)
                        (puVar5,puVar16 + 0x4170,devname,&d,&g,&flgs,&ref,&use,&metric,&m,&mtu,&win,
                         &ir);
      puVar2 = PTR_INET_rresolve_0012a544;
      if (iVar6 != 0xb) {
        if (-1 < iVar6) goto LAB_000475c8;
        goto LAB_00047470;
      }
    } while ((flgs & 1U) == 0);
    cVar15 = 'G';
    puVar18 = (uint *)(puVar16 + 0x41f0);
    flags[0] = 'U';
    uVar13 = 1;
    pcVar14 = flags;
    pcVar17 = puVar1 + 0x5dee;
    while( true ) {
      if ((flgs & 0x3fU & uVar13) != 0) {
        pcVar14 = pcVar14 + 1;
      }
      *pcVar14 = cVar15;
      if (cVar15 == '\0') break;
      uVar13 = *puVar18;
      cVar15 = *pcVar17;
      puVar18 = puVar18 + 1;
      pcVar17 = pcVar17 + 1;
    }
    if ((flgs & 0x200U) != 0) {
      flags[0] = '!';
    }
    s_addr.sin_addr.s_addr = d;
    s_addr.sin_family = 2;
    s_addr.sin_port = 0;
    s_addr.sin_zero[0] = '\0';
    s_addr.sin_zero[1] = '\0';
    s_addr.sin_zero[2] = '\0';
    s_addr.sin_zero[3] = '\0';
    s_addr.sin_zero[4] = '\0';
    s_addr.sin_zero[5] = '\0';
    s_addr.sin_zero[6] = '\0';
    s_addr.sin_zero[7] = '\0';
    uVar10 = (*(code *)PTR_INET_rresolve_0012a544)(&s_addr,noresolve | 0x8000,m);
    s_addr.sin_addr.s_addr = g;
    uVar11 = (*(code *)puVar2)(&s_addr,noresolve | 0x4000,m);
    uVar12 = (*(code *)PTR_inet_ntoa_0012b128)(m);
    (*(code *)PTR___printf_chk_0012ae30)(1,puVar7,uVar10,uVar11,uVar12,flags);
    (*(code *)PTR_free_0012b168)(uVar10);
    (*(code *)PTR_free_0012b168)(uVar11);
    if (netstatfmt == 0) {
      (*(code *)PTR___printf_chk_0012ae30)(1,puVar8,metric,ref,use,devname);
    }
    else {
      (*(code *)PTR___printf_chk_0012ae30)(1,puVar9,mtu,win,ir,devname);
    }
  } while( true );
}



void FUN_000473c4(uint param_1,int param_2)

{
  uint *puVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  uint uVar10;
  char *pcVar11;
  char cVar12;
  int iVar13;
  char *pcVar14;
  uint *puVar15;
  int *piVar16;
  int in_t9;
  code *pcVar17;
  int iVar18;
  undefined4 local_b4;
  undefined4 local_b0;
  undefined4 local_ac;
  uint local_a8;
  undefined4 local_a4;
  undefined4 local_a0;
  undefined4 local_9c;
  undefined4 local_98;
  undefined4 local_94;
  undefined4 local_90;
  undefined2 local_8c;
  undefined2 local_8a;
  undefined4 local_88;
  undefined2 local_84;
  undefined2 local_82;
  undefined2 local_80;
  undefined2 local_7e;
  char local_7c [16];
  undefined1 auStack_6c [64];
  int local_2c;
  
  piVar16 = *(int **)(in_t9 + 0xe3d88);
  local_2c = *piVar16;
  puVar1 = (uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100);
  if (param_2 != 0) goto LAB_000475e4;
  iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40ec;
  while( true ) {
    (**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);
    iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);
    if (-1 < iVar13) break;
LAB_00047470:
    if ((*puVar1 & 0x10) == 0) {
LAB_000475c8:
      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);
    }
    else {
      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);
      if (local_2c == *piVar16) {
        return;
      }
    }
    (**(code **)(in_t9 + 0xe3d04))();
LAB_000475e4:
    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;
  }
  iVar18 = *(int *)(in_t9 + 0xe2dc8);
  iVar13 = *(int *)(in_t9 + 0xe2dc8);
  iVar2 = *(int *)(in_t9 + 0xe2de4);
  iVar3 = *(int *)(in_t9 + 0xe2dc8);
  iVar4 = *(int *)(in_t9 + 0xe2dc8);
  iVar5 = *(int *)(in_t9 + 0xe2dc8);
  do {
    do {
      iVar6 = (**(code **)(in_t9 + 0xe3b7c))
                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,
                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);
      if (iVar6 != 0xb) {
        if (-1 < iVar6) goto LAB_000475c8;
        goto LAB_00047470;
      }
    } while ((local_a8 & 1) == 0);
    cVar12 = 'G';
    puVar15 = (uint *)(iVar13 + 0x41f0);
    local_7c[0] = 'U';
    uVar10 = 1;
    pcVar11 = local_7c;
    pcVar14 = (char *)(iVar2 + 0x5dee);
    while( true ) {
      if ((local_a8 & 0x3f & uVar10) != 0) {
        pcVar11 = pcVar11 + 1;
      }
      *pcVar11 = cVar12;
      if (cVar12 == '\0') break;
      uVar10 = *puVar15;
      cVar12 = *pcVar14;
      puVar15 = puVar15 + 1;
      pcVar14 = pcVar14 + 1;
    }
    if ((local_a8 & 0x200) != 0) {
      local_7c[0] = '!';
    }
    pcVar17 = *(code **)(in_t9 + 0xe3180);
    local_88 = local_b4;
    local_8c = 2;
    local_8a = 0;
    local_84 = 0;
    local_82 = 0;
    local_80 = 0;
    local_7e = 0;
    uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);
    local_88 = local_b0;
    uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);
    uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);
    (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);
    (**(code **)(in_t9 + 0xe3da4))(uVar7);
    (**(code **)(in_t9 + 0xe3da4))(uVar8);
    if (param_2 == 0) {
      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);
    }
    else {
      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);
    }
  } while( true );
}


lui gp,0xf
addiu gp,gp,-0x5274
addu gp,gp,t9
addiu sp,sp,-0x138
lw t9,-0x7db4(gp)
sw s1,0x114(sp)
sw s2,0x118(sp)
or s2,a0,zero
lw s1,-0x7004(gp)
lw a0,-0x7fc4(gp)
sw gp,0x38(sp)
sw s3,0x11c(sp)
or s3,a1,zero
sw s0,0x110(sp)
addiu a0,a0,0x4100
sw ra,0x134(sp)
sw s8,0x130(sp)
sw s7,0x12c(sp)
sw s6,0x128(sp)
sw s5,0x124(sp)
sw s4,0x120(sp)
lw v0,0x0(s1)
sw v0,0x10c(sp)
jalr t9
_nop
lw gp,0x38(sp)
bne s3,zero,0x000475e4
_or s0,v0,zero
lw a2,-0x7fc4(gp)
addiu a2,a2,0x40ec
lw a1,-0x7fc4(gp)
li a0,0x1
lw t9,-0x7320(gp)
jalr t9
_addiu a1,a1,0x4110
or a0,s0,zero
lw gp,0x38(sp)
lw a1,-0x7fc4(gp)
lw t9,-0x7210(gp)
jalr t9
_addiu a1,a1,0x4168
bgez v0,0x000474c8
_lw gp,0x38(sp)
lw v0,0x0(s0)
andi v0,v0,0x10
beq v0,zero,0x000475c8
_lw t9,-0x73e4(gp)
jalr t9
_or a0,s0,zero
lw v1,0x10c(sp)
lw v0,0x0(s1)
bne v1,v0,0x000475d8
_lw gp,0x38(sp)
lw ra,0x134(sp)
lw s8,0x130(sp)
lw s7,0x12c(sp)
lw s6,0x128(sp)
lw s5,0x124(sp)
lw s4,0x120(sp)
lw s3,0x11c(sp)
lw s2,0x118(sp)
lw s1,0x114(sp)
lw s0,0x110(sp)
jr ra
_addiu sp,sp,0x138
addiu v0,sp,0xa8
lw s8,-0x7fc4(gp)
addiu s7,sp,0x84
sw v0,0x60(sp)
addiu v0,sp,0xa4
addiu s6,sp,0xcc
sw v0,0x5c(sp)
addiu v0,sp,0xa0
sw v0,0x58(sp)
lw v0,-0x7fc4(gp)
sw v0,0x64(sp)
addiu v0,sp,0x8c
sw v0,0x44(sp)
lw v0,-0x7fa8(gp)
sw v0,0x68(sp)
addiu v0,sp,0x9c
sw v0,0x54(sp)
addiu v0,sp,0x98
sw v0,0x50(sp)
addiu v0,sp,0x94
sw v0,0x4c(sp)
addiu v0,sp,0x90
sw v0,0x48(sp)
addiu v0,sp,0x88
sw v0,0x40(sp)
lw v0,-0x7fc4(gp)
addiu v0,v0,0x4190
sw v0,0x6c(sp)
lw v0,-0x7fc4(gp)
addiu v0,v0,0x41c0
sw v0,0x70(sp)
lw v0,-0x7fc4(gp)
addiu v0,v0,0x41ac
sw v0,0x74(sp)
addiu s5,s8,0x4170
li s4,0xb
lw v0,0x60(sp)
or a3,s7,zero
lw t9,-0x7210(gp)
or a2,s6,zero
or a1,s5,zero
sw v0,0x30(sp)
or a0,s0,zero
lw v0,0x5c(sp)
sw v0,0x2c(sp)
lw v0,0x58(sp)
sw v0,0x28(sp)
lw v0,0x44(sp)
sw v0,0x24(sp)
lw v0,0x54(sp)
sw v0,0x20(sp)
lw v0,0x50(sp)
sw v0,0x1c(sp)
lw v0,0x4c(sp)
sw v0,0x18(sp)
lw v0,0x48(sp)
sw v0,0x14(sp)
lw v0,0x40(sp)
jalr t9
_sw v0,0x10(sp)
beq v0,s4,0x000475f0
_lw gp,0x38(sp)
bltz v0,0x00047470
_nop
lw a0,-0x7fa8(gp)
lw t9,-0x7f64(gp)
jalr t9
_addiu a0,a0,-0x4770
lw t9,-0x7088(gp)
jalr t9
_nop
lw a2,-0x7fc4(gp)
b 0x0004743c
_addiu a2,a2,0x40d8
lw v0,0x90(sp)
andi v1,v0,0x1
beq v1,zero,0x00047558
_lw v1,0x64(sp)
addiu t0,sp,0xbc
li a1,0x47
andi t1,v0,0x3f
addiu a3,v1,0x41f0
li v1,0x55
or a0,t0,zero
sb v1,0xbc(sp)
lw v1,0x68(sp)
addiu a2,v1,0x5dee
li v1,0x1
and v1,t1,v1
beq v1,zero,0x00047638
_nop
addiu a0,a0,0x1
beq a1,zero,0x00047654
_sb a1,0x0(a0)
addiu a2,a2,0x1
lw v1,0x0(a3)
lbu a1,-0x1(a2)
b 0x00047628
_addiu a3,a3,0x4
andi v0,v0,0x200
beq v0,zero,0x00047664
_li v0,0x21
sb v0,0xbc(sp)
lw v0,0x84(sp)
addiu s4,sp,0xac
lw t9,-0x7c0c(gp)
ori a1,s2,0x8000
lw a2,0x8c(sp)
or a0,s4,zero
sw v0,0xb0(sp)
li v0,0x2
sw t0,0x7c(sp)
sw t9,0x78(sp)
sh v0,0xac(sp)
sh zero,0xae(sp)
sh zero,0xb4(sp)
sh zero,0xb6(sp)
sh zero,0xb8(sp)
jalr t9
_sh zero,0xba(sp)
or a0,s4,zero
or s5,v0,zero
lw v0,0x88(sp)
lw a2,0x8c(sp)
ori a1,s2,0x4000
lw t9,0x78(sp)
jalr t9
_sw v0,0xb0(sp)
lw gp,0x38(sp)
or s4,v0,zero
lw t9,-0x7028(gp)
jalr t9
_lw a0,0x8c(sp)
li a0,0x1
lw gp,0x38(sp)
or a3,s4,zero
lw t0,0x7c(sp)
or a2,s5,zero
lw a1,0x6c(sp)
sw v0,0x10(sp)
lw t9,-0x7320(gp)
jalr t9
_sw t0,0x14(sp)
lw gp,0x38(sp)
lw t9,-0x6fe8(gp)
jalr t9
_or a0,s5,zero
lw gp,0x38(sp)
lw t9,-0x6fe8(gp)
jalr t9
_or a0,s4,zero
li a0,0x1
lw gp,0x38(sp)
beq s3,zero,0x00047758
_lw t9,-0x7320(gp)
lw v0,0xa8(sp)
lw a1,0x74(sp)
lw a3,0xa4(sp)
lw a2,0xa0(sp)
sw s6,0x14(sp)
jalr t9
_sw v0,0x10(sp)
b 0x00047550
_lw gp,0x38(sp)
lw v0,0x98(sp)
lw a1,0x70(sp)
lw a3,0x94(sp)
lw a2,0x9c(sp)
sw s6,0x14(sp)
jalr t9
_sw v0,0x10(sp)
b 0x00047550
_lw gp,0x38(sp)
(translation_unit "void FUN_000473c4(uint param_1,int param_2)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  char *pcVar11;\n  char cVar12;\n  int iVar13;\n  char *pcVar14;\n  uint *puVar15;\n  int *piVar16;\n  int in_t9;\n  code *pcVar17;\n  int iVar18;\n  undefined4 local_b4;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  uint local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  undefined4 local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined2 local_8c;\n  undefined2 local_8a;\n  undefined4 local_88;\n  undefined2 local_84;\n  undefined2 local_82;\n  undefined2 local_80;\n  undefined2 local_7e;\n  char local_7c [16];\n  undefined1 auStack_6c [64];\n  int local_2c;\n  \n  piVar16 = *(int **)(in_t9 + 0xe3d88);\n  local_2c = *piVar16;\n  puVar1 = (uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100);\n  if (param_2 != 0) goto LAB_000475e4;\n  iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40ec;\n  while( true ) {\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);\n    iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);\n    if (-1 < iVar13) break;\nLAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }\n    (**(code **)(in_t9 + 0xe3d04))();\nLAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;\n  }\n  iVar18 = *(int *)(in_t9 + 0xe2dc8);\n  iVar13 = *(int *)(in_t9 + 0xe2dc8);\n  iVar2 = *(int *)(in_t9 + 0xe2de4);\n  iVar3 = *(int *)(in_t9 + 0xe2dc8);\n  iVar4 = *(int *)(in_t9 + 0xe2dc8);\n  iVar5 = *(int *)(in_t9 + 0xe2dc8);\n  do {\n    do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);\n    cVar12 = 'G';\n    puVar15 = (uint *)(iVar13 + 0x41f0);\n    local_7c[0] = 'U';\n    uVar10 = 1;\n    pcVar11 = local_7c;\n    pcVar14 = (char *)(iVar2 + 0x5dee);\n    while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }\n    if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }\n    pcVar17 = *(code **)(in_t9 + 0xe3180);\n    local_88 = local_b4;\n    local_8c = 2;\n    local_8a = 0;\n    local_84 = 0;\n    local_82 = 0;\n    local_80 = 0;\n    local_7e = 0;\n    uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);\n    local_88 = local_b0;\n    uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);\n    uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);\n    (**(code **)(in_t9 + 0xe3da4))(uVar7);\n    (**(code **)(in_t9 + 0xe3da4))(uVar8);\n    if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }\n  } while( true );\n}\n\n" (function_definition "void FUN_000473c4(uint param_1,int param_2)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  char *pcVar11;\n  char cVar12;\n  int iVar13;\n  char *pcVar14;\n  uint *puVar15;\n  int *piVar16;\n  int in_t9;\n  code *pcVar17;\n  int iVar18;\n  undefined4 local_b4;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  uint local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  undefined4 local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined2 local_8c;\n  undefined2 local_8a;\n  undefined4 local_88;\n  undefined2 local_84;\n  undefined2 local_82;\n  undefined2 local_80;\n  undefined2 local_7e;\n  char local_7c [16];\n  undefined1 auStack_6c [64];\n  int local_2c;\n  \n  piVar16 = *(int **)(in_t9 + 0xe3d88);\n  local_2c = *piVar16;\n  puVar1 = (uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100);\n  if (param_2 != 0) goto LAB_000475e4;\n  iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40ec;\n  while( true ) {\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);\n    iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);\n    if (-1 < iVar13) break;\nLAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }\n    (**(code **)(in_t9 + 0xe3d04))();\nLAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;\n  }\n  iVar18 = *(int *)(in_t9 + 0xe2dc8);\n  iVar13 = *(int *)(in_t9 + 0xe2dc8);\n  iVar2 = *(int *)(in_t9 + 0xe2de4);\n  iVar3 = *(int *)(in_t9 + 0xe2dc8);\n  iVar4 = *(int *)(in_t9 + 0xe2dc8);\n  iVar5 = *(int *)(in_t9 + 0xe2dc8);\n  do {\n    do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);\n    cVar12 = 'G';\n    puVar15 = (uint *)(iVar13 + 0x41f0);\n    local_7c[0] = 'U';\n    uVar10 = 1;\n    pcVar11 = local_7c;\n    pcVar14 = (char *)(iVar2 + 0x5dee);\n    while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }\n    if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }\n    pcVar17 = *(code **)(in_t9 + 0xe3180);\n    local_88 = local_b4;\n    local_8c = 2;\n    local_8a = 0;\n    local_84 = 0;\n    local_82 = 0;\n    local_80 = 0;\n    local_7e = 0;\n    uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);\n    local_88 = local_b0;\n    uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);\n    uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);\n    (**(code **)(in_t9 + 0xe3da4))(uVar7);\n    (**(code **)(in_t9 + 0xe3da4))(uVar8);\n    if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_000473c4(uint param_1,int param_2)" identifier (parameter_list "(uint param_1,int param_2)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  char *pcVar11;\n  char cVar12;\n  int iVar13;\n  char *pcVar14;\n  uint *puVar15;\n  int *piVar16;\n  int in_t9;\n  code *pcVar17;\n  int iVar18;\n  undefined4 local_b4;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  uint local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  undefined4 local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined2 local_8c;\n  undefined2 local_8a;\n  undefined4 local_88;\n  undefined2 local_84;\n  undefined2 local_82;\n  undefined2 local_80;\n  undefined2 local_7e;\n  char local_7c [16];\n  undefined1 auStack_6c [64];\n  int local_2c;\n  \n  piVar16 = *(int **)(in_t9 + 0xe3d88);\n  local_2c = *piVar16;\n  puVar1 = (uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100);\n  if (param_2 != 0) goto LAB_000475e4;\n  iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40ec;\n  while( true ) {\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);\n    iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);\n    if (-1 < iVar13) break;\nLAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }\n    (**(code **)(in_t9 + 0xe3d04))();\nLAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;\n  }\n  iVar18 = *(int *)(in_t9 + 0xe2dc8);\n  iVar13 = *(int *)(in_t9 + 0xe2dc8);\n  iVar2 = *(int *)(in_t9 + 0xe2de4);\n  iVar3 = *(int *)(in_t9 + 0xe2dc8);\n  iVar4 = *(int *)(in_t9 + 0xe2dc8);\n  iVar5 = *(int *)(in_t9 + 0xe2dc8);\n  do {\n    do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);\n    cVar12 = 'G';\n    puVar15 = (uint *)(iVar13 + 0x41f0);\n    local_7c[0] = 'U';\n    uVar10 = 1;\n    pcVar11 = local_7c;\n    pcVar14 = (char *)(iVar2 + 0x5dee);\n    while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }\n    if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }\n    pcVar17 = *(code **)(in_t9 + 0xe3180);\n    local_88 = local_b4;\n    local_8c = 2;\n    local_8a = 0;\n    local_84 = 0;\n    local_82 = 0;\n    local_80 = 0;\n    local_7e = 0;\n    uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);\n    local_88 = local_b0;\n    uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);\n    uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);\n    (**(code **)(in_t9 + 0xe3da4))(uVar7);\n    (**(code **)(in_t9 + 0xe3da4))(uVar8);\n    if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }\n  } while( true );\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "char cVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "uint *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "undefined4 local_b4;" type_identifier identifier ;) (declaration "undefined4 local_b0;" type_identifier identifier ;) (declaration "undefined4 local_ac;" type_identifier identifier ;) (declaration "uint local_a8;" type_identifier identifier ;) (declaration "undefined4 local_a4;" type_identifier identifier ;) (declaration "undefined4 local_a0;" type_identifier identifier ;) (declaration "undefined4 local_9c;" type_identifier identifier ;) (declaration "undefined4 local_98;" type_identifier identifier ;) (declaration "undefined4 local_94;" type_identifier identifier ;) (declaration "undefined4 local_90;" type_identifier identifier ;) (declaration "undefined2 local_8c;" type_identifier identifier ;) (declaration "undefined2 local_8a;" type_identifier identifier ;) (declaration "undefined4 local_88;" type_identifier identifier ;) (declaration "undefined2 local_84;" type_identifier identifier ;) (declaration "undefined2 local_82;" type_identifier identifier ;) (declaration "undefined2 local_80;" type_identifier identifier ;) (declaration "undefined2 local_7e;" type_identifier identifier ;) (declaration "char local_7c [16];" primitive_type (array_declarator "local_7c [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_6c [64];" type_identifier (array_declarator "auStack_6c [64]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "piVar16 = *(int **)(in_t9 + 0xe3d88);" (assignment_expression "piVar16 = *(int **)(in_t9 + 0xe3d88)" identifier = (pointer_expression "*(int **)(in_t9 + 0xe3d88)" * (cast_expression "(int **)(in_t9 + 0xe3d88)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe3d88)" ( (binary_expression "in_t9 + 0xe3d88" identifier + number_literal) ))))) ;) (expression_statement "local_2c = *piVar16;" (assignment_expression "local_2c = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "puVar1 = (uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100);" (assignment_expression "puVar1 = (uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100)" identifier = (cast_expression "(uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100)" (parenthesized_expression "(**(code **)(in_t9 + 0xe2fd8))" ( (pointer_expression "**(code **)(in_t9 + 0xe2fd8)" * (pointer_expression "*(code **)(in_t9 + 0xe2fd8)" * (cast_expression "(code **)(in_t9 + 0xe2fd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe2fd8)" ( (binary_expression "in_t9 + 0xe2fd8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(in_t9 + 0xe2dc8) + 0x4100)" ( (binary_expression "*(int *)(in_t9 + 0xe2dc8) + 0x4100" (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (param_2 != 0) goto LAB_000475e4;" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000475e4;" goto statement_identifier ;)) (expression_statement "iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40ec;" (assignment_expression "iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40ec" identifier = (binary_expression "*(int *)(in_t9 + 0xe2dc8) + 0x40ec" (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) )))) + number_literal)) ;) (while_statement "while( true ) {\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);\n    iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);\n    if (-1 < iVar13) break;\nLAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }\n    (**(code **)(in_t9 + 0xe3d04))();\nLAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);\n    iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);\n    if (-1 < iVar13) break;\nLAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }\n    (**(code **)(in_t9 + 0xe3d04))();\nLAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;\n  }" { (expression_statement "(**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);" (call_expression "(**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13)" (parenthesized_expression "(**(code **)(&UNK_000e3a6c + in_t9))" ( (pointer_expression "**(code **)(&UNK_000e3a6c + in_t9)" * (pointer_expression "*(code **)(&UNK_000e3a6c + in_t9)" * (cast_expression "(code **)(&UNK_000e3a6c + in_t9)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&UNK_000e3a6c + in_t9)" ( (binary_expression "&UNK_000e3a6c + in_t9" (pointer_expression "&UNK_000e3a6c" & identifier) + identifier) ))))) )) (argument_list "(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13)" ( number_literal , (binary_expression "*(int *)(in_t9 + 0xe2dc8) + 0x4110" (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) )))) + number_literal) , identifier ))) ;) (expression_statement "iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);" (assignment_expression "iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168)" identifier = (call_expression "(**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168)" (parenthesized_expression "(**(code **)(in_t9 + 0xe3b7c))" ( (pointer_expression "**(code **)(in_t9 + 0xe3b7c)" * (pointer_expression "*(code **)(in_t9 + 0xe3b7c)" * (cast_expression "(code **)(in_t9 + 0xe3b7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe3b7c)" ( (binary_expression "in_t9 + 0xe3b7c" identifier + number_literal) ))))) )) (argument_list "(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168)" ( identifier , (binary_expression "*(int *)(in_t9 + 0xe2dc8) + 0x4168" (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) )))) + number_literal) )))) ;) (if_statement "if (-1 < iVar13) break;" if (parenthesized_expression "(-1 < iVar13)" ( (binary_expression "-1 < iVar13" number_literal < identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }" statement_identifier : (if_statement "if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }" if (parenthesized_expression "((*puVar1 & 0x10) == 0)" ( (binary_expression "(*puVar1 & 0x10) == 0" (parenthesized_expression "(*puVar1 & 0x10)" ( (binary_expression "*puVar1 & 0x10" (pointer_expression "*puVar1" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }" { (labeled_statement "LAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);" statement_identifier : (expression_statement "(**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);" (call_expression "(**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770)" (parenthesized_expression "(**(code **)(in_t9 + 0xe2e28))" ( (pointer_expression "**(code **)(in_t9 + 0xe2e28)" * (pointer_expression "*(code **)(in_t9 + 0xe2e28)" * (cast_expression "(code **)(in_t9 + 0xe2e28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe2e28)" ( (binary_expression "in_t9 + 0xe2e28" identifier + number_literal) ))))) )) (argument_list "(*(int *)(in_t9 + 0xe2de4) + -0x4770)" ( (binary_expression "*(int *)(in_t9 + 0xe2de4) + -0x4770" (pointer_expression "*(int *)(in_t9 + 0xe2de4)" * (cast_expression "(int *)(in_t9 + 0xe2de4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2de4)" ( (binary_expression "in_t9 + 0xe2de4" identifier + number_literal) )))) + number_literal) ))) ;)) }) (else_clause "else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }" else (compound_statement "{\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }" { (expression_statement "(**(code **)(&UNK_000e39a8 + in_t9))(puVar1);" (call_expression "(**(code **)(&UNK_000e39a8 + in_t9))(puVar1)" (parenthesized_expression "(**(code **)(&UNK_000e39a8 + in_t9))" ( (pointer_expression "**(code **)(&UNK_000e39a8 + in_t9)" * (pointer_expression "*(code **)(&UNK_000e39a8 + in_t9)" * (cast_expression "(code **)(&UNK_000e39a8 + in_t9)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&UNK_000e39a8 + in_t9)" ( (binary_expression "&UNK_000e39a8 + in_t9" (pointer_expression "&UNK_000e39a8" & identifier) + identifier) ))))) )) (argument_list "(puVar1)" ( identifier ))) ;) (if_statement "if (local_2c == *piVar16) {\n        return;\n      }" if (parenthesized_expression "(local_2c == *piVar16)" ( (binary_expression "local_2c == *piVar16" identifier == (pointer_expression "*piVar16" * identifier)) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })))) (expression_statement "(**(code **)(in_t9 + 0xe3d04))();" (call_expression "(**(code **)(in_t9 + 0xe3d04))()" (parenthesized_expression "(**(code **)(in_t9 + 0xe3d04))" ( (pointer_expression "**(code **)(in_t9 + 0xe3d04)" * (pointer_expression "*(code **)(in_t9 + 0xe3d04)" * (cast_expression "(code **)(in_t9 + 0xe3d04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe3d04)" ( (binary_expression "in_t9 + 0xe3d04" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;" statement_identifier : (expression_statement "iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;" (assignment_expression "iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8" identifier = (binary_expression "*(int *)(in_t9 + 0xe2dc8) + 0x40d8" (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) )))) + number_literal)) ;)) })) (expression_statement "iVar18 = *(int *)(in_t9 + 0xe2dc8);" (assignment_expression "iVar18 = *(int *)(in_t9 + 0xe2dc8)" identifier = (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(in_t9 + 0xe2dc8);" (assignment_expression "iVar13 = *(int *)(in_t9 + 0xe2dc8)" identifier = (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(in_t9 + 0xe2de4);" (assignment_expression "iVar2 = *(int *)(in_t9 + 0xe2de4)" identifier = (pointer_expression "*(int *)(in_t9 + 0xe2de4)" * (cast_expression "(int *)(in_t9 + 0xe2de4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2de4)" ( (binary_expression "in_t9 + 0xe2de4" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(in_t9 + 0xe2dc8);" (assignment_expression "iVar3 = *(int *)(in_t9 + 0xe2dc8)" identifier = (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(in_t9 + 0xe2dc8);" (assignment_expression "iVar4 = *(int *)(in_t9 + 0xe2dc8)" identifier = (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(in_t9 + 0xe2dc8);" (assignment_expression "iVar5 = *(int *)(in_t9 + 0xe2dc8)" identifier = (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) ))))) ;) (do_statement "do {\n    do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);\n    cVar12 = 'G';\n    puVar15 = (uint *)(iVar13 + 0x41f0);\n    local_7c[0] = 'U';\n    uVar10 = 1;\n    pcVar11 = local_7c;\n    pcVar14 = (char *)(iVar2 + 0x5dee);\n    while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }\n    if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }\n    pcVar17 = *(code **)(in_t9 + 0xe3180);\n    local_88 = local_b4;\n    local_8c = 2;\n    local_8a = 0;\n    local_84 = 0;\n    local_82 = 0;\n    local_80 = 0;\n    local_7e = 0;\n    uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);\n    local_88 = local_b0;\n    uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);\n    uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);\n    (**(code **)(in_t9 + 0xe3da4))(uVar7);\n    (**(code **)(in_t9 + 0xe3da4))(uVar8);\n    if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }\n  } while( true );" do (compound_statement "{\n    do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);\n    cVar12 = 'G';\n    puVar15 = (uint *)(iVar13 + 0x41f0);\n    local_7c[0] = 'U';\n    uVar10 = 1;\n    pcVar11 = local_7c;\n    pcVar14 = (char *)(iVar2 + 0x5dee);\n    while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }\n    if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }\n    pcVar17 = *(code **)(in_t9 + 0xe3180);\n    local_88 = local_b4;\n    local_8c = 2;\n    local_8a = 0;\n    local_84 = 0;\n    local_82 = 0;\n    local_80 = 0;\n    local_7e = 0;\n    uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);\n    local_88 = local_b0;\n    uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);\n    uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);\n    (**(code **)(in_t9 + 0xe3da4))(uVar7);\n    (**(code **)(in_t9 + 0xe3da4))(uVar8);\n    if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }\n  }" { (do_statement "do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);" do (compound_statement "{\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    }" { (expression_statement "iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);" (assignment_expression "iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90)" identifier = (call_expression "(**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90)" (parenthesized_expression "(**(code **)(in_t9 + 0xe3b7c))" ( (pointer_expression "**(code **)(in_t9 + 0xe3b7c)" * (pointer_expression "*(code **)(in_t9 + 0xe3b7c)" * (cast_expression "(code **)(in_t9 + 0xe3b7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe3b7c)" ( (binary_expression "in_t9 + 0xe3b7c" identifier + number_literal) ))))) )) (argument_list "(puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90)" ( identifier , (binary_expression "iVar18 + 0x4170" identifier + number_literal) , identifier , (pointer_expression "&local_b4" & identifier) , (pointer_expression "&local_b0" & identifier) , (pointer_expression "&local_a8" & identifier) , (pointer_expression "&local_a4" & identifier) , (pointer_expression "&local_a0" & identifier) , (pointer_expression "&local_9c" & identifier) , (pointer_expression "&local_ac" & identifier) , (pointer_expression "&local_98" & identifier) , (pointer_expression "&local_94" & identifier) , (pointer_expression "&local_90" & identifier) )))) ;) (if_statement "if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }" if (parenthesized_expression "(iVar6 != 0xb)" ( (binary_expression "iVar6 != 0xb" identifier != number_literal) )) (compound_statement "{\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }" { (if_statement "if (-1 < iVar6) goto LAB_000475c8;" if (parenthesized_expression "(-1 < iVar6)" ( (binary_expression "-1 < iVar6" number_literal < identifier) )) (goto_statement "goto LAB_000475c8;" goto statement_identifier ;)) (goto_statement "goto LAB_00047470;" goto statement_identifier ;) })) }) while (parenthesized_expression "((local_a8 & 1) == 0)" ( (binary_expression "(local_a8 & 1) == 0" (parenthesized_expression "(local_a8 & 1)" ( (binary_expression "local_a8 & 1" identifier & number_literal) )) == number_literal) )) ;) (expression_statement "cVar12 = 'G';" (assignment_expression "cVar12 = 'G'" identifier = (char_literal "'G'" ' character ')) ;) (expression_statement "puVar15 = (uint *)(iVar13 + 0x41f0);" (assignment_expression "puVar15 = (uint *)(iVar13 + 0x41f0)" identifier = (cast_expression "(uint *)(iVar13 + 0x41f0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x41f0)" ( (binary_expression "iVar13 + 0x41f0" identifier + number_literal) )))) ;) (expression_statement "local_7c[0] = 'U';" (assignment_expression "local_7c[0] = 'U'" (subscript_expression "local_7c[0]" identifier [ number_literal ]) = (char_literal "'U'" ' character ')) ;) (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" identifier = number_literal) ;) (expression_statement "pcVar11 = local_7c;" (assignment_expression "pcVar11 = local_7c" identifier = identifier) ;) (expression_statement "pcVar14 = (char *)(iVar2 + 0x5dee);" (assignment_expression "pcVar14 = (char *)(iVar2 + 0x5dee)" identifier = (cast_expression "(char *)(iVar2 + 0x5dee)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x5dee)" ( (binary_expression "iVar2 + 0x5dee" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }" { (if_statement "if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }" if (parenthesized_expression "((local_a8 & 0x3f & uVar10) != 0)" ( (binary_expression "(local_a8 & 0x3f & uVar10) != 0" (parenthesized_expression "(local_a8 & 0x3f & uVar10)" ( (binary_expression "local_a8 & 0x3f & uVar10" (binary_expression "local_a8 & 0x3f" identifier & number_literal) & identifier) )) != number_literal) )) (compound_statement "{\n        pcVar11 = pcVar11 + 1;\n      }" { (expression_statement "pcVar11 = pcVar11 + 1;" (assignment_expression "pcVar11 = pcVar11 + 1" identifier = (binary_expression "pcVar11 + 1" identifier + number_literal)) ;) })) (expression_statement "*pcVar11 = cVar12;" (assignment_expression "*pcVar11 = cVar12" (pointer_expression "*pcVar11" * identifier) = identifier) ;) (if_statement "if (cVar12 == '\0') break;" if (parenthesized_expression "(cVar12 == '\0')" ( (binary_expression "cVar12 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "uVar10 = *puVar15;" (assignment_expression "uVar10 = *puVar15" identifier = (pointer_expression "*puVar15" * identifier)) ;) (expression_statement "cVar12 = *pcVar14;" (assignment_expression "cVar12 = *pcVar14" identifier = (pointer_expression "*pcVar14" * identifier)) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) (expression_statement "pcVar14 = pcVar14 + 1;" (assignment_expression "pcVar14 = pcVar14 + 1" identifier = (binary_expression "pcVar14 + 1" identifier + number_literal)) ;) })) (if_statement "if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }" if (parenthesized_expression "((local_a8 & 0x200) != 0)" ( (binary_expression "(local_a8 & 0x200) != 0" (parenthesized_expression "(local_a8 & 0x200)" ( (binary_expression "local_a8 & 0x200" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_7c[0] = '!';\n    }" { (expression_statement "local_7c[0] = '!';" (assignment_expression "local_7c[0] = '!'" (subscript_expression "local_7c[0]" identifier [ number_literal ]) = (char_literal "'!'" ' character ')) ;) })) (expression_statement "pcVar17 = *(code **)(in_t9 + 0xe3180);" (assignment_expression "pcVar17 = *(code **)(in_t9 + 0xe3180)" identifier = (pointer_expression "*(code **)(in_t9 + 0xe3180)" * (cast_expression "(code **)(in_t9 + 0xe3180)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe3180)" ( (binary_expression "in_t9 + 0xe3180" identifier + number_literal) ))))) ;) (expression_statement "local_88 = local_b4;" (assignment_expression "local_88 = local_b4" identifier = identifier) ;) (expression_statement "local_8c = 2;" (assignment_expression "local_8c = 2" identifier = number_literal) ;) (expression_statement "local_8a = 0;" (assignment_expression "local_8a = 0" identifier = number_literal) ;) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "local_82 = 0;" (assignment_expression "local_82 = 0" identifier = number_literal) ;) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "local_7e = 0;" (assignment_expression "local_7e = 0" identifier = number_literal) ;) (expression_statement "uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);" (assignment_expression "uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac)" identifier = (call_expression "(*pcVar17)(&local_8c,param_1 | 0x8000,local_ac)" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "(&local_8c,param_1 | 0x8000,local_ac)" ( (pointer_expression "&local_8c" & identifier) , (binary_expression "param_1 | 0x8000" identifier | number_literal) , identifier )))) ;) (expression_statement "local_88 = local_b0;" (assignment_expression "local_88 = local_b0" identifier = identifier) ;) (expression_statement "uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);" (assignment_expression "uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac)" identifier = (call_expression "(*pcVar17)(&local_8c,param_1 | 0x4000,local_ac)" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "(&local_8c,param_1 | 0x4000,local_ac)" ( (pointer_expression "&local_8c" & identifier) , (binary_expression "param_1 | 0x4000" identifier | number_literal) , identifier )))) ;) (expression_statement "uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);" (assignment_expression "uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac)" identifier = (call_expression "(**(code **)(in_t9 + 0xe3d64))(local_ac)" (parenthesized_expression "(**(code **)(in_t9 + 0xe3d64))" ( (pointer_expression "**(code **)(in_t9 + 0xe3d64)" * (pointer_expression "*(code **)(in_t9 + 0xe3d64)" * (cast_expression "(code **)(in_t9 + 0xe3d64)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe3d64)" ( (binary_expression "in_t9 + 0xe3d64" identifier + number_literal) ))))) )) (argument_list "(local_ac)" ( identifier )))) ;) (expression_statement "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);" (call_expression "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c)" (parenthesized_expression "(**(code **)(&UNK_000e3a6c + in_t9))" ( (pointer_expression "**(code **)(&UNK_000e3a6c + in_t9)" * (pointer_expression "*(code **)(&UNK_000e3a6c + in_t9)" * (cast_expression "(code **)(&UNK_000e3a6c + in_t9)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&UNK_000e3a6c + in_t9)" ( (binary_expression "&UNK_000e3a6c + in_t9" (pointer_expression "&UNK_000e3a6c" & identifier) + identifier) ))))) )) (argument_list "(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c)" ( number_literal , (binary_expression "iVar3 + 0x4190" identifier + number_literal) , identifier , identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(in_t9 + 0xe3da4))(uVar7);" (call_expression "(**(code **)(in_t9 + 0xe3da4))(uVar7)" (parenthesized_expression "(**(code **)(in_t9 + 0xe3da4))" ( (pointer_expression "**(code **)(in_t9 + 0xe3da4)" * (pointer_expression "*(code **)(in_t9 + 0xe3da4)" * (cast_expression "(code **)(in_t9 + 0xe3da4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe3da4)" ( (binary_expression "in_t9 + 0xe3da4" identifier + number_literal) ))))) )) (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "(**(code **)(in_t9 + 0xe3da4))(uVar8);" (call_expression "(**(code **)(in_t9 + 0xe3da4))(uVar8)" (parenthesized_expression "(**(code **)(in_t9 + 0xe3da4))" ( (pointer_expression "**(code **)(in_t9 + 0xe3da4)" * (pointer_expression "*(code **)(in_t9 + 0xe3da4)" * (cast_expression "(code **)(in_t9 + 0xe3da4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe3da4)" ( (binary_expression "in_t9 + 0xe3da4" identifier + number_literal) ))))) )) (argument_list "(uVar8)" ( identifier ))) ;) (if_statement "if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }" { (expression_statement "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);" (call_expression "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c)" (parenthesized_expression "(**(code **)(&UNK_000e3a6c + in_t9))" ( (pointer_expression "**(code **)(&UNK_000e3a6c + in_t9)" * (pointer_expression "*(code **)(&UNK_000e3a6c + in_t9)" * (cast_expression "(code **)(&UNK_000e3a6c + in_t9)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&UNK_000e3a6c + in_t9)" ( (binary_expression "&UNK_000e3a6c + in_t9" (pointer_expression "&UNK_000e3a6c" & identifier) + identifier) ))))) )) (argument_list "(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c)" ( number_literal , (binary_expression "iVar4 + 0x41c0" identifier + number_literal) , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }" else (compound_statement "{\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }" { (expression_statement "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);" (call_expression "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c)" (parenthesized_expression "(**(code **)(&UNK_000e3a6c + in_t9))" ( (pointer_expression "**(code **)(&UNK_000e3a6c + in_t9)" * (pointer_expression "*(code **)(&UNK_000e3a6c + in_t9)" * (cast_expression "(code **)(&UNK_000e3a6c + in_t9)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&UNK_000e3a6c + in_t9)" ( (binary_expression "&UNK_000e3a6c + in_t9" (pointer_expression "&UNK_000e3a6c" & identifier) + identifier) ))))) )) (argument_list "(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c)" ( number_literal , (binary_expression "iVar5 + 0x41ac" identifier + number_literal) , identifier , identifier , identifier , identifier ))) ;) }))) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void bb_displayroutes(int noresolve,int netstatfmt)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  undefined4 uVar12;\n  uint uVar13;\n  char *pcVar14;\n  char cVar15;\n  undefined *puVar16;\n  char *pcVar17;\n  uint *puVar18;\n  ulong d;\n  ulong g;\n  ulong m;\n  int flgs;\n  int ref;\n  int use;\n  int metric;\n  int mtu;\n  int win;\n  int ir;\n  sockaddr_in s_addr;\n  char flags [16];\n  char devname [64];\n  \n  puVar3 = PTR___stack_chk_guard_0012b14c;\n  iVar4 = *(int *)PTR___stack_chk_guard_0012b14c;\n  puVar5 = (uint *)(*(code *)PTR_xfopen_for_read_0012a39c)(PTR_UINT_0012a18c + 0x4100);\n  if (netstatfmt != 0) goto LAB_000475e4;\n  puVar16 = PTR_UINT_0012a18c + 0x40ec;\n  while( true ) {\n    (*(code *)PTR___printf_chk_0012ae30)(1,PTR_UINT_0012a18c + 0x4110,puVar16);\n    iVar6 = (*(code *)PTR_fscanf_0012af40)(puVar5,PTR_UINT_0012a18c + 0x4168);\n    puVar1 = PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8;\n    puVar16 = PTR_UINT_0012a18c;\n    if (-1 < iVar6) break;\nLAB_00047470:\n    if ((*puVar5 & 0x10) == 0) {\nLAB_000475c8:\n      (*(code *)PTR_bb_perror_msg_and_die_0012a1ec)\n                (PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + -0x4770);\n    }\n    else {\n      (*(code *)PTR_fclose_0012ad6c)(puVar5);\n      if (iVar4 == *(int *)puVar3) {\n        return;\n      }\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000475e4:\n    puVar16 = PTR_UINT_0012a18c + 0x40d8;\n  }\n  puVar7 = PTR_UINT_0012a18c + 0x4190;\n  puVar8 = PTR_UINT_0012a18c + 0x41c0;\n  puVar9 = PTR_UINT_0012a18c + 0x41ac;\n  do {\n    do {\n      iVar6 = (*(code *)PTR_fscanf_0012af40)\n                        (puVar5,puVar16 + 0x4170,devname,&d,&g,&flgs,&ref,&use,&metric,&m,&mtu,&win,\n                         &ir);\n      puVar2 = PTR_INET_rresolve_0012a544;\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((flgs & 1U) == 0);\n    cVar15 = 'G';\n    puVar18 = (uint *)(puVar16 + 0x41f0);\n    flags[0] = 'U';\n    uVar13 = 1;\n    pcVar14 = flags;\n    pcVar17 = puVar1 + 0x5dee;\n    while( true ) {\n      if ((flgs & 0x3fU & uVar13) != 0) {\n        pcVar14 = pcVar14 + 1;\n      }\n      *pcVar14 = cVar15;\n      if (cVar15 == '\0') break;\n      uVar13 = *puVar18;\n      cVar15 = *pcVar17;\n      puVar18 = puVar18 + 1;\n      pcVar17 = pcVar17 + 1;\n    }\n    if ((flgs & 0x200U) != 0) {\n      flags[0] = '!';\n    }\n    s_addr.sin_addr.s_addr = d;\n    s_addr.sin_family = 2;\n    s_addr.sin_port = 0;\n    s_addr.sin_zero[0] = '\0';\n    s_addr.sin_zero[1] = '\0';\n    s_addr.sin_zero[2] = '\0';\n    s_addr.sin_zero[3] = '\0';\n    s_addr.sin_zero[4] = '\0';\n    s_addr.sin_zero[5] = '\0';\n    s_addr.sin_zero[6] = '\0';\n    s_addr.sin_zero[7] = '\0';\n    uVar10 = (*(code *)PTR_INET_rresolve_0012a544)(&s_addr,noresolve | 0x8000,m);\n    s_addr.sin_addr.s_addr = g;\n    uVar11 = (*(code *)puVar2)(&s_addr,noresolve | 0x4000,m);\n    uVar12 = (*(code *)PTR_inet_ntoa_0012b128)(m);\n    (*(code *)PTR___printf_chk_0012ae30)(1,puVar7,uVar10,uVar11,uVar12,flags);\n    (*(code *)PTR_free_0012b168)(uVar10);\n    (*(code *)PTR_free_0012b168)(uVar11);\n    if (netstatfmt == 0) {\n      (*(code *)PTR___printf_chk_0012ae30)(1,puVar8,metric,ref,use,devname);\n    }\n    else {\n      (*(code *)PTR___printf_chk_0012ae30)(1,puVar9,mtu,win,ir,devname);\n    }\n  } while( true );\n}\n\n" (function_definition "void bb_displayroutes(int noresolve,int netstatfmt)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  undefined4 uVar12;\n  uint uVar13;\n  char *pcVar14;\n  char cVar15;\n  undefined *puVar16;\n  char *pcVar17;\n  uint *puVar18;\n  ulong d;\n  ulong g;\n  ulong m;\n  int flgs;\n  int ref;\n  int use;\n  int metric;\n  int mtu;\n  int win;\n  int ir;\n  sockaddr_in s_addr;\n  char flags [16];\n  char devname [64];\n  \n  puVar3 = PTR___stack_chk_guard_0012b14c;\n  iVar4 = *(int *)PTR___stack_chk_guard_0012b14c;\n  puVar5 = (uint *)(*(code *)PTR_xfopen_for_read_0012a39c)(PTR_UINT_0012a18c + 0x4100);\n  if (netstatfmt != 0) goto LAB_000475e4;\n  puVar16 = PTR_UINT_0012a18c + 0x40ec;\n  while( true ) {\n    (*(code *)PTR___printf_chk_0012ae30)(1,PTR_UINT_0012a18c + 0x4110,puVar16);\n    iVar6 = (*(code *)PTR_fscanf_0012af40)(puVar5,PTR_UINT_0012a18c + 0x4168);\n    puVar1 = PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8;\n    puVar16 = PTR_UINT_0012a18c;\n    if (-1 < iVar6) break;\nLAB_00047470:\n    if ((*puVar5 & 0x10) == 0) {\nLAB_000475c8:\n      (*(code *)PTR_bb_perror_msg_and_die_0012a1ec)\n                (PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + -0x4770);\n    }\n    else {\n      (*(code *)PTR_fclose_0012ad6c)(puVar5);\n      if (iVar4 == *(int *)puVar3) {\n        return;\n      }\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000475e4:\n    puVar16 = PTR_UINT_0012a18c + 0x40d8;\n  }\n  puVar7 = PTR_UINT_0012a18c + 0x4190;\n  puVar8 = PTR_UINT_0012a18c + 0x41c0;\n  puVar9 = PTR_UINT_0012a18c + 0x41ac;\n  do {\n    do {\n      iVar6 = (*(code *)PTR_fscanf_0012af40)\n                        (puVar5,puVar16 + 0x4170,devname,&d,&g,&flgs,&ref,&use,&metric,&m,&mtu,&win,\n                         &ir);\n      puVar2 = PTR_INET_rresolve_0012a544;\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((flgs & 1U) == 0);\n    cVar15 = 'G';\n    puVar18 = (uint *)(puVar16 + 0x41f0);\n    flags[0] = 'U';\n    uVar13 = 1;\n    pcVar14 = flags;\n    pcVar17 = puVar1 + 0x5dee;\n    while( true ) {\n      if ((flgs & 0x3fU & uVar13) != 0) {\n        pcVar14 = pcVar14 + 1;\n      }\n      *pcVar14 = cVar15;\n      if (cVar15 == '\0') break;\n      uVar13 = *puVar18;\n      cVar15 = *pcVar17;\n      puVar18 = puVar18 + 1;\n      pcVar17 = pcVar17 + 1;\n    }\n    if ((flgs & 0x200U) != 0) {\n      flags[0] = '!';\n    }\n    s_addr.sin_addr.s_addr = d;\n    s_addr.sin_family = 2;\n    s_addr.sin_port = 0;\n    s_addr.sin_zero[0] = '\0';\n    s_addr.sin_zero[1] = '\0';\n    s_addr.sin_zero[2] = '\0';\n    s_addr.sin_zero[3] = '\0';\n    s_addr.sin_zero[4] = '\0';\n    s_addr.sin_zero[5] = '\0';\n    s_addr.sin_zero[6] = '\0';\n    s_addr.sin_zero[7] = '\0';\n    uVar10 = (*(code *)PTR_INET_rresolve_0012a544)(&s_addr,noresolve | 0x8000,m);\n    s_addr.sin_addr.s_addr = g;\n    uVar11 = (*(code *)puVar2)(&s_addr,noresolve | 0x4000,m);\n    uVar12 = (*(code *)PTR_inet_ntoa_0012b128)(m);\n    (*(code *)PTR___printf_chk_0012ae30)(1,puVar7,uVar10,uVar11,uVar12,flags);\n    (*(code *)PTR_free_0012b168)(uVar10);\n    (*(code *)PTR_free_0012b168)(uVar11);\n    if (netstatfmt == 0) {\n      (*(code *)PTR___printf_chk_0012ae30)(1,puVar8,metric,ref,use,devname);\n    }\n    else {\n      (*(code *)PTR___printf_chk_0012ae30)(1,puVar9,mtu,win,ir,devname);\n    }\n  } while( true );\n}" primitive_type (function_declarator "bb_displayroutes(int noresolve,int netstatfmt)" identifier (parameter_list "(int noresolve,int netstatfmt)" ( (parameter_declaration "int noresolve" primitive_type identifier) , (parameter_declaration "int netstatfmt" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  undefined4 uVar12;\n  uint uVar13;\n  char *pcVar14;\n  char cVar15;\n  undefined *puVar16;\n  char *pcVar17;\n  uint *puVar18;\n  ulong d;\n  ulong g;\n  ulong m;\n  int flgs;\n  int ref;\n  int use;\n  int metric;\n  int mtu;\n  int win;\n  int ir;\n  sockaddr_in s_addr;\n  char flags [16];\n  char devname [64];\n  \n  puVar3 = PTR___stack_chk_guard_0012b14c;\n  iVar4 = *(int *)PTR___stack_chk_guard_0012b14c;\n  puVar5 = (uint *)(*(code *)PTR_xfopen_for_read_0012a39c)(PTR_UINT_0012a18c + 0x4100);\n  if (netstatfmt != 0) goto LAB_000475e4;\n  puVar16 = PTR_UINT_0012a18c + 0x40ec;\n  while( true ) {\n    (*(code *)PTR___printf_chk_0012ae30)(1,PTR_UINT_0012a18c + 0x4110,puVar16);\n    iVar6 = (*(code *)PTR_fscanf_0012af40)(puVar5,PTR_UINT_0012a18c + 0x4168);\n    puVar1 = PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8;\n    puVar16 = PTR_UINT_0012a18c;\n    if (-1 < iVar6) break;\nLAB_00047470:\n    if ((*puVar5 & 0x10) == 0) {\nLAB_000475c8:\n      (*(code *)PTR_bb_perror_msg_and_die_0012a1ec)\n                (PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + -0x4770);\n    }\n    else {\n      (*(code *)PTR_fclose_0012ad6c)(puVar5);\n      if (iVar4 == *(int *)puVar3) {\n        return;\n      }\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000475e4:\n    puVar16 = PTR_UINT_0012a18c + 0x40d8;\n  }\n  puVar7 = PTR_UINT_0012a18c + 0x4190;\n  puVar8 = PTR_UINT_0012a18c + 0x41c0;\n  puVar9 = PTR_UINT_0012a18c + 0x41ac;\n  do {\n    do {\n      iVar6 = (*(code *)PTR_fscanf_0012af40)\n                        (puVar5,puVar16 + 0x4170,devname,&d,&g,&flgs,&ref,&use,&metric,&m,&mtu,&win,\n                         &ir);\n      puVar2 = PTR_INET_rresolve_0012a544;\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((flgs & 1U) == 0);\n    cVar15 = 'G';\n    puVar18 = (uint *)(puVar16 + 0x41f0);\n    flags[0] = 'U';\n    uVar13 = 1;\n    pcVar14 = flags;\n    pcVar17 = puVar1 + 0x5dee;\n    while( true ) {\n      if ((flgs & 0x3fU & uVar13) != 0) {\n        pcVar14 = pcVar14 + 1;\n      }\n      *pcVar14 = cVar15;\n      if (cVar15 == '\0') break;\n      uVar13 = *puVar18;\n      cVar15 = *pcVar17;\n      puVar18 = puVar18 + 1;\n      pcVar17 = pcVar17 + 1;\n    }\n    if ((flgs & 0x200U) != 0) {\n      flags[0] = '!';\n    }\n    s_addr.sin_addr.s_addr = d;\n    s_addr.sin_family = 2;\n    s_addr.sin_port = 0;\n    s_addr.sin_zero[0] = '\0';\n    s_addr.sin_zero[1] = '\0';\n    s_addr.sin_zero[2] = '\0';\n    s_addr.sin_zero[3] = '\0';\n    s_addr.sin_zero[4] = '\0';\n    s_addr.sin_zero[5] = '\0';\n    s_addr.sin_zero[6] = '\0';\n    s_addr.sin_zero[7] = '\0';\n    uVar10 = (*(code *)PTR_INET_rresolve_0012a544)(&s_addr,noresolve | 0x8000,m);\n    s_addr.sin_addr.s_addr = g;\n    uVar11 = (*(code *)puVar2)(&s_addr,noresolve | 0x4000,m);\n    uVar12 = (*(code *)PTR_inet_ntoa_0012b128)(m);\n    (*(code *)PTR___printf_chk_0012ae30)(1,puVar7,uVar10,uVar11,uVar12,flags);\n    (*(code *)PTR_free_0012b168)(uVar10);\n    (*(code *)PTR_free_0012b168)(uVar11);\n    if (netstatfmt == 0) {\n      (*(code *)PTR___printf_chk_0012ae30)(1,puVar8,metric,ref,use,devname);\n    }\n    else {\n      (*(code *)PTR___printf_chk_0012ae30)(1,puVar9,mtu,win,ir,devname);\n    }\n  } while( true );\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "char cVar15;" primitive_type identifier ;) (declaration "undefined *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "char *pcVar17;" primitive_type (pointer_declarator "*pcVar17" * identifier) ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "ulong d;" type_identifier identifier ;) (declaration "ulong g;" type_identifier identifier ;) (declaration "ulong m;" type_identifier identifier ;) (declaration "int flgs;" primitive_type identifier ;) (declaration "int ref;" primitive_type identifier ;) (declaration "int use;" primitive_type identifier ;) (declaration "int metric;" primitive_type identifier ;) (declaration "int mtu;" primitive_type identifier ;) (declaration "int win;" primitive_type identifier ;) (declaration "int ir;" primitive_type identifier ;) (declaration "sockaddr_in s_addr;" type_identifier identifier ;) (declaration "char flags [16];" primitive_type (array_declarator "flags [16]" identifier [ number_literal ]) ;) (declaration "char devname [64];" primitive_type (array_declarator "devname [64]" identifier [ number_literal ]) ;) (expression_statement "puVar3 = PTR___stack_chk_guard_0012b14c;" (assignment_expression "puVar3 = PTR___stack_chk_guard_0012b14c" identifier = identifier) ;) (expression_statement "iVar4 = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "iVar4 = *(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))) ;) (expression_statement "puVar5 = (uint *)(*(code *)PTR_xfopen_for_read_0012a39c)(PTR_UINT_0012a18c + 0x4100);" (assignment_expression "puVar5 = (uint *)(*(code *)PTR_xfopen_for_read_0012a39c)(PTR_UINT_0012a18c + 0x4100)" identifier = (cast_expression "(uint *)(*(code *)PTR_xfopen_for_read_0012a39c)(PTR_UINT_0012a18c + 0x4100)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_xfopen_for_read_0012a39c)(PTR_UINT_0012a18c + 0x4100)" (parenthesized_expression "(*(code *)PTR_xfopen_for_read_0012a39c)" ( (pointer_expression "*(code *)PTR_xfopen_for_read_0012a39c" * (cast_expression "(code *)PTR_xfopen_for_read_0012a39c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_UINT_0012a18c + 0x4100)" ( (binary_expression "PTR_UINT_0012a18c + 0x4100" identifier + number_literal) ))))) ;) (if_statement "if (netstatfmt != 0) goto LAB_000475e4;" if (parenthesized_expression "(netstatfmt != 0)" ( (binary_expression "netstatfmt != 0" identifier != number_literal) )) (goto_statement "goto LAB_000475e4;" goto statement_identifier ;)) (expression_statement "puVar16 = PTR_UINT_0012a18c + 0x40ec;" (assignment_expression "puVar16 = PTR_UINT_0012a18c + 0x40ec" identifier = (binary_expression "PTR_UINT_0012a18c + 0x40ec" identifier + number_literal)) ;) (while_statement "while( true ) {\n    (*(code *)PTR___printf_chk_0012ae30)(1,PTR_UINT_0012a18c + 0x4110,puVar16);\n    iVar6 = (*(code *)PTR_fscanf_0012af40)(puVar5,PTR_UINT_0012a18c + 0x4168);\n    puVar1 = PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8;\n    puVar16 = PTR_UINT_0012a18c;\n    if (-1 < iVar6) break;\nLAB_00047470:\n    if ((*puVar5 & 0x10) == 0) {\nLAB_000475c8:\n      (*(code *)PTR_bb_perror_msg_and_die_0012a1ec)\n                (PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + -0x4770);\n    }\n    else {\n      (*(code *)PTR_fclose_0012ad6c)(puVar5);\n      if (iVar4 == *(int *)puVar3) {\n        return;\n      }\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000475e4:\n    puVar16 = PTR_UINT_0012a18c + 0x40d8;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    (*(code *)PTR___printf_chk_0012ae30)(1,PTR_UINT_0012a18c + 0x4110,puVar16);\n    iVar6 = (*(code *)PTR_fscanf_0012af40)(puVar5,PTR_UINT_0012a18c + 0x4168);\n    puVar1 = PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8;\n    puVar16 = PTR_UINT_0012a18c;\n    if (-1 < iVar6) break;\nLAB_00047470:\n    if ((*puVar5 & 0x10) == 0) {\nLAB_000475c8:\n      (*(code *)PTR_bb_perror_msg_and_die_0012a1ec)\n                (PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + -0x4770);\n    }\n    else {\n      (*(code *)PTR_fclose_0012ad6c)(puVar5);\n      if (iVar4 == *(int *)puVar3) {\n        return;\n      }\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000475e4:\n    puVar16 = PTR_UINT_0012a18c + 0x40d8;\n  }" { (expression_statement "(*(code *)PTR___printf_chk_0012ae30)(1,PTR_UINT_0012a18c + 0x4110,puVar16);" (call_expression "(*(code *)PTR___printf_chk_0012ae30)(1,PTR_UINT_0012a18c + 0x4110,puVar16)" (parenthesized_expression "(*(code *)PTR___printf_chk_0012ae30)" ( (pointer_expression "*(code *)PTR___printf_chk_0012ae30" * (cast_expression "(code *)PTR___printf_chk_0012ae30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,PTR_UINT_0012a18c + 0x4110,puVar16)" ( number_literal , (binary_expression "PTR_UINT_0012a18c + 0x4110" identifier + number_literal) , identifier ))) ;) (expression_statement "iVar6 = (*(code *)PTR_fscanf_0012af40)(puVar5,PTR_UINT_0012a18c + 0x4168);" (assignment_expression "iVar6 = (*(code *)PTR_fscanf_0012af40)(puVar5,PTR_UINT_0012a18c + 0x4168)" identifier = (call_expression "(*(code *)PTR_fscanf_0012af40)(puVar5,PTR_UINT_0012a18c + 0x4168)" (parenthesized_expression "(*(code *)PTR_fscanf_0012af40)" ( (pointer_expression "*(code *)PTR_fscanf_0012af40" * (cast_expression "(code *)PTR_fscanf_0012af40" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar5,PTR_UINT_0012a18c + 0x4168)" ( identifier , (binary_expression "PTR_UINT_0012a18c + 0x4168" identifier + number_literal) )))) ;) (expression_statement "puVar1 = PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8;" (assignment_expression "puVar1 = PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P" identifier = (binary_expression "PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P" (binary_expression "PTR_s_<_W_q_v1_HxLJ_" identifier < identifier) & identifier)) (ERROR ")9__f_l_0012a1a8" ) number_literal identifier) ;) (expression_statement "puVar16 = PTR_UINT_0012a18c;" (assignment_expression "puVar16 = PTR_UINT_0012a18c" identifier = identifier) ;) (if_statement "if (-1 < iVar6) break;" if (parenthesized_expression "(-1 < iVar6)" ( (binary_expression "-1 < iVar6" number_literal < identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00047470:\n    if ((*puVar5 & 0x10) == 0) {\nLAB_000475c8:\n      (*(code *)PTR_bb_perror_msg_and_die_0012a1ec)\n                (PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + -0x4770);\n    }\n    else {\n      (*(code *)PTR_fclose_0012ad6c)(puVar5);\n      if (iVar4 == *(int *)puVar3) {\n        return;\n      }\n    }" statement_identifier : (if_statement "if ((*puVar5 & 0x10) == 0) {\nLAB_000475c8:\n      (*(code *)PTR_bb_perror_msg_and_die_0012a1ec)\n                (PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + -0x4770);\n    }\n    else {\n      (*(code *)PTR_fclose_0012ad6c)(puVar5);\n      if (iVar4 == *(int *)puVar3) {\n        return;\n      }\n    }" if (parenthesized_expression "((*puVar5 & 0x10) == 0)" ( (binary_expression "(*puVar5 & 0x10) == 0" (parenthesized_expression "(*puVar5 & 0x10)" ( (binary_expression "*puVar5 & 0x10" (pointer_expression "*puVar5" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_000475c8:\n      (*(code *)PTR_bb_perror_msg_and_die_0012a1ec)\n                (PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + -0x4770);\n    }" { (labeled_statement "LAB_000475c8:\n      (*(code *)PTR_bb_perror_msg_and_die_0012a1ec)\n                (PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + -0x4770);" statement_identifier : (expression_statement "(*(code *)PTR_bb_perror_msg_and_die_0012a1ec)\n                (PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + -0x4770);" (binary_expression "(*(code *)PTR_bb_perror_msg_and_die_0012a1ec)\n                (PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + -0x4770" (call_expression "(*(code *)PTR_bb_perror_msg_and_die_0012a1ec)\n                (PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)" (parenthesized_expression "(*(code *)PTR_bb_perror_msg_and_die_0012a1ec)" ( (pointer_expression "*(code *)PTR_bb_perror_msg_and_die_0012a1ec" * (cast_expression "(code *)PTR_bb_perror_msg_and_die_0012a1ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)" ( (binary_expression "PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P" (binary_expression "PTR_s_<_W_q_v1_HxLJ_" identifier < identifier) & identifier) ))) (ERROR "9__f_l_0012a1a8" number_literal identifier) + number_literal) (ERROR ")" )) ;)) }) (else_clause "else {\n      (*(code *)PTR_fclose_0012ad6c)(puVar5);\n      if (iVar4 == *(int *)puVar3) {\n        return;\n      }\n    }" else (compound_statement "{\n      (*(code *)PTR_fclose_0012ad6c)(puVar5);\n      if (iVar4 == *(int *)puVar3) {\n        return;\n      }\n    }" { (expression_statement "(*(code *)PTR_fclose_0012ad6c)(puVar5);" (call_expression "(*(code *)PTR_fclose_0012ad6c)(puVar5)" (parenthesized_expression "(*(code *)PTR_fclose_0012ad6c)" ( (pointer_expression "*(code *)PTR_fclose_0012ad6c" * (cast_expression "(code *)PTR_fclose_0012ad6c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar5)" ( identifier ))) ;) (if_statement "if (iVar4 == *(int *)puVar3) {\n        return;\n      }" if (parenthesized_expression "(iVar4 == *(int *)puVar3)" ( (binary_expression "iVar4 == *(int *)puVar3" identifier == (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })))) (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_000475e4:\n    puVar16 = PTR_UINT_0012a18c + 0x40d8;" statement_identifier : (expression_statement "puVar16 = PTR_UINT_0012a18c + 0x40d8;" (assignment_expression "puVar16 = PTR_UINT_0012a18c + 0x40d8" identifier = (binary_expression "PTR_UINT_0012a18c + 0x40d8" identifier + number_literal)) ;)) })) (expression_statement "puVar7 = PTR_UINT_0012a18c + 0x4190;" (assignment_expression "puVar7 = PTR_UINT_0012a18c + 0x4190" identifier = (binary_expression "PTR_UINT_0012a18c + 0x4190" identifier + number_literal)) ;) (expression_statement "puVar8 = PTR_UINT_0012a18c + 0x41c0;" (assignment_expression "puVar8 = PTR_UINT_0012a18c + 0x41c0" identifier = (binary_expression "PTR_UINT_0012a18c + 0x41c0" identifier + number_literal)) ;) (expression_statement "puVar9 = PTR_UINT_0012a18c + 0x41ac;" (assignment_expression "puVar9 = PTR_UINT_0012a18c + 0x41ac" identifier = (binary_expression "PTR_UINT_0012a18c + 0x41ac" identifier + number_literal)) ;) (do_statement "do {\n    do {\n      iVar6 = (*(code *)PTR_fscanf_0012af40)\n                        (puVar5,puVar16 + 0x4170,devname,&d,&g,&flgs,&ref,&use,&metric,&m,&mtu,&win,\n                         &ir);\n      puVar2 = PTR_INET_rresolve_0012a544;\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((flgs & 1U) == 0);\n    cVar15 = 'G';\n    puVar18 = (uint *)(puVar16 + 0x41f0);\n    flags[0] = 'U';\n    uVar13 = 1;\n    pcVar14 = flags;\n    pcVar17 = puVar1 + 0x5dee;\n    while( true ) {\n      if ((flgs & 0x3fU & uVar13) != 0) {\n        pcVar14 = pcVar14 + 1;\n      }\n      *pcVar14 = cVar15;\n      if (cVar15 == '\0') break;\n      uVar13 = *puVar18;\n      cVar15 = *pcVar17;\n      puVar18 = puVar18 + 1;\n      pcVar17 = pcVar17 + 1;\n    }\n    if ((flgs & 0x200U) != 0) {\n      flags[0] = '!';\n    }\n    s_addr.sin_addr.s_addr = d;\n    s_addr.sin_family = 2;\n    s_addr.sin_port = 0;\n    s_addr.sin_zero[0] = '\0';\n    s_addr.sin_zero[1] = '\0';\n    s_addr.sin_zero[2] = '\0';\n    s_addr.sin_zero[3] = '\0';\n    s_addr.sin_zero[4] = '\0';\n    s_addr.sin_zero[5] = '\0';\n    s_addr.sin_zero[6] = '\0';\n    s_addr.sin_zero[7] = '\0';\n    uVar10 = (*(code *)PTR_INET_rresolve_0012a544)(&s_addr,noresolve | 0x8000,m);\n    s_addr.sin_addr.s_addr = g;\n    uVar11 = (*(code *)puVar2)(&s_addr,noresolve | 0x4000,m);\n    uVar12 = (*(code *)PTR_inet_ntoa_0012b128)(m);\n    (*(code *)PTR___printf_chk_0012ae30)(1,puVar7,uVar10,uVar11,uVar12,flags);\n    (*(code *)PTR_free_0012b168)(uVar10);\n    (*(code *)PTR_free_0012b168)(uVar11);\n    if (netstatfmt == 0) {\n      (*(code *)PTR___printf_chk_0012ae30)(1,puVar8,metric,ref,use,devname);\n    }\n    else {\n      (*(code *)PTR___printf_chk_0012ae30)(1,puVar9,mtu,win,ir,devname);\n    }\n  } while( true );" do (compound_statement "{\n    do {\n      iVar6 = (*(code *)PTR_fscanf_0012af40)\n                        (puVar5,puVar16 + 0x4170,devname,&d,&g,&flgs,&ref,&use,&metric,&m,&mtu,&win,\n                         &ir);\n      puVar2 = PTR_INET_rresolve_0012a544;\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((flgs & 1U) == 0);\n    cVar15 = 'G';\n    puVar18 = (uint *)(puVar16 + 0x41f0);\n    flags[0] = 'U';\n    uVar13 = 1;\n    pcVar14 = flags;\n    pcVar17 = puVar1 + 0x5dee;\n    while( true ) {\n      if ((flgs & 0x3fU & uVar13) != 0) {\n        pcVar14 = pcVar14 + 1;\n      }\n      *pcVar14 = cVar15;\n      if (cVar15 == '\0') break;\n      uVar13 = *puVar18;\n      cVar15 = *pcVar17;\n      puVar18 = puVar18 + 1;\n      pcVar17 = pcVar17 + 1;\n    }\n    if ((flgs & 0x200U) != 0) {\n      flags[0] = '!';\n    }\n    s_addr.sin_addr.s_addr = d;\n    s_addr.sin_family = 2;\n    s_addr.sin_port = 0;\n    s_addr.sin_zero[0] = '\0';\n    s_addr.sin_zero[1] = '\0';\n    s_addr.sin_zero[2] = '\0';\n    s_addr.sin_zero[3] = '\0';\n    s_addr.sin_zero[4] = '\0';\n    s_addr.sin_zero[5] = '\0';\n    s_addr.sin_zero[6] = '\0';\n    s_addr.sin_zero[7] = '\0';\n    uVar10 = (*(code *)PTR_INET_rresolve_0012a544)(&s_addr,noresolve | 0x8000,m);\n    s_addr.sin_addr.s_addr = g;\n    uVar11 = (*(code *)puVar2)(&s_addr,noresolve | 0x4000,m);\n    uVar12 = (*(code *)PTR_inet_ntoa_0012b128)(m);\n    (*(code *)PTR___printf_chk_0012ae30)(1,puVar7,uVar10,uVar11,uVar12,flags);\n    (*(code *)PTR_free_0012b168)(uVar10);\n    (*(code *)PTR_free_0012b168)(uVar11);\n    if (netstatfmt == 0) {\n      (*(code *)PTR___printf_chk_0012ae30)(1,puVar8,metric,ref,use,devname);\n    }\n    else {\n      (*(code *)PTR___printf_chk_0012ae30)(1,puVar9,mtu,win,ir,devname);\n    }\n  }" { (do_statement "do {\n      iVar6 = (*(code *)PTR_fscanf_0012af40)\n                        (puVar5,puVar16 + 0x4170,devname,&d,&g,&flgs,&ref,&use,&metric,&m,&mtu,&win,\n                         &ir);\n      puVar2 = PTR_INET_rresolve_0012a544;\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((flgs & 1U) == 0);" do (compound_statement "{\n      iVar6 = (*(code *)PTR_fscanf_0012af40)\n                        (puVar5,puVar16 + 0x4170,devname,&d,&g,&flgs,&ref,&use,&metric,&m,&mtu,&win,\n                         &ir);\n      puVar2 = PTR_INET_rresolve_0012a544;\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    }" { (expression_statement "iVar6 = (*(code *)PTR_fscanf_0012af40)\n                        (puVar5,puVar16 + 0x4170,devname,&d,&g,&flgs,&ref,&use,&metric,&m,&mtu,&win,\n                         &ir);" (assignment_expression "iVar6 = (*(code *)PTR_fscanf_0012af40)\n                        (puVar5,puVar16 + 0x4170,devname,&d,&g,&flgs,&ref,&use,&metric,&m,&mtu,&win,\n                         &ir)" identifier = (call_expression "(*(code *)PTR_fscanf_0012af40)\n                        (puVar5,puVar16 + 0x4170,devname,&d,&g,&flgs,&ref,&use,&metric,&m,&mtu,&win,\n                         &ir)" (parenthesized_expression "(*(code *)PTR_fscanf_0012af40)" ( (pointer_expression "*(code *)PTR_fscanf_0012af40" * (cast_expression "(code *)PTR_fscanf_0012af40" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar5,puVar16 + 0x4170,devname,&d,&g,&flgs,&ref,&use,&metric,&m,&mtu,&win,\n                         &ir)" ( identifier , (binary_expression "puVar16 + 0x4170" identifier + number_literal) , identifier , (pointer_expression "&d" & identifier) , (pointer_expression "&g" & identifier) , (pointer_expression "&flgs" & identifier) , (pointer_expression "&ref" & identifier) , (pointer_expression "&use" & identifier) , (pointer_expression "&metric" & identifier) , (pointer_expression "&m" & identifier) , (pointer_expression "&mtu" & identifier) , (pointer_expression "&win" & identifier) , (pointer_expression "&ir" & identifier) )))) ;) (expression_statement "puVar2 = PTR_INET_rresolve_0012a544;" (assignment_expression "puVar2 = PTR_INET_rresolve_0012a544" identifier = identifier) ;) (if_statement "if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }" if (parenthesized_expression "(iVar6 != 0xb)" ( (binary_expression "iVar6 != 0xb" identifier != number_literal) )) (compound_statement "{\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }" { (if_statement "if (-1 < iVar6) goto LAB_000475c8;" if (parenthesized_expression "(-1 < iVar6)" ( (binary_expression "-1 < iVar6" number_literal < identifier) )) (goto_statement "goto LAB_000475c8;" goto statement_identifier ;)) (goto_statement "goto LAB_00047470;" goto statement_identifier ;) })) }) while (parenthesized_expression "((flgs & 1U) == 0)" ( (binary_expression "(flgs & 1U) == 0" (parenthesized_expression "(flgs & 1U)" ( (binary_expression "flgs & 1U" identifier & number_literal) )) == number_literal) )) ;) (expression_statement "cVar15 = 'G';" (assignment_expression "cVar15 = 'G'" identifier = (char_literal "'G'" ' character ')) ;) (expression_statement "puVar18 = (uint *)(puVar16 + 0x41f0);" (assignment_expression "puVar18 = (uint *)(puVar16 + 0x41f0)" identifier = (cast_expression "(uint *)(puVar16 + 0x41f0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x41f0)" ( (binary_expression "puVar16 + 0x41f0" identifier + number_literal) )))) ;) (expression_statement "flags[0] = 'U';" (assignment_expression "flags[0] = 'U'" (subscript_expression "flags[0]" identifier [ number_literal ]) = (char_literal "'U'" ' character ')) ;) (expression_statement "uVar13 = 1;" (assignment_expression "uVar13 = 1" identifier = number_literal) ;) (expression_statement "pcVar14 = flags;" (assignment_expression "pcVar14 = flags" identifier = identifier) ;) (expression_statement "pcVar17 = puVar1 + 0x5dee;" (assignment_expression "pcVar17 = puVar1 + 0x5dee" identifier = (binary_expression "puVar1 + 0x5dee" identifier + number_literal)) ;) (while_statement "while( true ) {\n      if ((flgs & 0x3fU & uVar13) != 0) {\n        pcVar14 = pcVar14 + 1;\n      }\n      *pcVar14 = cVar15;\n      if (cVar15 == '\0') break;\n      uVar13 = *puVar18;\n      cVar15 = *pcVar17;\n      puVar18 = puVar18 + 1;\n      pcVar17 = pcVar17 + 1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if ((flgs & 0x3fU & uVar13) != 0) {\n        pcVar14 = pcVar14 + 1;\n      }\n      *pcVar14 = cVar15;\n      if (cVar15 == '\0') break;\n      uVar13 = *puVar18;\n      cVar15 = *pcVar17;\n      puVar18 = puVar18 + 1;\n      pcVar17 = pcVar17 + 1;\n    }" { (if_statement "if ((flgs & 0x3fU & uVar13) != 0) {\n        pcVar14 = pcVar14 + 1;\n      }" if (parenthesized_expression "((flgs & 0x3fU & uVar13) != 0)" ( (binary_expression "(flgs & 0x3fU & uVar13) != 0" (parenthesized_expression "(flgs & 0x3fU & uVar13)" ( (binary_expression "flgs & 0x3fU & uVar13" (binary_expression "flgs & 0x3fU" identifier & number_literal) & identifier) )) != number_literal) )) (compound_statement "{\n        pcVar14 = pcVar14 + 1;\n      }" { (expression_statement "pcVar14 = pcVar14 + 1;" (assignment_expression "pcVar14 = pcVar14 + 1" identifier = (binary_expression "pcVar14 + 1" identifier + number_literal)) ;) })) (expression_statement "*pcVar14 = cVar15;" (assignment_expression "*pcVar14 = cVar15" (pointer_expression "*pcVar14" * identifier) = identifier) ;) (if_statement "if (cVar15 == '\0') break;" if (parenthesized_expression "(cVar15 == '\0')" ( (binary_expression "cVar15 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "uVar13 = *puVar18;" (assignment_expression "uVar13 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "cVar15 = *pcVar17;" (assignment_expression "cVar15 = *pcVar17" identifier = (pointer_expression "*pcVar17" * identifier)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "pcVar17 = pcVar17 + 1;" (assignment_expression "pcVar17 = pcVar17 + 1" identifier = (binary_expression "pcVar17 + 1" identifier + number_literal)) ;) })) (if_statement "if ((flgs & 0x200U) != 0) {\n      flags[0] = '!';\n    }" if (parenthesized_expression "((flgs & 0x200U) != 0)" ( (binary_expression "(flgs & 0x200U) != 0" (parenthesized_expression "(flgs & 0x200U)" ( (binary_expression "flgs & 0x200U" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      flags[0] = '!';\n    }" { (expression_statement "flags[0] = '!';" (assignment_expression "flags[0] = '!'" (subscript_expression "flags[0]" identifier [ number_literal ]) = (char_literal "'!'" ' character ')) ;) })) (expression_statement "s_addr.sin_addr.s_addr = d;" (assignment_expression "s_addr.sin_addr.s_addr = d" (field_expression "s_addr.sin_addr.s_addr" (field_expression "s_addr.sin_addr" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "s_addr.sin_family = 2;" (assignment_expression "s_addr.sin_family = 2" (field_expression "s_addr.sin_family" identifier . field_identifier) = number_literal) ;) (expression_statement "s_addr.sin_port = 0;" (assignment_expression "s_addr.sin_port = 0" (field_expression "s_addr.sin_port" identifier . field_identifier) = number_literal) ;) (expression_statement "s_addr.sin_zero[0] = '\0';" (assignment_expression "s_addr.sin_zero[0] = '\0'" (subscript_expression "s_addr.sin_zero[0]" (field_expression "s_addr.sin_zero" identifier . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "s_addr.sin_zero[1] = '\0';" (assignment_expression "s_addr.sin_zero[1] = '\0'" (subscript_expression "s_addr.sin_zero[1]" (field_expression "s_addr.sin_zero" identifier . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "s_addr.sin_zero[2] = '\0';" (assignment_expression "s_addr.sin_zero[2] = '\0'" (subscript_expression "s_addr.sin_zero[2]" (field_expression "s_addr.sin_zero" identifier . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "s_addr.sin_zero[3] = '\0';" (assignment_expression "s_addr.sin_zero[3] = '\0'" (subscript_expression "s_addr.sin_zero[3]" (field_expression "s_addr.sin_zero" identifier . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "s_addr.sin_zero[4] = '\0';" (assignment_expression "s_addr.sin_zero[4] = '\0'" (subscript_expression "s_addr.sin_zero[4]" (field_expression "s_addr.sin_zero" identifier . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "s_addr.sin_zero[5] = '\0';" (assignment_expression "s_addr.sin_zero[5] = '\0'" (subscript_expression "s_addr.sin_zero[5]" (field_expression "s_addr.sin_zero" identifier . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "s_addr.sin_zero[6] = '\0';" (assignment_expression "s_addr.sin_zero[6] = '\0'" (subscript_expression "s_addr.sin_zero[6]" (field_expression "s_addr.sin_zero" identifier . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "s_addr.sin_zero[7] = '\0';" (assignment_expression "s_addr.sin_zero[7] = '\0'" (subscript_expression "s_addr.sin_zero[7]" (field_expression "s_addr.sin_zero" identifier . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar10 = (*(code *)PTR_INET_rresolve_0012a544)(&s_addr,noresolve | 0x8000,m);" (assignment_expression "uVar10 = (*(code *)PTR_INET_rresolve_0012a544)(&s_addr,noresolve | 0x8000,m)" identifier = (call_expression "(*(code *)PTR_INET_rresolve_0012a544)(&s_addr,noresolve | 0x8000,m)" (parenthesized_expression "(*(code *)PTR_INET_rresolve_0012a544)" ( (pointer_expression "*(code *)PTR_INET_rresolve_0012a544" * (cast_expression "(code *)PTR_INET_rresolve_0012a544" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&s_addr,noresolve | 0x8000,m)" ( (pointer_expression "&s_addr" & identifier) , (binary_expression "noresolve | 0x8000" identifier | number_literal) , identifier )))) ;) (expression_statement "s_addr.sin_addr.s_addr = g;" (assignment_expression "s_addr.sin_addr.s_addr = g" (field_expression "s_addr.sin_addr.s_addr" (field_expression "s_addr.sin_addr" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "uVar11 = (*(code *)puVar2)(&s_addr,noresolve | 0x4000,m);" (assignment_expression "uVar11 = (*(code *)puVar2)(&s_addr,noresolve | 0x4000,m)" identifier = (call_expression "(*(code *)puVar2)(&s_addr,noresolve | 0x4000,m)" (parenthesized_expression "(*(code *)puVar2)" ( (pointer_expression "*(code *)puVar2" * (cast_expression "(code *)puVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&s_addr,noresolve | 0x4000,m)" ( (pointer_expression "&s_addr" & identifier) , (binary_expression "noresolve | 0x4000" identifier | number_literal) , identifier )))) ;) (expression_statement "uVar12 = (*(code *)PTR_inet_ntoa_0012b128)(m);" (assignment_expression "uVar12 = (*(code *)PTR_inet_ntoa_0012b128)(m)" identifier = (call_expression "(*(code *)PTR_inet_ntoa_0012b128)(m)" (parenthesized_expression "(*(code *)PTR_inet_ntoa_0012b128)" ( (pointer_expression "*(code *)PTR_inet_ntoa_0012b128" * (cast_expression "(code *)PTR_inet_ntoa_0012b128" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(m)" ( identifier )))) ;) (expression_statement "(*(code *)PTR___printf_chk_0012ae30)(1,puVar7,uVar10,uVar11,uVar12,flags);" (call_expression "(*(code *)PTR___printf_chk_0012ae30)(1,puVar7,uVar10,uVar11,uVar12,flags)" (parenthesized_expression "(*(code *)PTR___printf_chk_0012ae30)" ( (pointer_expression "*(code *)PTR___printf_chk_0012ae30" * (cast_expression "(code *)PTR___printf_chk_0012ae30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,puVar7,uVar10,uVar11,uVar12,flags)" ( number_literal , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "(*(code *)PTR_free_0012b168)(uVar10);" (call_expression "(*(code *)PTR_free_0012b168)(uVar10)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" ( (pointer_expression "*(code *)PTR_free_0012b168" * (cast_expression "(code *)PTR_free_0012b168" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar10)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_0012b168)(uVar11);" (call_expression "(*(code *)PTR_free_0012b168)(uVar11)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" ( (pointer_expression "*(code *)PTR_free_0012b168" * (cast_expression "(code *)PTR_free_0012b168" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar11)" ( identifier ))) ;) (if_statement "if (netstatfmt == 0) {\n      (*(code *)PTR___printf_chk_0012ae30)(1,puVar8,metric,ref,use,devname);\n    }\n    else {\n      (*(code *)PTR___printf_chk_0012ae30)(1,puVar9,mtu,win,ir,devname);\n    }" if (parenthesized_expression "(netstatfmt == 0)" ( (binary_expression "netstatfmt == 0" identifier == number_literal) )) (compound_statement "{\n      (*(code *)PTR___printf_chk_0012ae30)(1,puVar8,metric,ref,use,devname);\n    }" { (expression_statement "(*(code *)PTR___printf_chk_0012ae30)(1,puVar8,metric,ref,use,devname);" (call_expression "(*(code *)PTR___printf_chk_0012ae30)(1,puVar8,metric,ref,use,devname)" (parenthesized_expression "(*(code *)PTR___printf_chk_0012ae30)" ( (pointer_expression "*(code *)PTR___printf_chk_0012ae30" * (cast_expression "(code *)PTR___printf_chk_0012ae30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,puVar8,metric,ref,use,devname)" ( number_literal , identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      (*(code *)PTR___printf_chk_0012ae30)(1,puVar9,mtu,win,ir,devname);\n    }" else (compound_statement "{\n      (*(code *)PTR___printf_chk_0012ae30)(1,puVar9,mtu,win,ir,devname);\n    }" { (expression_statement "(*(code *)PTR___printf_chk_0012ae30)(1,puVar9,mtu,win,ir,devname);" (call_expression "(*(code *)PTR___printf_chk_0012ae30)(1,puVar9,mtu,win,ir,devname)" (parenthesized_expression "(*(code *)PTR___printf_chk_0012ae30)" ( (pointer_expression "*(code *)PTR___printf_chk_0012ae30" * (cast_expression "(code *)PTR___printf_chk_0012ae30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,puVar9,mtu,win,ir,devname)" ( number_literal , identifier , identifier , identifier , identifier , identifier ))) ;) }))) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void FUN_000473c4(uint param_1,int param_2)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  char *pcVar11;\n  char cVar12;\n  int iVar13;\n  char *pcVar14;\n  uint *puVar15;\n  int *piVar16;\n  int in_t9;\n  code *pcVar17;\n  int iVar18;\n  undefined4 local_b4;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  uint local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  undefined4 local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined2 local_8c;\n  undefined2 local_8a;\n  undefined4 local_88;\n  undefined2 local_84;\n  undefined2 local_82;\n  undefined2 local_80;\n  undefined2 local_7e;\n  char local_7c [16];\n  undefined1 auStack_6c [64];\n  int local_2c;\n  \n  piVar16 = *(int **)(in_t9 + 0xe3d88);\n  local_2c = *piVar16;\n  puVar1 = (uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100);\n  if (param_2 != 0) goto LAB_000475e4;\n  iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40ec;\n  while( true ) {\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);\n    iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);\n    if (-1 < iVar13) break;\nLAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }\n    (**(code **)(in_t9 + 0xe3d04))();\nLAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;\n  }\n  iVar18 = *(int *)(in_t9 + 0xe2dc8);\n  iVar13 = *(int *)(in_t9 + 0xe2dc8);\n  iVar2 = *(int *)(in_t9 + 0xe2de4);\n  iVar3 = *(int *)(in_t9 + 0xe2dc8);\n  iVar4 = *(int *)(in_t9 + 0xe2dc8);\n  iVar5 = *(int *)(in_t9 + 0xe2dc8);\n  do {\n    do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);\n    cVar12 = 'G';\n    puVar15 = (uint *)(iVar13 + 0x41f0);\n    local_7c[0] = 'U';\n    uVar10 = 1;\n    pcVar11 = local_7c;\n    pcVar14 = (char *)(iVar2 + 0x5dee);\n    while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }\n    if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }\n    pcVar17 = *(code **)(in_t9 + 0xe3180);\n    local_88 = local_b4;\n    local_8c = 2;\n    local_8a = 0;\n    local_84 = 0;\n    local_82 = 0;\n    local_80 = 0;\n    local_7e = 0;\n    uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);\n    local_88 = local_b0;\n    uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);\n    uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);\n    (**(code **)(in_t9 + 0xe3da4))(uVar7);\n    (**(code **)(in_t9 + 0xe3da4))(uVar8);\n    if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }\n  } while( true );\n}\n\n" (function_definition "void FUN_000473c4(uint param_1,int param_2)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  char *pcVar11;\n  char cVar12;\n  int iVar13;\n  char *pcVar14;\n  uint *puVar15;\n  int *piVar16;\n  int in_t9;\n  code *pcVar17;\n  int iVar18;\n  undefined4 local_b4;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  uint local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  undefined4 local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined2 local_8c;\n  undefined2 local_8a;\n  undefined4 local_88;\n  undefined2 local_84;\n  undefined2 local_82;\n  undefined2 local_80;\n  undefined2 local_7e;\n  char local_7c [16];\n  undefined1 auStack_6c [64];\n  int local_2c;\n  \n  piVar16 = *(int **)(in_t9 + 0xe3d88);\n  local_2c = *piVar16;\n  puVar1 = (uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100);\n  if (param_2 != 0) goto LAB_000475e4;\n  iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40ec;\n  while( true ) {\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);\n    iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);\n    if (-1 < iVar13) break;\nLAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }\n    (**(code **)(in_t9 + 0xe3d04))();\nLAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;\n  }\n  iVar18 = *(int *)(in_t9 + 0xe2dc8);\n  iVar13 = *(int *)(in_t9 + 0xe2dc8);\n  iVar2 = *(int *)(in_t9 + 0xe2de4);\n  iVar3 = *(int *)(in_t9 + 0xe2dc8);\n  iVar4 = *(int *)(in_t9 + 0xe2dc8);\n  iVar5 = *(int *)(in_t9 + 0xe2dc8);\n  do {\n    do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);\n    cVar12 = 'G';\n    puVar15 = (uint *)(iVar13 + 0x41f0);\n    local_7c[0] = 'U';\n    uVar10 = 1;\n    pcVar11 = local_7c;\n    pcVar14 = (char *)(iVar2 + 0x5dee);\n    while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }\n    if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }\n    pcVar17 = *(code **)(in_t9 + 0xe3180);\n    local_88 = local_b4;\n    local_8c = 2;\n    local_8a = 0;\n    local_84 = 0;\n    local_82 = 0;\n    local_80 = 0;\n    local_7e = 0;\n    uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);\n    local_88 = local_b0;\n    uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);\n    uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);\n    (**(code **)(in_t9 + 0xe3da4))(uVar7);\n    (**(code **)(in_t9 + 0xe3da4))(uVar8);\n    if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_000473c4(uint param_1,int param_2)" identifier (parameter_list "(uint param_1,int param_2)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  char *pcVar11;\n  char cVar12;\n  int iVar13;\n  char *pcVar14;\n  uint *puVar15;\n  int *piVar16;\n  int in_t9;\n  code *pcVar17;\n  int iVar18;\n  undefined4 local_b4;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  uint local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  undefined4 local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined2 local_8c;\n  undefined2 local_8a;\n  undefined4 local_88;\n  undefined2 local_84;\n  undefined2 local_82;\n  undefined2 local_80;\n  undefined2 local_7e;\n  char local_7c [16];\n  undefined1 auStack_6c [64];\n  int local_2c;\n  \n  piVar16 = *(int **)(in_t9 + 0xe3d88);\n  local_2c = *piVar16;\n  puVar1 = (uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100);\n  if (param_2 != 0) goto LAB_000475e4;\n  iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40ec;\n  while( true ) {\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);\n    iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);\n    if (-1 < iVar13) break;\nLAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }\n    (**(code **)(in_t9 + 0xe3d04))();\nLAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;\n  }\n  iVar18 = *(int *)(in_t9 + 0xe2dc8);\n  iVar13 = *(int *)(in_t9 + 0xe2dc8);\n  iVar2 = *(int *)(in_t9 + 0xe2de4);\n  iVar3 = *(int *)(in_t9 + 0xe2dc8);\n  iVar4 = *(int *)(in_t9 + 0xe2dc8);\n  iVar5 = *(int *)(in_t9 + 0xe2dc8);\n  do {\n    do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);\n    cVar12 = 'G';\n    puVar15 = (uint *)(iVar13 + 0x41f0);\n    local_7c[0] = 'U';\n    uVar10 = 1;\n    pcVar11 = local_7c;\n    pcVar14 = (char *)(iVar2 + 0x5dee);\n    while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }\n    if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }\n    pcVar17 = *(code **)(in_t9 + 0xe3180);\n    local_88 = local_b4;\n    local_8c = 2;\n    local_8a = 0;\n    local_84 = 0;\n    local_82 = 0;\n    local_80 = 0;\n    local_7e = 0;\n    uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);\n    local_88 = local_b0;\n    uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);\n    uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);\n    (**(code **)(in_t9 + 0xe3da4))(uVar7);\n    (**(code **)(in_t9 + 0xe3da4))(uVar8);\n    if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }\n  } while( true );\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "char cVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "uint *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "undefined4 local_b4;" type_identifier identifier ;) (declaration "undefined4 local_b0;" type_identifier identifier ;) (declaration "undefined4 local_ac;" type_identifier identifier ;) (declaration "uint local_a8;" type_identifier identifier ;) (declaration "undefined4 local_a4;" type_identifier identifier ;) (declaration "undefined4 local_a0;" type_identifier identifier ;) (declaration "undefined4 local_9c;" type_identifier identifier ;) (declaration "undefined4 local_98;" type_identifier identifier ;) (declaration "undefined4 local_94;" type_identifier identifier ;) (declaration "undefined4 local_90;" type_identifier identifier ;) (declaration "undefined2 local_8c;" type_identifier identifier ;) (declaration "undefined2 local_8a;" type_identifier identifier ;) (declaration "undefined4 local_88;" type_identifier identifier ;) (declaration "undefined2 local_84;" type_identifier identifier ;) (declaration "undefined2 local_82;" type_identifier identifier ;) (declaration "undefined2 local_80;" type_identifier identifier ;) (declaration "undefined2 local_7e;" type_identifier identifier ;) (declaration "char local_7c [16];" primitive_type (array_declarator "local_7c [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_6c [64];" type_identifier (array_declarator "auStack_6c [64]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "piVar16 = *(int **)(in_t9 + 0xe3d88);" (assignment_expression "piVar16 = *(int **)(in_t9 + 0xe3d88)" identifier = (pointer_expression "*(int **)(in_t9 + 0xe3d88)" * (cast_expression "(int **)(in_t9 + 0xe3d88)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe3d88)" ( (binary_expression "in_t9 + 0xe3d88" identifier + number_literal) ))))) ;) (expression_statement "local_2c = *piVar16;" (assignment_expression "local_2c = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "puVar1 = (uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100);" (assignment_expression "puVar1 = (uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100)" identifier = (cast_expression "(uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100)" (parenthesized_expression "(**(code **)(in_t9 + 0xe2fd8))" ( (pointer_expression "**(code **)(in_t9 + 0xe2fd8)" * (pointer_expression "*(code **)(in_t9 + 0xe2fd8)" * (cast_expression "(code **)(in_t9 + 0xe2fd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe2fd8)" ( (binary_expression "in_t9 + 0xe2fd8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(in_t9 + 0xe2dc8) + 0x4100)" ( (binary_expression "*(int *)(in_t9 + 0xe2dc8) + 0x4100" (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (param_2 != 0) goto LAB_000475e4;" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000475e4;" goto statement_identifier ;)) (expression_statement "iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40ec;" (assignment_expression "iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40ec" identifier = (binary_expression "*(int *)(in_t9 + 0xe2dc8) + 0x40ec" (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) )))) + number_literal)) ;) (while_statement "while( true ) {\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);\n    iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);\n    if (-1 < iVar13) break;\nLAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }\n    (**(code **)(in_t9 + 0xe3d04))();\nLAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);\n    iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);\n    if (-1 < iVar13) break;\nLAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }\n    (**(code **)(in_t9 + 0xe3d04))();\nLAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;\n  }" { (expression_statement "(**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);" (call_expression "(**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13)" (parenthesized_expression "(**(code **)(&UNK_000e3a6c + in_t9))" ( (pointer_expression "**(code **)(&UNK_000e3a6c + in_t9)" * (pointer_expression "*(code **)(&UNK_000e3a6c + in_t9)" * (cast_expression "(code **)(&UNK_000e3a6c + in_t9)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&UNK_000e3a6c + in_t9)" ( (binary_expression "&UNK_000e3a6c + in_t9" (pointer_expression "&UNK_000e3a6c" & identifier) + identifier) ))))) )) (argument_list "(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13)" ( number_literal , (binary_expression "*(int *)(in_t9 + 0xe2dc8) + 0x4110" (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) )))) + number_literal) , identifier ))) ;) (expression_statement "iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);" (assignment_expression "iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168)" identifier = (call_expression "(**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168)" (parenthesized_expression "(**(code **)(in_t9 + 0xe3b7c))" ( (pointer_expression "**(code **)(in_t9 + 0xe3b7c)" * (pointer_expression "*(code **)(in_t9 + 0xe3b7c)" * (cast_expression "(code **)(in_t9 + 0xe3b7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe3b7c)" ( (binary_expression "in_t9 + 0xe3b7c" identifier + number_literal) ))))) )) (argument_list "(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168)" ( identifier , (binary_expression "*(int *)(in_t9 + 0xe2dc8) + 0x4168" (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) )))) + number_literal) )))) ;) (if_statement "if (-1 < iVar13) break;" if (parenthesized_expression "(-1 < iVar13)" ( (binary_expression "-1 < iVar13" number_literal < identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }" statement_identifier : (if_statement "if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }" if (parenthesized_expression "((*puVar1 & 0x10) == 0)" ( (binary_expression "(*puVar1 & 0x10) == 0" (parenthesized_expression "(*puVar1 & 0x10)" ( (binary_expression "*puVar1 & 0x10" (pointer_expression "*puVar1" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }" { (labeled_statement "LAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);" statement_identifier : (expression_statement "(**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);" (call_expression "(**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770)" (parenthesized_expression "(**(code **)(in_t9 + 0xe2e28))" ( (pointer_expression "**(code **)(in_t9 + 0xe2e28)" * (pointer_expression "*(code **)(in_t9 + 0xe2e28)" * (cast_expression "(code **)(in_t9 + 0xe2e28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe2e28)" ( (binary_expression "in_t9 + 0xe2e28" identifier + number_literal) ))))) )) (argument_list "(*(int *)(in_t9 + 0xe2de4) + -0x4770)" ( (binary_expression "*(int *)(in_t9 + 0xe2de4) + -0x4770" (pointer_expression "*(int *)(in_t9 + 0xe2de4)" * (cast_expression "(int *)(in_t9 + 0xe2de4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2de4)" ( (binary_expression "in_t9 + 0xe2de4" identifier + number_literal) )))) + number_literal) ))) ;)) }) (else_clause "else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }" else (compound_statement "{\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }" { (expression_statement "(**(code **)(&UNK_000e39a8 + in_t9))(puVar1);" (call_expression "(**(code **)(&UNK_000e39a8 + in_t9))(puVar1)" (parenthesized_expression "(**(code **)(&UNK_000e39a8 + in_t9))" ( (pointer_expression "**(code **)(&UNK_000e39a8 + in_t9)" * (pointer_expression "*(code **)(&UNK_000e39a8 + in_t9)" * (cast_expression "(code **)(&UNK_000e39a8 + in_t9)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&UNK_000e39a8 + in_t9)" ( (binary_expression "&UNK_000e39a8 + in_t9" (pointer_expression "&UNK_000e39a8" & identifier) + identifier) ))))) )) (argument_list "(puVar1)" ( identifier ))) ;) (if_statement "if (local_2c == *piVar16) {\n        return;\n      }" if (parenthesized_expression "(local_2c == *piVar16)" ( (binary_expression "local_2c == *piVar16" identifier == (pointer_expression "*piVar16" * identifier)) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })))) (expression_statement "(**(code **)(in_t9 + 0xe3d04))();" (call_expression "(**(code **)(in_t9 + 0xe3d04))()" (parenthesized_expression "(**(code **)(in_t9 + 0xe3d04))" ( (pointer_expression "**(code **)(in_t9 + 0xe3d04)" * (pointer_expression "*(code **)(in_t9 + 0xe3d04)" * (cast_expression "(code **)(in_t9 + 0xe3d04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe3d04)" ( (binary_expression "in_t9 + 0xe3d04" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;" statement_identifier : (expression_statement "iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;" (assignment_expression "iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8" identifier = (binary_expression "*(int *)(in_t9 + 0xe2dc8) + 0x40d8" (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) )))) + number_literal)) ;)) })) (expression_statement "iVar18 = *(int *)(in_t9 + 0xe2dc8);" (assignment_expression "iVar18 = *(int *)(in_t9 + 0xe2dc8)" identifier = (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(in_t9 + 0xe2dc8);" (assignment_expression "iVar13 = *(int *)(in_t9 + 0xe2dc8)" identifier = (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(in_t9 + 0xe2de4);" (assignment_expression "iVar2 = *(int *)(in_t9 + 0xe2de4)" identifier = (pointer_expression "*(int *)(in_t9 + 0xe2de4)" * (cast_expression "(int *)(in_t9 + 0xe2de4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2de4)" ( (binary_expression "in_t9 + 0xe2de4" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(in_t9 + 0xe2dc8);" (assignment_expression "iVar3 = *(int *)(in_t9 + 0xe2dc8)" identifier = (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(in_t9 + 0xe2dc8);" (assignment_expression "iVar4 = *(int *)(in_t9 + 0xe2dc8)" identifier = (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(in_t9 + 0xe2dc8);" (assignment_expression "iVar5 = *(int *)(in_t9 + 0xe2dc8)" identifier = (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" * (cast_expression "(int *)(in_t9 + 0xe2dc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0xe2dc8)" ( (binary_expression "in_t9 + 0xe2dc8" identifier + number_literal) ))))) ;) (do_statement "do {\n    do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);\n    cVar12 = 'G';\n    puVar15 = (uint *)(iVar13 + 0x41f0);\n    local_7c[0] = 'U';\n    uVar10 = 1;\n    pcVar11 = local_7c;\n    pcVar14 = (char *)(iVar2 + 0x5dee);\n    while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }\n    if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }\n    pcVar17 = *(code **)(in_t9 + 0xe3180);\n    local_88 = local_b4;\n    local_8c = 2;\n    local_8a = 0;\n    local_84 = 0;\n    local_82 = 0;\n    local_80 = 0;\n    local_7e = 0;\n    uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);\n    local_88 = local_b0;\n    uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);\n    uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);\n    (**(code **)(in_t9 + 0xe3da4))(uVar7);\n    (**(code **)(in_t9 + 0xe3da4))(uVar8);\n    if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }\n  } while( true );" do (compound_statement "{\n    do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);\n    cVar12 = 'G';\n    puVar15 = (uint *)(iVar13 + 0x41f0);\n    local_7c[0] = 'U';\n    uVar10 = 1;\n    pcVar11 = local_7c;\n    pcVar14 = (char *)(iVar2 + 0x5dee);\n    while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }\n    if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }\n    pcVar17 = *(code **)(in_t9 + 0xe3180);\n    local_88 = local_b4;\n    local_8c = 2;\n    local_8a = 0;\n    local_84 = 0;\n    local_82 = 0;\n    local_80 = 0;\n    local_7e = 0;\n    uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);\n    local_88 = local_b0;\n    uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);\n    uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);\n    (**(code **)(in_t9 + 0xe3da4))(uVar7);\n    (**(code **)(in_t9 + 0xe3da4))(uVar8);\n    if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }\n  }" { (do_statement "do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);" do (compound_statement "{\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    }" { (expression_statement "iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);" (assignment_expression "iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90)" identifier = (call_expression "(**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90)" (parenthesized_expression "(**(code **)(in_t9 + 0xe3b7c))" ( (pointer_expression "**(code **)(in_t9 + 0xe3b7c)" * (pointer_expression "*(code **)(in_t9 + 0xe3b7c)" * (cast_expression "(code **)(in_t9 + 0xe3b7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe3b7c)" ( (binary_expression "in_t9 + 0xe3b7c" identifier + number_literal) ))))) )) (argument_list "(puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90)" ( identifier , (binary_expression "iVar18 + 0x4170" identifier + number_literal) , identifier , (pointer_expression "&local_b4" & identifier) , (pointer_expression "&local_b0" & identifier) , (pointer_expression "&local_a8" & identifier) , (pointer_expression "&local_a4" & identifier) , (pointer_expression "&local_a0" & identifier) , (pointer_expression "&local_9c" & identifier) , (pointer_expression "&local_ac" & identifier) , (pointer_expression "&local_98" & identifier) , (pointer_expression "&local_94" & identifier) , (pointer_expression "&local_90" & identifier) )))) ;) (if_statement "if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }" if (parenthesized_expression "(iVar6 != 0xb)" ( (binary_expression "iVar6 != 0xb" identifier != number_literal) )) (compound_statement "{\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }" { (if_statement "if (-1 < iVar6) goto LAB_000475c8;" if (parenthesized_expression "(-1 < iVar6)" ( (binary_expression "-1 < iVar6" number_literal < identifier) )) (goto_statement "goto LAB_000475c8;" goto statement_identifier ;)) (goto_statement "goto LAB_00047470;" goto statement_identifier ;) })) }) while (parenthesized_expression "((local_a8 & 1) == 0)" ( (binary_expression "(local_a8 & 1) == 0" (parenthesized_expression "(local_a8 & 1)" ( (binary_expression "local_a8 & 1" identifier & number_literal) )) == number_literal) )) ;) (expression_statement "cVar12 = 'G';" (assignment_expression "cVar12 = 'G'" identifier = (char_literal "'G'" ' character ')) ;) (expression_statement "puVar15 = (uint *)(iVar13 + 0x41f0);" (assignment_expression "puVar15 = (uint *)(iVar13 + 0x41f0)" identifier = (cast_expression "(uint *)(iVar13 + 0x41f0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x41f0)" ( (binary_expression "iVar13 + 0x41f0" identifier + number_literal) )))) ;) (expression_statement "local_7c[0] = 'U';" (assignment_expression "local_7c[0] = 'U'" (subscript_expression "local_7c[0]" identifier [ number_literal ]) = (char_literal "'U'" ' character ')) ;) (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" identifier = number_literal) ;) (expression_statement "pcVar11 = local_7c;" (assignment_expression "pcVar11 = local_7c" identifier = identifier) ;) (expression_statement "pcVar14 = (char *)(iVar2 + 0x5dee);" (assignment_expression "pcVar14 = (char *)(iVar2 + 0x5dee)" identifier = (cast_expression "(char *)(iVar2 + 0x5dee)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x5dee)" ( (binary_expression "iVar2 + 0x5dee" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }" { (if_statement "if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }" if (parenthesized_expression "((local_a8 & 0x3f & uVar10) != 0)" ( (binary_expression "(local_a8 & 0x3f & uVar10) != 0" (parenthesized_expression "(local_a8 & 0x3f & uVar10)" ( (binary_expression "local_a8 & 0x3f & uVar10" (binary_expression "local_a8 & 0x3f" identifier & number_literal) & identifier) )) != number_literal) )) (compound_statement "{\n        pcVar11 = pcVar11 + 1;\n      }" { (expression_statement "pcVar11 = pcVar11 + 1;" (assignment_expression "pcVar11 = pcVar11 + 1" identifier = (binary_expression "pcVar11 + 1" identifier + number_literal)) ;) })) (expression_statement "*pcVar11 = cVar12;" (assignment_expression "*pcVar11 = cVar12" (pointer_expression "*pcVar11" * identifier) = identifier) ;) (if_statement "if (cVar12 == '\0') break;" if (parenthesized_expression "(cVar12 == '\0')" ( (binary_expression "cVar12 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "uVar10 = *puVar15;" (assignment_expression "uVar10 = *puVar15" identifier = (pointer_expression "*puVar15" * identifier)) ;) (expression_statement "cVar12 = *pcVar14;" (assignment_expression "cVar12 = *pcVar14" identifier = (pointer_expression "*pcVar14" * identifier)) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) (expression_statement "pcVar14 = pcVar14 + 1;" (assignment_expression "pcVar14 = pcVar14 + 1" identifier = (binary_expression "pcVar14 + 1" identifier + number_literal)) ;) })) (if_statement "if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }" if (parenthesized_expression "((local_a8 & 0x200) != 0)" ( (binary_expression "(local_a8 & 0x200) != 0" (parenthesized_expression "(local_a8 & 0x200)" ( (binary_expression "local_a8 & 0x200" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_7c[0] = '!';\n    }" { (expression_statement "local_7c[0] = '!';" (assignment_expression "local_7c[0] = '!'" (subscript_expression "local_7c[0]" identifier [ number_literal ]) = (char_literal "'!'" ' character ')) ;) })) (expression_statement "pcVar17 = *(code **)(in_t9 + 0xe3180);" (assignment_expression "pcVar17 = *(code **)(in_t9 + 0xe3180)" identifier = (pointer_expression "*(code **)(in_t9 + 0xe3180)" * (cast_expression "(code **)(in_t9 + 0xe3180)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe3180)" ( (binary_expression "in_t9 + 0xe3180" identifier + number_literal) ))))) ;) (expression_statement "local_88 = local_b4;" (assignment_expression "local_88 = local_b4" identifier = identifier) ;) (expression_statement "local_8c = 2;" (assignment_expression "local_8c = 2" identifier = number_literal) ;) (expression_statement "local_8a = 0;" (assignment_expression "local_8a = 0" identifier = number_literal) ;) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "local_82 = 0;" (assignment_expression "local_82 = 0" identifier = number_literal) ;) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "local_7e = 0;" (assignment_expression "local_7e = 0" identifier = number_literal) ;) (expression_statement "uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);" (assignment_expression "uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac)" identifier = (call_expression "(*pcVar17)(&local_8c,param_1 | 0x8000,local_ac)" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "(&local_8c,param_1 | 0x8000,local_ac)" ( (pointer_expression "&local_8c" & identifier) , (binary_expression "param_1 | 0x8000" identifier | number_literal) , identifier )))) ;) (expression_statement "local_88 = local_b0;" (assignment_expression "local_88 = local_b0" identifier = identifier) ;) (expression_statement "uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);" (assignment_expression "uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac)" identifier = (call_expression "(*pcVar17)(&local_8c,param_1 | 0x4000,local_ac)" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "(&local_8c,param_1 | 0x4000,local_ac)" ( (pointer_expression "&local_8c" & identifier) , (binary_expression "param_1 | 0x4000" identifier | number_literal) , identifier )))) ;) (expression_statement "uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);" (assignment_expression "uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac)" identifier = (call_expression "(**(code **)(in_t9 + 0xe3d64))(local_ac)" (parenthesized_expression "(**(code **)(in_t9 + 0xe3d64))" ( (pointer_expression "**(code **)(in_t9 + 0xe3d64)" * (pointer_expression "*(code **)(in_t9 + 0xe3d64)" * (cast_expression "(code **)(in_t9 + 0xe3d64)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe3d64)" ( (binary_expression "in_t9 + 0xe3d64" identifier + number_literal) ))))) )) (argument_list "(local_ac)" ( identifier )))) ;) (expression_statement "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);" (call_expression "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c)" (parenthesized_expression "(**(code **)(&UNK_000e3a6c + in_t9))" ( (pointer_expression "**(code **)(&UNK_000e3a6c + in_t9)" * (pointer_expression "*(code **)(&UNK_000e3a6c + in_t9)" * (cast_expression "(code **)(&UNK_000e3a6c + in_t9)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&UNK_000e3a6c + in_t9)" ( (binary_expression "&UNK_000e3a6c + in_t9" (pointer_expression "&UNK_000e3a6c" & identifier) + identifier) ))))) )) (argument_list "(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c)" ( number_literal , (binary_expression "iVar3 + 0x4190" identifier + number_literal) , identifier , identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(in_t9 + 0xe3da4))(uVar7);" (call_expression "(**(code **)(in_t9 + 0xe3da4))(uVar7)" (parenthesized_expression "(**(code **)(in_t9 + 0xe3da4))" ( (pointer_expression "**(code **)(in_t9 + 0xe3da4)" * (pointer_expression "*(code **)(in_t9 + 0xe3da4)" * (cast_expression "(code **)(in_t9 + 0xe3da4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe3da4)" ( (binary_expression "in_t9 + 0xe3da4" identifier + number_literal) ))))) )) (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "(**(code **)(in_t9 + 0xe3da4))(uVar8);" (call_expression "(**(code **)(in_t9 + 0xe3da4))(uVar8)" (parenthesized_expression "(**(code **)(in_t9 + 0xe3da4))" ( (pointer_expression "**(code **)(in_t9 + 0xe3da4)" * (pointer_expression "*(code **)(in_t9 + 0xe3da4)" * (cast_expression "(code **)(in_t9 + 0xe3da4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0xe3da4)" ( (binary_expression "in_t9 + 0xe3da4" identifier + number_literal) ))))) )) (argument_list "(uVar8)" ( identifier ))) ;) (if_statement "if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }" { (expression_statement "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);" (call_expression "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c)" (parenthesized_expression "(**(code **)(&UNK_000e3a6c + in_t9))" ( (pointer_expression "**(code **)(&UNK_000e3a6c + in_t9)" * (pointer_expression "*(code **)(&UNK_000e3a6c + in_t9)" * (cast_expression "(code **)(&UNK_000e3a6c + in_t9)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&UNK_000e3a6c + in_t9)" ( (binary_expression "&UNK_000e3a6c + in_t9" (pointer_expression "&UNK_000e3a6c" & identifier) + identifier) ))))) )) (argument_list "(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c)" ( number_literal , (binary_expression "iVar4 + 0x41c0" identifier + number_literal) , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }" else (compound_statement "{\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }" { (expression_statement "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);" (call_expression "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c)" (parenthesized_expression "(**(code **)(&UNK_000e3a6c + in_t9))" ( (pointer_expression "**(code **)(&UNK_000e3a6c + in_t9)" * (pointer_expression "*(code **)(&UNK_000e3a6c + in_t9)" * (cast_expression "(code **)(&UNK_000e3a6c + in_t9)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&UNK_000e3a6c + in_t9)" ( (binary_expression "&UNK_000e3a6c + in_t9" (pointer_expression "&UNK_000e3a6c" & identifier) + identifier) ))))) )) (argument_list "(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c)" ( number_literal , (binary_expression "iVar5 + 0x41ac" identifier + number_literal) , identifier , identifier , identifier , identifier ))) ;) }))) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (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)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (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)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) ))))) )) (argument_list ( LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (break_statement break ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;)) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) ))))) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return ;) })) })))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (labeled_statement 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 (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (char_literal ' character ')) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' character ')) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT & LIT) & IDENT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' character ')) ;) })) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT | LIT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT | LIT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) ))))) )) (argument_list ( LIT , (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) ))))) )) (argument_list ( LIT , (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) ))))) )) (argument_list ( LIT , (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , IDENT ))) ;) }))) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_000473c4(uint param_1,int param_2)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  char *pcVar11;\n  char cVar12;\n  int iVar13;\n  char *pcVar14;\n  uint *puVar15;\n  int *piVar16;\n  int in_t9;\n  code *pcVar17;\n  int iVar18;\n  undefined4 local_b4;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  uint local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  undefined4 local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined2 local_8c;\n  undefined2 local_8a;\n  undefined4 local_88;\n  undefined2 local_84;\n  undefined2 local_82;\n  undefined2 local_80;\n  undefined2 local_7e;\n  char local_7c [16];\n  undefined1 auStack_6c [64];\n  int local_2c;\n  \n  piVar16 = *(int **)(in_t9 + 0xe3d88);\n  local_2c = *piVar16;\n  puVar1 = (uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100);\n  if (param_2 != 0) goto LAB_000475e4;\n  iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40ec;\n  while( true ) {\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);\n    iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);\n    if (-1 < iVar13) break;\nLAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }\n    (**(code **)(in_t9 + 0xe3d04))();\nLAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;\n  }\n  iVar18 = *(int *)(in_t9 + 0xe2dc8);\n  iVar13 = *(int *)(in_t9 + 0xe2dc8);\n  iVar2 = *(int *)(in_t9 + 0xe2de4);\n  iVar3 = *(int *)(in_t9 + 0xe2dc8);\n  iVar4 = *(int *)(in_t9 + 0xe2dc8);\n  iVar5 = *(int *)(in_t9 + 0xe2dc8);\n  do {\n    do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);\n    cVar12 = 'G';\n    puVar15 = (uint *)(iVar13 + 0x41f0);\n    local_7c[0] = 'U';\n    uVar10 = 1;\n    pcVar11 = local_7c;\n    pcVar14 = (char *)(iVar2 + 0x5dee);\n    while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }\n    if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }\n    pcVar17 = *(code **)(in_t9 + 0xe3180);\n    local_88 = local_b4;\n    local_8c = 2;\n    local_8a = 0;\n    local_84 = 0;\n    local_82 = 0;\n    local_80 = 0;\n    local_7e = 0;\n    uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);\n    local_88 = local_b0;\n    uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);\n    uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);\n    (**(code **)(in_t9 + 0xe3da4))(uVar7);\n    (**(code **)(in_t9 + 0xe3da4))(uVar8);\n    if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_000473c4(uint param_1,int param_2)" (identifier "FUN_000473c4") (parameter_list "(uint param_1,int param_2)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  char *pcVar11;\n  char cVar12;\n  int iVar13;\n  char *pcVar14;\n  uint *puVar15;\n  int *piVar16;\n  int in_t9;\n  code *pcVar17;\n  int iVar18;\n  undefined4 local_b4;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  uint local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  undefined4 local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined2 local_8c;\n  undefined2 local_8a;\n  undefined4 local_88;\n  undefined2 local_84;\n  undefined2 local_82;\n  undefined2 local_80;\n  undefined2 local_7e;\n  char local_7c [16];\n  undefined1 auStack_6c [64];\n  int local_2c;\n  \n  piVar16 = *(int **)(in_t9 + 0xe3d88);\n  local_2c = *piVar16;\n  puVar1 = (uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100);\n  if (param_2 != 0) goto LAB_000475e4;\n  iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40ec;\n  while( true ) {\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);\n    iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);\n    if (-1 < iVar13) break;\nLAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }\n    (**(code **)(in_t9 + 0xe3d04))();\nLAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;\n  }\n  iVar18 = *(int *)(in_t9 + 0xe2dc8);\n  iVar13 = *(int *)(in_t9 + 0xe2dc8);\n  iVar2 = *(int *)(in_t9 + 0xe2de4);\n  iVar3 = *(int *)(in_t9 + 0xe2dc8);\n  iVar4 = *(int *)(in_t9 + 0xe2dc8);\n  iVar5 = *(int *)(in_t9 + 0xe2dc8);\n  do {\n    do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);\n    cVar12 = 'G';\n    puVar15 = (uint *)(iVar13 + 0x41f0);\n    local_7c[0] = 'U';\n    uVar10 = 1;\n    pcVar11 = local_7c;\n    pcVar14 = (char *)(iVar2 + 0x5dee);\n    while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }\n    if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }\n    pcVar17 = *(code **)(in_t9 + 0xe3180);\n    local_88 = local_b4;\n    local_8c = 2;\n    local_8a = 0;\n    local_84 = 0;\n    local_82 = 0;\n    local_80 = 0;\n    local_7e = 0;\n    uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);\n    local_88 = local_b0;\n    uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);\n    uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);\n    (**(code **)(in_t9 + 0xe3da4))(uVar7);\n    (**(code **)(in_t9 + 0xe3da4))(uVar8);\n    if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }\n  } while( true );\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "char *pcVar11;" (primitive_type "char") (pointer_declarator "*pcVar11" (* "*") (identifier "pcVar11")) (; ";")) (declaration "char cVar12;" (primitive_type "char") (identifier "cVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "char *pcVar14;" (primitive_type "char") (pointer_declarator "*pcVar14" (* "*") (identifier "pcVar14")) (; ";")) (declaration "uint *puVar15;" (type_identifier "uint") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "int *piVar16;" (primitive_type "int") (pointer_declarator "*piVar16" (* "*") (identifier "piVar16")) (; ";")) (declaration "int in_t9;" (primitive_type "int") (identifier "in_t9") (; ";")) (declaration "code *pcVar17;" (type_identifier "code") (pointer_declarator "*pcVar17" (* "*") (identifier "pcVar17")) (; ";")) (declaration "int iVar18;" (primitive_type "int") (identifier "iVar18") (; ";")) (declaration "undefined4 local_b4;" (type_identifier "undefined4") (identifier "local_b4") (; ";")) (declaration "undefined4 local_b0;" (type_identifier "undefined4") (identifier "local_b0") (; ";")) (declaration "undefined4 local_ac;" (type_identifier "undefined4") (identifier "local_ac") (; ";")) (declaration "uint local_a8;" (type_identifier "uint") (identifier "local_a8") (; ";")) (declaration "undefined4 local_a4;" (type_identifier "undefined4") (identifier "local_a4") (; ";")) (declaration "undefined4 local_a0;" (type_identifier "undefined4") (identifier "local_a0") (; ";")) (declaration "undefined4 local_9c;" (type_identifier "undefined4") (identifier "local_9c") (; ";")) (declaration "undefined4 local_98;" (type_identifier "undefined4") (identifier "local_98") (; ";")) (declaration "undefined4 local_94;" (type_identifier "undefined4") (identifier "local_94") (; ";")) (declaration "undefined4 local_90;" (type_identifier "undefined4") (identifier "local_90") (; ";")) (declaration "undefined2 local_8c;" (type_identifier "undefined2") (identifier "local_8c") (; ";")) (declaration "undefined2 local_8a;" (type_identifier "undefined2") (identifier "local_8a") (; ";")) (declaration "undefined4 local_88;" (type_identifier "undefined4") (identifier "local_88") (; ";")) (declaration "undefined2 local_84;" (type_identifier "undefined2") (identifier "local_84") (; ";")) (declaration "undefined2 local_82;" (type_identifier "undefined2") (identifier "local_82") (; ";")) (declaration "undefined2 local_80;" (type_identifier "undefined2") (identifier "local_80") (; ";")) (declaration "undefined2 local_7e;" (type_identifier "undefined2") (identifier "local_7e") (; ";")) (declaration "char local_7c [16];" (primitive_type "char") (array_declarator "local_7c [16]" (identifier "local_7c") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 auStack_6c [64];" (type_identifier "undefined1") (array_declarator "auStack_6c [64]" (identifier "auStack_6c") ([ "[") (number_literal "64") (] "]")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "piVar16 = *(int **)(in_t9 + 0xe3d88);" (assignment_expression "piVar16 = *(int **)(in_t9 + 0xe3d88)" (identifier "piVar16") (= "=") (pointer_expression "*(int **)(in_t9 + 0xe3d88)" (* "*") (cast_expression "(int **)(in_t9 + 0xe3d88)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xe3d88)" (( "(") (binary_expression "in_t9 + 0xe3d88" (identifier "in_t9") (+ "+") (number_literal "0xe3d88")) () ")"))))) (; ";")) (expression_statement "local_2c = *piVar16;" (assignment_expression "local_2c = *piVar16" (identifier "local_2c") (= "=") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) (; ";")) (expression_statement "puVar1 = (uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100);" (assignment_expression "puVar1 = (uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100)" (parenthesized_expression "(**(code **)(in_t9 + 0xe2fd8))" (( "(") (pointer_expression "**(code **)(in_t9 + 0xe2fd8)" (* "*") (pointer_expression "*(code **)(in_t9 + 0xe2fd8)" (* "*") (cast_expression "(code **)(in_t9 + 0xe2fd8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xe2fd8)" (( "(") (binary_expression "in_t9 + 0xe2fd8" (identifier "in_t9") (+ "+") (number_literal "0xe2fd8")) () ")"))))) () ")")) (argument_list "(*(int *)(in_t9 + 0xe2dc8) + 0x4100)" (( "(") (binary_expression "*(int *)(in_t9 + 0xe2dc8) + 0x4100" (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" (* "*") (cast_expression "(int *)(in_t9 + 0xe2dc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xe2dc8)" (( "(") (binary_expression "in_t9 + 0xe2dc8" (identifier "in_t9") (+ "+") (number_literal "0xe2dc8")) () ")")))) (+ "+") (number_literal "0x4100")) () ")"))))) (; ";")) (if_statement "if (param_2 != 0) goto LAB_000475e4;" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000475e4;" (goto "goto") (statement_identifier "LAB_000475e4") (; ";"))) (expression_statement "iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40ec;" (assignment_expression "iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40ec" (identifier "iVar13") (= "=") (binary_expression "*(int *)(in_t9 + 0xe2dc8) + 0x40ec" (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" (* "*") (cast_expression "(int *)(in_t9 + 0xe2dc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xe2dc8)" (( "(") (binary_expression "in_t9 + 0xe2dc8" (identifier "in_t9") (+ "+") (number_literal "0xe2dc8")) () ")")))) (+ "+") (number_literal "0x40ec"))) (; ";")) (while_statement "while( true ) {\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);\n    iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);\n    if (-1 < iVar13) break;\nLAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }\n    (**(code **)(in_t9 + 0xe3d04))();\nLAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);\n    iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);\n    if (-1 < iVar13) break;\nLAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }\n    (**(code **)(in_t9 + 0xe3d04))();\nLAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;\n  }" ({ "{") (expression_statement "(**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);" (call_expression "(**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13)" (parenthesized_expression "(**(code **)(&UNK_000e3a6c + in_t9))" (( "(") (pointer_expression "**(code **)(&UNK_000e3a6c + in_t9)" (* "*") (pointer_expression "*(code **)(&UNK_000e3a6c + in_t9)" (* "*") (cast_expression "(code **)(&UNK_000e3a6c + in_t9)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(&UNK_000e3a6c + in_t9)" (( "(") (binary_expression "&UNK_000e3a6c + in_t9" (pointer_expression "&UNK_000e3a6c" (& "&") (identifier "UNK_000e3a6c")) (+ "+") (identifier "in_t9")) () ")"))))) () ")")) (argument_list "(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13)" (( "(") (number_literal "1") (, ",") (binary_expression "*(int *)(in_t9 + 0xe2dc8) + 0x4110" (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" (* "*") (cast_expression "(int *)(in_t9 + 0xe2dc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xe2dc8)" (( "(") (binary_expression "in_t9 + 0xe2dc8" (identifier "in_t9") (+ "+") (number_literal "0xe2dc8")) () ")")))) (+ "+") (number_literal "0x4110")) (, ",") (identifier "iVar13") () ")"))) (; ";")) (expression_statement "iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);" (assignment_expression "iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168)" (identifier "iVar13") (= "=") (call_expression "(**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168)" (parenthesized_expression "(**(code **)(in_t9 + 0xe3b7c))" (( "(") (pointer_expression "**(code **)(in_t9 + 0xe3b7c)" (* "*") (pointer_expression "*(code **)(in_t9 + 0xe3b7c)" (* "*") (cast_expression "(code **)(in_t9 + 0xe3b7c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xe3b7c)" (( "(") (binary_expression "in_t9 + 0xe3b7c" (identifier "in_t9") (+ "+") (number_literal "0xe3b7c")) () ")"))))) () ")")) (argument_list "(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168)" (( "(") (identifier "puVar1") (, ",") (binary_expression "*(int *)(in_t9 + 0xe2dc8) + 0x4168" (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" (* "*") (cast_expression "(int *)(in_t9 + 0xe2dc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xe2dc8)" (( "(") (binary_expression "in_t9 + 0xe2dc8" (identifier "in_t9") (+ "+") (number_literal "0xe2dc8")) () ")")))) (+ "+") (number_literal "0x4168")) () ")")))) (; ";")) (if_statement "if (-1 < iVar13) break;" (if "if") (parenthesized_expression "(-1 < iVar13)" (( "(") (binary_expression "-1 < iVar13" (number_literal "-1") (< "<") (identifier "iVar13")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00047470:\n    if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }" (statement_identifier "LAB_00047470") (: ":") (if_statement "if ((*puVar1 & 0x10) == 0) {\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }\n    else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }" (if "if") (parenthesized_expression "((*puVar1 & 0x10) == 0)" (( "(") (binary_expression "(*puVar1 & 0x10) == 0" (parenthesized_expression "(*puVar1 & 0x10)" (( "(") (binary_expression "*puVar1 & 0x10" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);\n    }" ({ "{") (labeled_statement "LAB_000475c8:\n      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);" (statement_identifier "LAB_000475c8") (: ":") (expression_statement "(**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);" (call_expression "(**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770)" (parenthesized_expression "(**(code **)(in_t9 + 0xe2e28))" (( "(") (pointer_expression "**(code **)(in_t9 + 0xe2e28)" (* "*") (pointer_expression "*(code **)(in_t9 + 0xe2e28)" (* "*") (cast_expression "(code **)(in_t9 + 0xe2e28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xe2e28)" (( "(") (binary_expression "in_t9 + 0xe2e28" (identifier "in_t9") (+ "+") (number_literal "0xe2e28")) () ")"))))) () ")")) (argument_list "(*(int *)(in_t9 + 0xe2de4) + -0x4770)" (( "(") (binary_expression "*(int *)(in_t9 + 0xe2de4) + -0x4770" (pointer_expression "*(int *)(in_t9 + 0xe2de4)" (* "*") (cast_expression "(int *)(in_t9 + 0xe2de4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xe2de4)" (( "(") (binary_expression "in_t9 + 0xe2de4" (identifier "in_t9") (+ "+") (number_literal "0xe2de4")) () ")")))) (+ "+") (number_literal "-0x4770")) () ")"))) (; ";"))) (} "}")) (else_clause "else {\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }" (else "else") (compound_statement "{\n      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);\n      if (local_2c == *piVar16) {\n        return;\n      }\n    }" ({ "{") (expression_statement "(**(code **)(&UNK_000e39a8 + in_t9))(puVar1);" (call_expression "(**(code **)(&UNK_000e39a8 + in_t9))(puVar1)" (parenthesized_expression "(**(code **)(&UNK_000e39a8 + in_t9))" (( "(") (pointer_expression "**(code **)(&UNK_000e39a8 + in_t9)" (* "*") (pointer_expression "*(code **)(&UNK_000e39a8 + in_t9)" (* "*") (cast_expression "(code **)(&UNK_000e39a8 + in_t9)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(&UNK_000e39a8 + in_t9)" (( "(") (binary_expression "&UNK_000e39a8 + in_t9" (pointer_expression "&UNK_000e39a8" (& "&") (identifier "UNK_000e39a8")) (+ "+") (identifier "in_t9")) () ")"))))) () ")")) (argument_list "(puVar1)" (( "(") (identifier "puVar1") () ")"))) (; ";")) (if_statement "if (local_2c == *piVar16) {\n        return;\n      }" (if "if") (parenthesized_expression "(local_2c == *piVar16)" (( "(") (binary_expression "local_2c == *piVar16" (identifier "local_2c") (== "==") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))))) (expression_statement "(**(code **)(in_t9 + 0xe3d04))();" (call_expression "(**(code **)(in_t9 + 0xe3d04))()" (parenthesized_expression "(**(code **)(in_t9 + 0xe3d04))" (( "(") (pointer_expression "**(code **)(in_t9 + 0xe3d04)" (* "*") (pointer_expression "*(code **)(in_t9 + 0xe3d04)" (* "*") (cast_expression "(code **)(in_t9 + 0xe3d04)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xe3d04)" (( "(") (binary_expression "in_t9 + 0xe3d04" (identifier "in_t9") (+ "+") (number_literal "0xe3d04")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_000475e4:\n    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;" (statement_identifier "LAB_000475e4") (: ":") (expression_statement "iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;" (assignment_expression "iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8" (identifier "iVar13") (= "=") (binary_expression "*(int *)(in_t9 + 0xe2dc8) + 0x40d8" (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" (* "*") (cast_expression "(int *)(in_t9 + 0xe2dc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xe2dc8)" (( "(") (binary_expression "in_t9 + 0xe2dc8" (identifier "in_t9") (+ "+") (number_literal "0xe2dc8")) () ")")))) (+ "+") (number_literal "0x40d8"))) (; ";"))) (} "}"))) (expression_statement "iVar18 = *(int *)(in_t9 + 0xe2dc8);" (assignment_expression "iVar18 = *(int *)(in_t9 + 0xe2dc8)" (identifier "iVar18") (= "=") (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" (* "*") (cast_expression "(int *)(in_t9 + 0xe2dc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xe2dc8)" (( "(") (binary_expression "in_t9 + 0xe2dc8" (identifier "in_t9") (+ "+") (number_literal "0xe2dc8")) () ")"))))) (; ";")) (expression_statement "iVar13 = *(int *)(in_t9 + 0xe2dc8);" (assignment_expression "iVar13 = *(int *)(in_t9 + 0xe2dc8)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" (* "*") (cast_expression "(int *)(in_t9 + 0xe2dc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xe2dc8)" (( "(") (binary_expression "in_t9 + 0xe2dc8" (identifier "in_t9") (+ "+") (number_literal "0xe2dc8")) () ")"))))) (; ";")) (expression_statement "iVar2 = *(int *)(in_t9 + 0xe2de4);" (assignment_expression "iVar2 = *(int *)(in_t9 + 0xe2de4)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(in_t9 + 0xe2de4)" (* "*") (cast_expression "(int *)(in_t9 + 0xe2de4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xe2de4)" (( "(") (binary_expression "in_t9 + 0xe2de4" (identifier "in_t9") (+ "+") (number_literal "0xe2de4")) () ")"))))) (; ";")) (expression_statement "iVar3 = *(int *)(in_t9 + 0xe2dc8);" (assignment_expression "iVar3 = *(int *)(in_t9 + 0xe2dc8)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" (* "*") (cast_expression "(int *)(in_t9 + 0xe2dc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xe2dc8)" (( "(") (binary_expression "in_t9 + 0xe2dc8" (identifier "in_t9") (+ "+") (number_literal "0xe2dc8")) () ")"))))) (; ";")) (expression_statement "iVar4 = *(int *)(in_t9 + 0xe2dc8);" (assignment_expression "iVar4 = *(int *)(in_t9 + 0xe2dc8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" (* "*") (cast_expression "(int *)(in_t9 + 0xe2dc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xe2dc8)" (( "(") (binary_expression "in_t9 + 0xe2dc8" (identifier "in_t9") (+ "+") (number_literal "0xe2dc8")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(in_t9 + 0xe2dc8);" (assignment_expression "iVar5 = *(int *)(in_t9 + 0xe2dc8)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(in_t9 + 0xe2dc8)" (* "*") (cast_expression "(int *)(in_t9 + 0xe2dc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0xe2dc8)" (( "(") (binary_expression "in_t9 + 0xe2dc8" (identifier "in_t9") (+ "+") (number_literal "0xe2dc8")) () ")"))))) (; ";")) (do_statement "do {\n    do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);\n    cVar12 = 'G';\n    puVar15 = (uint *)(iVar13 + 0x41f0);\n    local_7c[0] = 'U';\n    uVar10 = 1;\n    pcVar11 = local_7c;\n    pcVar14 = (char *)(iVar2 + 0x5dee);\n    while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }\n    if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }\n    pcVar17 = *(code **)(in_t9 + 0xe3180);\n    local_88 = local_b4;\n    local_8c = 2;\n    local_8a = 0;\n    local_84 = 0;\n    local_82 = 0;\n    local_80 = 0;\n    local_7e = 0;\n    uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);\n    local_88 = local_b0;\n    uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);\n    uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);\n    (**(code **)(in_t9 + 0xe3da4))(uVar7);\n    (**(code **)(in_t9 + 0xe3da4))(uVar8);\n    if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }\n  } while( true );" (do "do") (compound_statement "{\n    do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);\n    cVar12 = 'G';\n    puVar15 = (uint *)(iVar13 + 0x41f0);\n    local_7c[0] = 'U';\n    uVar10 = 1;\n    pcVar11 = local_7c;\n    pcVar14 = (char *)(iVar2 + 0x5dee);\n    while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }\n    if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }\n    pcVar17 = *(code **)(in_t9 + 0xe3180);\n    local_88 = local_b4;\n    local_8c = 2;\n    local_8a = 0;\n    local_84 = 0;\n    local_82 = 0;\n    local_80 = 0;\n    local_7e = 0;\n    uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);\n    local_88 = local_b0;\n    uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);\n    uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);\n    (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);\n    (**(code **)(in_t9 + 0xe3da4))(uVar7);\n    (**(code **)(in_t9 + 0xe3da4))(uVar8);\n    if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }\n  }" ({ "{") (do_statement "do {\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    } while ((local_a8 & 1) == 0);" (do "do") (compound_statement "{\n      iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);\n      if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }\n    }" ({ "{") (expression_statement "iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);" (assignment_expression "iVar6 = (**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90)" (identifier "iVar6") (= "=") (call_expression "(**(code **)(in_t9 + 0xe3b7c))\n                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90)" (parenthesized_expression "(**(code **)(in_t9 + 0xe3b7c))" (( "(") (pointer_expression "**(code **)(in_t9 + 0xe3b7c)" (* "*") (pointer_expression "*(code **)(in_t9 + 0xe3b7c)" (* "*") (cast_expression "(code **)(in_t9 + 0xe3b7c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xe3b7c)" (( "(") (binary_expression "in_t9 + 0xe3b7c" (identifier "in_t9") (+ "+") (number_literal "0xe3b7c")) () ")"))))) () ")")) (argument_list "(puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,\n                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90)" (( "(") (identifier "puVar1") (, ",") (binary_expression "iVar18 + 0x4170" (identifier "iVar18") (+ "+") (number_literal "0x4170")) (, ",") (identifier "auStack_6c") (, ",") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (pointer_expression "&local_b0" (& "&") (identifier "local_b0")) (, ",") (pointer_expression "&local_a8" (& "&") (identifier "local_a8")) (, ",") (pointer_expression "&local_a4" (& "&") (identifier "local_a4")) (, ",") (pointer_expression "&local_a0" (& "&") (identifier "local_a0")) (, ",") (pointer_expression "&local_9c" (& "&") (identifier "local_9c")) (, ",") (pointer_expression "&local_ac" (& "&") (identifier "local_ac")) (, ",") (pointer_expression "&local_98" (& "&") (identifier "local_98")) (, ",") (pointer_expression "&local_94" (& "&") (identifier "local_94")) (, ",") (pointer_expression "&local_90" (& "&") (identifier "local_90")) () ")")))) (; ";")) (if_statement "if (iVar6 != 0xb) {\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }" (if "if") (parenthesized_expression "(iVar6 != 0xb)" (( "(") (binary_expression "iVar6 != 0xb" (identifier "iVar6") (!= "!=") (number_literal "0xb")) () ")")) (compound_statement "{\n        if (-1 < iVar6) goto LAB_000475c8;\n        goto LAB_00047470;\n      }" ({ "{") (if_statement "if (-1 < iVar6) goto LAB_000475c8;" (if "if") (parenthesized_expression "(-1 < iVar6)" (( "(") (binary_expression "-1 < iVar6" (number_literal "-1") (< "<") (identifier "iVar6")) () ")")) (goto_statement "goto LAB_000475c8;" (goto "goto") (statement_identifier "LAB_000475c8") (; ";"))) (goto_statement "goto LAB_00047470;" (goto "goto") (statement_identifier "LAB_00047470") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((local_a8 & 1) == 0)" (( "(") (binary_expression "(local_a8 & 1) == 0" (parenthesized_expression "(local_a8 & 1)" (( "(") (binary_expression "local_a8 & 1" (identifier "local_a8") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "cVar12 = 'G';" (assignment_expression "cVar12 = 'G'" (identifier "cVar12") (= "=") (char_literal "'G'" (' "'") (character "G") (' "'"))) (; ";")) (expression_statement "puVar15 = (uint *)(iVar13 + 0x41f0);" (assignment_expression "puVar15 = (uint *)(iVar13 + 0x41f0)" (identifier "puVar15") (= "=") (cast_expression "(uint *)(iVar13 + 0x41f0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x41f0)" (( "(") (binary_expression "iVar13 + 0x41f0" (identifier "iVar13") (+ "+") (number_literal "0x41f0")) () ")")))) (; ";")) (expression_statement "local_7c[0] = 'U';" (assignment_expression "local_7c[0] = 'U'" (subscript_expression "local_7c[0]" (identifier "local_7c") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'U'" (' "'") (character "U") (' "'"))) (; ";")) (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" (identifier "uVar10") (= "=") (number_literal "1")) (; ";")) (expression_statement "pcVar11 = local_7c;" (assignment_expression "pcVar11 = local_7c" (identifier "pcVar11") (= "=") (identifier "local_7c")) (; ";")) (expression_statement "pcVar14 = (char *)(iVar2 + 0x5dee);" (assignment_expression "pcVar14 = (char *)(iVar2 + 0x5dee)" (identifier "pcVar14") (= "=") (cast_expression "(char *)(iVar2 + 0x5dee)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x5dee)" (( "(") (binary_expression "iVar2 + 0x5dee" (identifier "iVar2") (+ "+") (number_literal "0x5dee")) () ")")))) (; ";")) (while_statement "while( true ) {\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }\n      *pcVar11 = cVar12;\n      if (cVar12 == '\0') break;\n      uVar10 = *puVar15;\n      cVar12 = *pcVar14;\n      puVar15 = puVar15 + 1;\n      pcVar14 = pcVar14 + 1;\n    }" ({ "{") (if_statement "if ((local_a8 & 0x3f & uVar10) != 0) {\n        pcVar11 = pcVar11 + 1;\n      }" (if "if") (parenthesized_expression "((local_a8 & 0x3f & uVar10) != 0)" (( "(") (binary_expression "(local_a8 & 0x3f & uVar10) != 0" (parenthesized_expression "(local_a8 & 0x3f & uVar10)" (( "(") (binary_expression "local_a8 & 0x3f & uVar10" (binary_expression "local_a8 & 0x3f" (identifier "local_a8") (& "&") (number_literal "0x3f")) (& "&") (identifier "uVar10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        pcVar11 = pcVar11 + 1;\n      }" ({ "{") (expression_statement "pcVar11 = pcVar11 + 1;" (assignment_expression "pcVar11 = pcVar11 + 1" (identifier "pcVar11") (= "=") (binary_expression "pcVar11 + 1" (identifier "pcVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*pcVar11 = cVar12;" (assignment_expression "*pcVar11 = cVar12" (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) (= "=") (identifier "cVar12")) (; ";")) (if_statement "if (cVar12 == '\0') break;" (if "if") (parenthesized_expression "(cVar12 == '\0')" (( "(") (binary_expression "cVar12 == '\0'" (identifier "cVar12") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar10 = *puVar15;" (assignment_expression "uVar10 = *puVar15" (identifier "uVar10") (= "=") (pointer_expression "*puVar15" (* "*") (identifier "puVar15"))) (; ";")) (expression_statement "cVar12 = *pcVar14;" (assignment_expression "cVar12 = *pcVar14" (identifier "cVar12") (= "=") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14"))) (; ";")) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" (identifier "puVar15") (= "=") (binary_expression "puVar15 + 1" (identifier "puVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar14 = pcVar14 + 1;" (assignment_expression "pcVar14 = pcVar14 + 1" (identifier "pcVar14") (= "=") (binary_expression "pcVar14 + 1" (identifier "pcVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((local_a8 & 0x200) != 0) {\n      local_7c[0] = '!';\n    }" (if "if") (parenthesized_expression "((local_a8 & 0x200) != 0)" (( "(") (binary_expression "(local_a8 & 0x200) != 0" (parenthesized_expression "(local_a8 & 0x200)" (( "(") (binary_expression "local_a8 & 0x200" (identifier "local_a8") (& "&") (number_literal "0x200")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_7c[0] = '!';\n    }" ({ "{") (expression_statement "local_7c[0] = '!';" (assignment_expression "local_7c[0] = '!'" (subscript_expression "local_7c[0]" (identifier "local_7c") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'!'" (' "'") (character "!") (' "'"))) (; ";")) (} "}"))) (expression_statement "pcVar17 = *(code **)(in_t9 + 0xe3180);" (assignment_expression "pcVar17 = *(code **)(in_t9 + 0xe3180)" (identifier "pcVar17") (= "=") (pointer_expression "*(code **)(in_t9 + 0xe3180)" (* "*") (cast_expression "(code **)(in_t9 + 0xe3180)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xe3180)" (( "(") (binary_expression "in_t9 + 0xe3180" (identifier "in_t9") (+ "+") (number_literal "0xe3180")) () ")"))))) (; ";")) (expression_statement "local_88 = local_b4;" (assignment_expression "local_88 = local_b4" (identifier "local_88") (= "=") (identifier "local_b4")) (; ";")) (expression_statement "local_8c = 2;" (assignment_expression "local_8c = 2" (identifier "local_8c") (= "=") (number_literal "2")) (; ";")) (expression_statement "local_8a = 0;" (assignment_expression "local_8a = 0" (identifier "local_8a") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" (identifier "local_84") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_82 = 0;" (assignment_expression "local_82 = 0" (identifier "local_82") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" (identifier "local_80") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_7e = 0;" (assignment_expression "local_7e = 0" (identifier "local_7e") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);" (assignment_expression "uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac)" (identifier "uVar7") (= "=") (call_expression "(*pcVar17)(&local_8c,param_1 | 0x8000,local_ac)" (parenthesized_expression "(*pcVar17)" (( "(") (pointer_expression "*pcVar17" (* "*") (identifier "pcVar17")) () ")")) (argument_list "(&local_8c,param_1 | 0x8000,local_ac)" (( "(") (pointer_expression "&local_8c" (& "&") (identifier "local_8c")) (, ",") (binary_expression "param_1 | 0x8000" (identifier "param_1") (| "|") (number_literal "0x8000")) (, ",") (identifier "local_ac") () ")")))) (; ";")) (expression_statement "local_88 = local_b0;" (assignment_expression "local_88 = local_b0" (identifier "local_88") (= "=") (identifier "local_b0")) (; ";")) (expression_statement "uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);" (assignment_expression "uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac)" (identifier "uVar8") (= "=") (call_expression "(*pcVar17)(&local_8c,param_1 | 0x4000,local_ac)" (parenthesized_expression "(*pcVar17)" (( "(") (pointer_expression "*pcVar17" (* "*") (identifier "pcVar17")) () ")")) (argument_list "(&local_8c,param_1 | 0x4000,local_ac)" (( "(") (pointer_expression "&local_8c" (& "&") (identifier "local_8c")) (, ",") (binary_expression "param_1 | 0x4000" (identifier "param_1") (| "|") (number_literal "0x4000")) (, ",") (identifier "local_ac") () ")")))) (; ";")) (expression_statement "uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);" (assignment_expression "uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac)" (identifier "uVar9") (= "=") (call_expression "(**(code **)(in_t9 + 0xe3d64))(local_ac)" (parenthesized_expression "(**(code **)(in_t9 + 0xe3d64))" (( "(") (pointer_expression "**(code **)(in_t9 + 0xe3d64)" (* "*") (pointer_expression "*(code **)(in_t9 + 0xe3d64)" (* "*") (cast_expression "(code **)(in_t9 + 0xe3d64)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xe3d64)" (( "(") (binary_expression "in_t9 + 0xe3d64" (identifier "in_t9") (+ "+") (number_literal "0xe3d64")) () ")"))))) () ")")) (argument_list "(local_ac)" (( "(") (identifier "local_ac") () ")")))) (; ";")) (expression_statement "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);" (call_expression "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c)" (parenthesized_expression "(**(code **)(&UNK_000e3a6c + in_t9))" (( "(") (pointer_expression "**(code **)(&UNK_000e3a6c + in_t9)" (* "*") (pointer_expression "*(code **)(&UNK_000e3a6c + in_t9)" (* "*") (cast_expression "(code **)(&UNK_000e3a6c + in_t9)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(&UNK_000e3a6c + in_t9)" (( "(") (binary_expression "&UNK_000e3a6c + in_t9" (pointer_expression "&UNK_000e3a6c" (& "&") (identifier "UNK_000e3a6c")) (+ "+") (identifier "in_t9")) () ")"))))) () ")")) (argument_list "(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c)" (( "(") (number_literal "1") (, ",") (binary_expression "iVar3 + 0x4190" (identifier "iVar3") (+ "+") (number_literal "0x4190")) (, ",") (identifier "uVar7") (, ",") (identifier "uVar8") (, ",") (identifier "uVar9") (, ",") (identifier "local_7c") () ")"))) (; ";")) (expression_statement "(**(code **)(in_t9 + 0xe3da4))(uVar7);" (call_expression "(**(code **)(in_t9 + 0xe3da4))(uVar7)" (parenthesized_expression "(**(code **)(in_t9 + 0xe3da4))" (( "(") (pointer_expression "**(code **)(in_t9 + 0xe3da4)" (* "*") (pointer_expression "*(code **)(in_t9 + 0xe3da4)" (* "*") (cast_expression "(code **)(in_t9 + 0xe3da4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xe3da4)" (( "(") (binary_expression "in_t9 + 0xe3da4" (identifier "in_t9") (+ "+") (number_literal "0xe3da4")) () ")"))))) () ")")) (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "(**(code **)(in_t9 + 0xe3da4))(uVar8);" (call_expression "(**(code **)(in_t9 + 0xe3da4))(uVar8)" (parenthesized_expression "(**(code **)(in_t9 + 0xe3da4))" (( "(") (pointer_expression "**(code **)(in_t9 + 0xe3da4)" (* "*") (pointer_expression "*(code **)(in_t9 + 0xe3da4)" (* "*") (cast_expression "(code **)(in_t9 + 0xe3da4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0xe3da4)" (( "(") (binary_expression "in_t9 + 0xe3da4" (identifier "in_t9") (+ "+") (number_literal "0xe3da4")) () ")"))))) () ")")) (argument_list "(uVar8)" (( "(") (identifier "uVar8") () ")"))) (; ";")) (if_statement "if (param_2 == 0) {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }\n    else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);\n    }" ({ "{") (expression_statement "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);" (call_expression "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c)" (parenthesized_expression "(**(code **)(&UNK_000e3a6c + in_t9))" (( "(") (pointer_expression "**(code **)(&UNK_000e3a6c + in_t9)" (* "*") (pointer_expression "*(code **)(&UNK_000e3a6c + in_t9)" (* "*") (cast_expression "(code **)(&UNK_000e3a6c + in_t9)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(&UNK_000e3a6c + in_t9)" (( "(") (binary_expression "&UNK_000e3a6c + in_t9" (pointer_expression "&UNK_000e3a6c" (& "&") (identifier "UNK_000e3a6c")) (+ "+") (identifier "in_t9")) () ")"))))) () ")")) (argument_list "(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c)" (( "(") (number_literal "1") (, ",") (binary_expression "iVar4 + 0x41c0" (identifier "iVar4") (+ "+") (number_literal "0x41c0")) (, ",") (identifier "local_9c") (, ",") (identifier "local_a4") (, ",") (identifier "local_a0") (, ",") (identifier "auStack_6c") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }" (else "else") (compound_statement "{\n      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);\n    }" ({ "{") (expression_statement "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);" (call_expression "(**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c)" (parenthesized_expression "(**(code **)(&UNK_000e3a6c + in_t9))" (( "(") (pointer_expression "**(code **)(&UNK_000e3a6c + in_t9)" (* "*") (pointer_expression "*(code **)(&UNK_000e3a6c + in_t9)" (* "*") (cast_expression "(code **)(&UNK_000e3a6c + in_t9)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(&UNK_000e3a6c + in_t9)" (( "(") (binary_expression "&UNK_000e3a6c + in_t9" (pointer_expression "&UNK_000e3a6c" (& "&") (identifier "UNK_000e3a6c")) (+ "+") (identifier "in_t9")) () ")"))))) () ")")) (argument_list "(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c)" (( "(") (number_literal "1") (, ",") (binary_expression "iVar5 + 0x41ac" (identifier "iVar5") (+ "+") (number_literal "0x41ac")) (, ",") (identifier "local_98") (, ",") (identifier "local_94") (, ",") (identifier "local_90") (, ",") (identifier "auStack_6c") () ")"))) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) 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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (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)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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)))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))))) arguments: (argument_list (number_literal) (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)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (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)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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))))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))) (labeled_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 (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (do_statement body: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (identifier) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (character)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (character)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (character)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))))) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))))) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))))) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier) (identifier)))))))) condition: (parenthesized_expression (true))))))

void MASKED(uint param_1,int param_2)

{
  uint *puVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  uint uVar10;
  char *pcVar11;
  char cVar12;
  int iVar13;
  char *pcVar14;
  uint *puVar15;
  int *piVar16;
  int in_t9;
  code *pcVar17;
  int iVar18;
  undefined4 local_b4;
  undefined4 local_b0;
  undefined4 local_ac;
  uint local_a8;
  undefined4 local_a4;
  undefined4 local_a0;
  undefined4 local_9c;
  undefined4 local_98;
  undefined4 local_94;
  undefined4 local_90;
  undefined2 local_8c;
  undefined2 local_8a;
  undefined4 local_88;
  undefined2 local_84;
  undefined2 local_82;
  undefined2 local_80;
  undefined2 local_7e;
  char local_7c [16];
  undefined1 auStack_6c [64];
  int local_2c;
  
  piVar16 = *(int **)(in_t9 + 0xe3d88);
  local_2c = *piVar16;
  puVar1 = (uint *)(**(code **)(in_t9 + 0xe2fd8))(*(int *)(in_t9 + 0xe2dc8) + 0x4100);
  if (param_2 != 0) goto LAB_000475e4;
  iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40ec;
  while( true ) {
    (**(code **)(&UNK_000e3a6c + in_t9))(1,*(int *)(in_t9 + 0xe2dc8) + 0x4110,iVar13);
    iVar13 = (**(code **)(in_t9 + 0xe3b7c))(puVar1,*(int *)(in_t9 + 0xe2dc8) + 0x4168);
    if (-1 < iVar13) break;
LAB_00047470:
    if ((*puVar1 & 0x10) == 0) {
LAB_000475c8:
      (**(code **)(in_t9 + 0xe2e28))(*(int *)(in_t9 + 0xe2de4) + -0x4770);
    }
    else {
      (**(code **)(&UNK_000e39a8 + in_t9))(puVar1);
      if (local_2c == *piVar16) {
        return;
      }
    }
    (**(code **)(in_t9 + 0xe3d04))();
LAB_000475e4:
    iVar13 = *(int *)(in_t9 + 0xe2dc8) + 0x40d8;
  }
  iVar18 = *(int *)(in_t9 + 0xe2dc8);
  iVar13 = *(int *)(in_t9 + 0xe2dc8);
  iVar2 = *(int *)(in_t9 + 0xe2de4);
  iVar3 = *(int *)(in_t9 + 0xe2dc8);
  iVar4 = *(int *)(in_t9 + 0xe2dc8);
  iVar5 = *(int *)(in_t9 + 0xe2dc8);
  do {
    do {
      iVar6 = (**(code **)(in_t9 + 0xe3b7c))
                        (puVar1,iVar18 + 0x4170,auStack_6c,&local_b4,&local_b0,&local_a8,&local_a4,
                         &local_a0,&local_9c,&local_ac,&local_98,&local_94,&local_90);
      if (iVar6 != 0xb) {
        if (-1 < iVar6) goto LAB_000475c8;
        goto LAB_00047470;
      }
    } while ((local_a8 & 1) == 0);
    cVar12 = 'G';
    puVar15 = (uint *)(iVar13 + 0x41f0);
    local_7c[0] = 'U';
    uVar10 = 1;
    pcVar11 = local_7c;
    pcVar14 = (char *)(iVar2 + 0x5dee);
    while( true ) {
      if ((local_a8 & 0x3f & uVar10) != 0) {
        pcVar11 = pcVar11 + 1;
      }
      *pcVar11 = cVar12;
      if (cVar12 == '\0') break;
      uVar10 = *puVar15;
      cVar12 = *pcVar14;
      puVar15 = puVar15 + 1;
      pcVar14 = pcVar14 + 1;
    }
    if ((local_a8 & 0x200) != 0) {
      local_7c[0] = '!';
    }
    pcVar17 = *(code **)(in_t9 + 0xe3180);
    local_88 = local_b4;
    local_8c = 2;
    local_8a = 0;
    local_84 = 0;
    local_82 = 0;
    local_80 = 0;
    local_7e = 0;
    uVar7 = (*pcVar17)(&local_8c,param_1 | 0x8000,local_ac);
    local_88 = local_b0;
    uVar8 = (*pcVar17)(&local_8c,param_1 | 0x4000,local_ac);
    uVar9 = (**(code **)(in_t9 + 0xe3d64))(local_ac);
    (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar3 + 0x4190,uVar7,uVar8,uVar9,local_7c);
    (**(code **)(in_t9 + 0xe3da4))(uVar7);
    (**(code **)(in_t9 + 0xe3da4))(uVar8);
    if (param_2 == 0) {
      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar4 + 0x41c0,local_9c,local_a4,local_a0,auStack_6c);
    }
    else {
      (**(code **)(&UNK_000e3a6c + in_t9))(1,iVar5 + 0x41ac,local_98,local_94,local_90,auStack_6c);
    }
  } while( true );
}

