
mode_change * mode_compile(char *mode_string)

{
  undefined *puVar1;
  uint uVar2;
  uint uVar3;
  mode_change *pmVar4;
  char *pcVar5;
  int iVar6;
  size_t n;
  uint uVar7;
  int iVar8;
  mode_change *pmVar9;
  mode_t mVar10;
  int iVar11;
  int iVar12;
  mode_t mVar13;
  
  uVar2 = (uint)*mode_string;
  if ((uVar2 - 0x30 & 0xff) < 8) {
    uVar7 = 0;
    pcVar5 = mode_string;
    do {
      uVar7 = (uVar7 * 8 + uVar2) - 0x30;
      pcVar5 = pcVar5 + 1;
      if (0xfff < uVar7) {
        return (mode_change *)0x0;
      }
      uVar2 = (uint)*pcVar5;
    } while ((uVar2 - 0x30 & 0xff) < 8);
    if (uVar2 != 0) {
      return (mode_change *)0x0;
    }
    mVar10 = 0xfff;
    if ((int)pcVar5 - (int)mode_string < 5) {
      mVar10 = uVar7 & 0xc00 | 0x3ff;
    }
    pmVar4 = (mode_change *)xmalloc(0x20);
    pmVar4[1].flag = '\0';
    pmVar4->op = '=';
    pmVar4->flag = '\x01';
    pmVar4->value = uVar7;
    pmVar4->mentioned = mVar10;
    pmVar4->affected = 0xfff;
    return pmVar4;
  }
  n = 0x10;
  if (uVar2 != 0) {
    uVar7 = 1;
    pcVar5 = mode_string;
    do {
      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {
        pcVar5 = pcVar5 + 1;
        uVar2 = (uint)*pcVar5;
        uVar7 = uVar7 + 1;
        if (uVar2 == 0) goto LAB_00015fc8;
      }
      pcVar5 = pcVar5 + 1;
      uVar2 = (uint)*pcVar5;
      uVar7 = uVar7 + (uVar3 == 0x2d);
    } while (uVar2 != 0);
LAB_00015fc8:
    n = uVar7 << 4;
    if (((int)n < 0) || (uVar7 >> 0x1c != 0)) {
                    /* WARNING: Subroutine does not return */
      xalloc_die();
    }
  }
  pmVar4 = (mode_change *)xmalloc(n);
  puVar1 = PTR_s_operand_00032108;
  iVar11 = 0;
LAB_0001600c:
  mVar10 = 0;
  while( true ) {
    while( true ) {
      iVar8 = (int)*mode_string;
      if (iVar8 != 0x61) break;
      mVar10 = 0xfff;
      mode_string = mode_string + 1;
    }
    if (iVar8 < 0x62) break;
    if (iVar8 == 0x6f) {
      mVar10 = mVar10 | 0x207;
      mode_string = mode_string + 1;
    }
    else if (iVar8 == 0x75) {
      mVar10 = mVar10 | 0x9c0;
      mode_string = mode_string + 1;
    }
    else {
      mVar10 = mVar10 | 0x438;
      if (iVar8 != 0x67) goto LAB_00016044;
      mode_string = mode_string + 1;
    }
  }
  if (((iVar8 != 0x2d) && (iVar8 != 0x3d)) && (iVar8 != 0x2b)) goto LAB_00016044;
  iVar6 = (int)mode_string[1];
  iVar12 = iVar11 + 1;
  pmVar9 = pmVar4 + iVar11;
  if (iVar6 == 0x67) goto LAB_00016194;
  while( true ) {
    pcVar5 = mode_string + 1;
    if (iVar6 < 0x68) break;
    if (iVar6 == 0x6f) {
      pcVar5 = mode_string + 2;
      mVar13 = 7;
    }
    else {
      if (iVar6 != 0x75) goto LAB_00016224;
      pcVar5 = mode_string + 2;
      mVar13 = 0x1c0;
    }
    while( true ) {
      pmVar9->op = (char)iVar8;
      pmVar9->flag = '\x03';
      pmVar9->affected = mVar10;
      pmVar9->value = mVar13;
      iVar6 = (int)mode_string[2];
LAB_0001615c:
      iVar8 = iVar6;
      if (mVar10 != 0) {
        mVar13 = mVar13 & mVar10;
      }
LAB_00016168:
      pmVar9->mentioned = mVar13;
      if ((iVar8 != 0x2b) && (((byte)iVar8 & 0xef) != 0x2d)) {
        mode_string = pcVar5 + 1;
        iVar11 = iVar12;
        if (iVar8 == 0x2c) goto LAB_0001600c;
        if (iVar8 == 0) {
          pmVar4[iVar12].flag = '\0';
          return pmVar4;
        }
        goto LAB_00016044;
      }
      iVar6 = (int)pcVar5[1];
      iVar12 = iVar12 + 1;
      pmVar9 = pmVar9 + 1;
      mode_string = pcVar5;
      if (iVar6 != 0x67) break;
LAB_00016194:
      pcVar5 = mode_string + 2;
      mVar13 = 0x38;
    }
  }
  uVar2 = 0;
  if (7 < (iVar6 - 0x30U & 0xff)) {
LAB_00016224:
    uVar2 = iVar6 - 0x58U & 0xff;
    mVar13 = 0;
    if (uVar2 < 0x21) {
                    /* WARNING: Could not emulate address calculation at 0x0001623c */
                    /* WARNING: Treating indirect jump as call */
      pmVar4 = (mode_change *)(*(code *)(&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0)))();
      return pmVar4;
    }
    pmVar9->op = (char)iVar8;
    pmVar9->flag = '\x01';
    pmVar9->affected = mVar10;
    pmVar9->value = 0;
    goto LAB_0001615c;
  }
  do {
    uVar2 = (uVar2 * 8 + iVar6) - 0x30;
    pcVar5 = pcVar5 + 1;
    if (0xfff < uVar2) goto LAB_00016044;
    iVar6 = (int)*pcVar5;
  } while ((iVar6 - 0x30U & 0xff) < 8);
  if ((mVar10 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {
    pmVar9->op = (char)iVar8;
    pmVar9->flag = '\x01';
    pmVar9->affected = 0xfff;
    mVar10 = 0xfff;
    pmVar9->value = uVar2;
    mVar13 = 0xfff;
    iVar8 = iVar6;
    goto LAB_00016168;
  }
LAB_00016044:
  (*(code *)PTR_free_000323e8)(pmVar4);
  return (mode_change *)0x0;
}



undefined2 * mode_compile(char *param_1)

{
  undefined *puVar1;
  uint uVar2;
  uint uVar3;
  undefined2 *puVar4;
  char *pcVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  int iVar9;
  undefined2 *puVar10;
  int iVar11;
  
  uVar2 = (uint)*param_1;
  if ((uVar2 - 0x30 & 0xff) < 8) {
    uVar8 = 0;
    pcVar5 = param_1;
    do {
      uVar8 = (uVar8 * 8 + uVar2) - 0x30;
      pcVar5 = pcVar5 + 1;
      if (0xfff < uVar8) {
        return (undefined2 *)0x0;
      }
      uVar2 = (uint)*pcVar5;
    } while ((uVar2 - 0x30 & 0xff) < 8);
    if (uVar2 != 0) {
      return (undefined2 *)0x0;
    }
    uVar2 = 0xfff;
    if ((int)pcVar5 - (int)param_1 < 5) {
      uVar2 = uVar8 & 0xc00 | 0x3ff;
    }
    puVar4 = (undefined2 *)xmalloc(0x20);
    *(undefined1 *)((int)puVar4 + 0x11) = 0;
    *puVar4 = 0x3d01;
    *(uint *)(puVar4 + 4) = uVar8;
    *(uint *)(puVar4 + 6) = uVar2;
    *(undefined4 *)(puVar4 + 2) = 0xfff;
    return puVar4;
  }
  iVar7 = 0x10;
  if (uVar2 != 0) {
    uVar8 = 1;
    pcVar5 = param_1;
    do {
      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {
        pcVar5 = pcVar5 + 1;
        uVar2 = (uint)*pcVar5;
        uVar8 = uVar8 + 1;
        if (uVar2 == 0) goto LAB_00015fc8;
      }
      pcVar5 = pcVar5 + 1;
      uVar2 = (uint)*pcVar5;
      uVar8 = uVar8 + (uVar3 == 0x2d);
    } while (uVar2 != 0);
LAB_00015fc8:
    iVar7 = uVar8 << 4;
    if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {
                    /* WARNING: Subroutine does not return */
      xalloc_die();
    }
  }
  puVar4 = (undefined2 *)xmalloc(iVar7);
  puVar1 = PTR_s_operand_00032108;
  iVar7 = 0;
LAB_0001600c:
  uVar2 = 0;
  while( true ) {
    while( true ) {
      iVar9 = (int)*param_1;
      if (iVar9 != 0x61) break;
      uVar2 = 0xfff;
      param_1 = param_1 + 1;
    }
    if (iVar9 < 0x62) break;
    if (iVar9 == 0x6f) {
      uVar2 = uVar2 | 0x207;
      param_1 = param_1 + 1;
    }
    else if (iVar9 == 0x75) {
      uVar2 = uVar2 | 0x9c0;
      param_1 = param_1 + 1;
    }
    else {
      uVar2 = uVar2 | 0x438;
      if (iVar9 != 0x67) goto LAB_00016044;
      param_1 = param_1 + 1;
    }
  }
  if (((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b)) goto LAB_00016044;
  iVar6 = (int)param_1[1];
  iVar11 = iVar7 + 1;
  puVar10 = puVar4 + iVar7 * 8;
  if (iVar6 == 0x67) goto LAB_00016194;
  while( true ) {
    pcVar5 = param_1 + 1;
    if (iVar6 < 0x68) break;
    if (iVar6 == 0x6f) {
      pcVar5 = param_1 + 2;
      uVar8 = 7;
    }
    else {
      if (iVar6 != 0x75) goto LAB_00016224;
      pcVar5 = param_1 + 2;
      uVar8 = 0x1c0;
    }
    while( true ) {
      *(char *)puVar10 = (char)iVar9;
      *(undefined1 *)((int)puVar10 + 1) = 3;
      *(uint *)(puVar10 + 2) = uVar2;
      *(uint *)(puVar10 + 4) = uVar8;
      iVar6 = (int)param_1[2];
LAB_0001615c:
      iVar9 = iVar6;
      if (uVar2 != 0) {
        uVar8 = uVar8 & uVar2;
      }
LAB_00016168:
      *(uint *)(puVar10 + 6) = uVar8;
      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {
        param_1 = pcVar5 + 1;
        iVar7 = iVar11;
        if (iVar9 == 0x2c) goto LAB_0001600c;
        if (iVar9 == 0) {
          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;
          return puVar4;
        }
        goto LAB_00016044;
      }
      iVar6 = (int)pcVar5[1];
      iVar11 = iVar11 + 1;
      puVar10 = puVar10 + 8;
      param_1 = pcVar5;
      if (iVar6 != 0x67) break;
LAB_00016194:
      pcVar5 = param_1 + 2;
      uVar8 = 0x38;
    }
  }
  uVar8 = 0;
  if (7 < (iVar6 - 0x30U & 0xff)) {
LAB_00016224:
    uVar3 = iVar6 - 0x58U & 0xff;
    uVar8 = 0;
    if (uVar3 < 0x21) {
                    /* WARNING: Could not emulate address calculation at 0x0001623c */
                    /* WARNING: Treating indirect jump as call */
      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();
      return puVar4;
    }
    *(char *)puVar10 = (char)iVar9;
    *(undefined1 *)((int)puVar10 + 1) = 1;
    *(uint *)(puVar10 + 2) = uVar2;
    *(undefined4 *)(puVar10 + 4) = 0;
    goto LAB_0001615c;
  }
  do {
    uVar8 = (uVar8 * 8 + iVar6) - 0x30;
    pcVar5 = pcVar5 + 1;
    if (0xfff < uVar8) goto LAB_00016044;
    iVar6 = (int)*pcVar5;
  } while ((iVar6 - 0x30U & 0xff) < 8);
  if ((uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {
    *(char *)puVar10 = (char)iVar9;
    *(undefined1 *)((int)puVar10 + 1) = 1;
    *(undefined4 *)(puVar10 + 2) = 0xfff;
    uVar2 = 0xfff;
    *(uint *)(puVar10 + 4) = uVar8;
    uVar8 = 0xfff;
    iVar9 = iVar6;
    goto LAB_00016168;
  }
LAB_00016044:
  (*(code *)PTR_free_000323e8)(puVar4);
  return (undefined2 *)0x0;
}


lui gp,0x2
addiu gp,gp,0x41a0
addu gp,gp,t9
addiu sp,sp,-0x38
sw s1,0x20(sp)
sw gp,0x10(sp)
sw ra,0x34(sp)
sw s5,0x30(sp)
sw s4,0x2c(sp)
sw s3,0x28(sp)
sw s2,0x24(sp)
sw s0,0x1c(sp)
lb v0,0x0(a0)
addiu v1,v0,-0x30
andi v1,v1,0xff
sltiu v1,v1,0x8
bne v1,zero,0x00016074
_or s1,a0,zero
beq v0,zero,0x00015fe0
_li a0,0x10
li a0,0x1
li a2,0x2b
li a3,-0x11
b 0x00015fac
_or v1,s1,zero
addiu v1,v1,0x1
xori v0,v0,0x2d
sltiu a1,v0,0x1
lb v0,0x0(v1)
beq v0,zero,0x00015fc8
_addu a0,a0,a1
bne v0,a2,0x00015f94
_and v0,v0,a3
addiu v1,v1,0x1
lb v0,0x0(v1)
li a1,0x1
bne v0,zero,0x00015fac
_addu a0,a0,a1
srl v0,a0,0x1c
sll a0,a0,0x4
bltz a0,0x0001639c
_sltu v0,zero,v0
bne v0,zero,0x000163a0
_lw t9,-0x7f3c(gp)
lw t9,-0x7f60(gp)
bal 0x00019500
_nop
or t2,zero,zero
lw gp,0x10(sp)
li t6,0x6f
li t5,0x75
li t4,0x67
li t7,0x3
lw t3,-0x7fc8(gp)
addiu t3,t3,0x1e0
or t1,zero,zero
li a0,0x61
lb a3,0x0(s1)
beq a3,a0,0x000162e8
_slti v1,a3,0x62
bne v1,zero,0x000160d4
_nop
beq a3,t6,0x00016308
_nop
beq a3,t5,0x000162fc
_nop
beq a3,t4,0x000162f4
_ori t1,t1,0x438
lw t9,-0x7ce8(gp)
jalr t9
_or a0,v0,zero
or v0,zero,zero
lw ra,0x34(sp)
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x38
b 0x00016094
_or s0,zero,zero
lb v0,0x0(a0)
addiu v1,v0,-0x30
andi v1,v1,0xff
sltiu v1,v1,0x8
beq v1,zero,0x00016314
_nop
sll s0,s0,0x3
addu v0,s0,v0
addiu s0,v0,-0x30
sltiu v0,s0,0x1000
bne v0,zero,0x0001607c
_addiu a0,a0,0x1
or v0,zero,zero
lw ra,0x34(sp)
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x38
li v1,0x2d
beq a3,v1,0x000160f0
_li v1,0x3d
beq a3,v1,0x000160f0
_li v1,0x2b
bne a3,v1,0x00016044
_lw t9,-0x7ce8(gp)
lb v1,0x1(s1)
sll t0,t2,0x4
li s2,0x1
addiu t2,t2,0x1
addu t0,v0,t0
li s0,0xfff
li s3,0x2c
li a0,0x2b
li t9,-0x11
li t8,0x2d
beq v1,t4,0x00016194
_addiu a2,s1,0x1
slti a1,v1,0x68
bne a1,zero,0x000161a0
_nop
beq v1,t6,0x000162dc
_nop
bne v1,t5,0x00016224
_addiu a1,v1,-0x58
addiu v1,s1,0x2
li s4,0x1c0
sb a3,0x0(t0)
sb t7,0x1(t0)
sw t1,0x4(t0)
sw s4,0x8(t0)
lb a3,0x2(s1)
or s1,v1,zero
beq t1,zero,0x00016168
_nop
and s4,s4,t1
beq a3,a0,0x00016180
_sw s4,0xc(t0)
and v1,a3,t9
seb v1,v1
bne v1,t8,0x00016380
_li v1,0x2c
lb v1,0x1(s1)
addiu t2,t2,0x1
addiu t0,t0,0x10
bne v1,t4,0x00016120
_addiu a2,s1,0x1
addiu v1,s1,0x2
b 0x00016144
_li s4,0x38
addiu a1,v1,-0x30
andi a1,a1,0xff
sltiu a1,a1,0x8
beq a1,zero,0x00016220
_or a1,zero,zero
sll a1,a1,0x3
addu v1,a1,v1
addiu a1,v1,-0x30
sltiu v1,a1,0x1000
beq v1,zero,0x00016040
_addiu a2,a2,0x1
lb v1,0x0(a2)
addiu s1,v1,-0x30
andi s1,s1,0xff
sltiu s1,s1,0x8
bne s1,zero,0x000161b4
_nop
bne t1,zero,0x00016040
_nop
beq v1,zero,0x000161fc
_nop
bne v1,s3,0x00016040
_nop
sb a3,0x0(t0)
or s1,a2,zero
sb s2,0x1(t0)
or a3,v1,zero
sw s0,0x4(t0)
li t1,0xfff
sw a1,0x8(t0)
b 0x00016168
_li s4,0xfff
addiu a1,v1,-0x58
li s5,0x1
andi a1,a1,0xff
sltiu s1,a1,0x21
beq s1,zero,0x00016270
_or s4,zero,zero
sll a1,a1,0x2
addu a1,t3,a1
lw a1,0x0(a1)
addu a1,a1,gp
jr a1
_nop
addiu a2,a2,0x1
lb v1,0x0(a2)
li s5,0x2
addiu a1,v1,-0x58
andi a1,a1,0xff
sltiu s1,a1,0x21
bne s1,zero,0x00016238
_nop
sb a3,0x0(t0)
or s1,a2,zero
sb s5,0x1(t0)
or a3,v1,zero
sw t1,0x4(t0)
b 0x0001615c
_sw s4,0x8(t0)
addiu a2,a2,0x1
lb v1,0x0(a2)
b 0x0001625c
_ori s4,s4,0x49
addiu a2,a2,0x1
lb v1,0x0(a2)
b 0x0001625c
_ori s4,s4,0x92
addiu a2,a2,0x1
lb v1,0x0(a2)
b 0x0001625c
_ori s4,s4,0x200
addiu a2,a2,0x1
lb v1,0x0(a2)
b 0x0001625c
_ori s4,s4,0xc00
addiu a2,a2,0x1
lb v1,0x0(a2)
b 0x0001625c
_ori s4,s4,0x124
addiu v1,s1,0x2
b 0x00016144
_li s4,0x7
li t1,0xfff
b 0x00016014
_addiu s1,s1,0x1
b 0x00016014
_addiu s1,s1,0x1
ori t1,t1,0x9c0
b 0x00016014
_addiu s1,s1,0x1
ori t1,t1,0x207
b 0x00016014
_addiu s1,s1,0x1
bne v0,zero,0x000160b0
_or v0,zero,zero
subu a0,a0,s1
slti a0,a0,0x5
beq a0,zero,0x00016334
_li s1,0xfff
andi s1,s0,0xc00
ori s1,s1,0x3ff
lw t9,-0x7f60(gp)
bal 0x00019500
_li a0,0x20
li v1,0x3d01
sb zero,0x11(v0)
sh v1,0x0(v0)
li v1,0xfff
sw s0,0x8(v0)
sw s1,0xc(v0)
sw v1,0x4(v0)
lw ra,0x34(sp)
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x38
beq a3,v1,0x0001600c
_addiu s1,s1,0x1
bne a3,zero,0x00016040
_sll v1,t2,0x4
addu v1,v0,v1
b 0x000160b0
_sb zero,0x1(v1)
lw t9,-0x7f3c(gp)
bal 0x00019920
_nop
(translation_unit "undefined2 * mode_compile(char *param_1)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined2 *puVar4;\n  char *pcVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  undefined2 *puVar10;\n  int iVar11;\n  \n  uVar2 = (uint)*param_1;\n  if ((uVar2 - 0x30 & 0xff) < 8) {\n    uVar8 = 0;\n    pcVar5 = param_1;\n    do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar2 = 0xfff;\n    if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }\n    puVar4 = (undefined2 *)xmalloc(0x20);\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    *puVar4 = 0x3d01;\n    *(uint *)(puVar4 + 4) = uVar8;\n    *(uint *)(puVar4 + 6) = uVar2;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    return puVar4;\n  }\n  iVar7 = 0x10;\n  if (uVar2 != 0) {\n    uVar8 = 1;\n    pcVar5 = param_1;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    iVar7 = uVar8 << 4;\n    if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  puVar4 = (undefined2 *)xmalloc(iVar7);\n  puVar1 = PTR_s_operand_00032108;\n  iVar7 = 0;\nLAB_0001600c:\n  uVar2 = 0;\n  while( true ) {\n    while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }\n    if (iVar9 < 0x62) break;\n    if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }\n  }\n  if (((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b)) goto LAB_00016044;\n  iVar6 = (int)param_1[1];\n  iVar11 = iVar7 + 1;\n  puVar10 = puVar4 + iVar7 * 8;\n  if (iVar6 == 0x67) goto LAB_00016194;\n  while( true ) {\n    pcVar5 = param_1 + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }\n    while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }\n  }\n  uVar8 = 0;\n  if (7 < (iVar6 - 0x30U & 0xff)) {\nLAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;\n    uVar8 = 0;\n    if (uVar3 < 0x21) {\n                    /* WARNING: Could not emulate address calculation at 0x0001623c */\n                    /* WARNING: Treating indirect jump as call */\n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(uint *)(puVar10 + 2) = uVar2;\n    *(undefined4 *)(puVar10 + 4) = 0;\n    goto LAB_0001615c;\n  }\n  do {\n    uVar8 = (uVar8 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar8) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  } while ((iVar6 - 0x30U & 0xff) < 8);\n  if ((uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(undefined4 *)(puVar10 + 2) = 0xfff;\n    uVar2 = 0xfff;\n    *(uint *)(puVar10 + 4) = uVar8;\n    uVar8 = 0xfff;\n    iVar9 = iVar6;\n    goto LAB_00016168;\n  }\nLAB_00016044:\n  (*(code *)PTR_free_000323e8)(puVar4);\n  return (undefined2 *)0x0;\n}\n\n" (function_definition "undefined2 * mode_compile(char *param_1)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined2 *puVar4;\n  char *pcVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  undefined2 *puVar10;\n  int iVar11;\n  \n  uVar2 = (uint)*param_1;\n  if ((uVar2 - 0x30 & 0xff) < 8) {\n    uVar8 = 0;\n    pcVar5 = param_1;\n    do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar2 = 0xfff;\n    if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }\n    puVar4 = (undefined2 *)xmalloc(0x20);\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    *puVar4 = 0x3d01;\n    *(uint *)(puVar4 + 4) = uVar8;\n    *(uint *)(puVar4 + 6) = uVar2;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    return puVar4;\n  }\n  iVar7 = 0x10;\n  if (uVar2 != 0) {\n    uVar8 = 1;\n    pcVar5 = param_1;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    iVar7 = uVar8 << 4;\n    if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  puVar4 = (undefined2 *)xmalloc(iVar7);\n  puVar1 = PTR_s_operand_00032108;\n  iVar7 = 0;\nLAB_0001600c:\n  uVar2 = 0;\n  while( true ) {\n    while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }\n    if (iVar9 < 0x62) break;\n    if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }\n  }\n  if (((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b)) goto LAB_00016044;\n  iVar6 = (int)param_1[1];\n  iVar11 = iVar7 + 1;\n  puVar10 = puVar4 + iVar7 * 8;\n  if (iVar6 == 0x67) goto LAB_00016194;\n  while( true ) {\n    pcVar5 = param_1 + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }\n    while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }\n  }\n  uVar8 = 0;\n  if (7 < (iVar6 - 0x30U & 0xff)) {\nLAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;\n    uVar8 = 0;\n    if (uVar3 < 0x21) {\n                    /* WARNING: Could not emulate address calculation at 0x0001623c */\n                    /* WARNING: Treating indirect jump as call */\n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(uint *)(puVar10 + 2) = uVar2;\n    *(undefined4 *)(puVar10 + 4) = 0;\n    goto LAB_0001615c;\n  }\n  do {\n    uVar8 = (uVar8 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar8) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  } while ((iVar6 - 0x30U & 0xff) < 8);\n  if ((uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(undefined4 *)(puVar10 + 2) = 0xfff;\n    uVar2 = 0xfff;\n    *(uint *)(puVar10 + 4) = uVar8;\n    uVar8 = 0xfff;\n    iVar9 = iVar6;\n    goto LAB_00016168;\n  }\nLAB_00016044:\n  (*(code *)PTR_free_000323e8)(puVar4);\n  return (undefined2 *)0x0;\n}" type_identifier (pointer_declarator "* mode_compile(char *param_1)" * (function_declarator "mode_compile(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) )))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined2 *puVar4;\n  char *pcVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  undefined2 *puVar10;\n  int iVar11;\n  \n  uVar2 = (uint)*param_1;\n  if ((uVar2 - 0x30 & 0xff) < 8) {\n    uVar8 = 0;\n    pcVar5 = param_1;\n    do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar2 = 0xfff;\n    if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }\n    puVar4 = (undefined2 *)xmalloc(0x20);\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    *puVar4 = 0x3d01;\n    *(uint *)(puVar4 + 4) = uVar8;\n    *(uint *)(puVar4 + 6) = uVar2;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    return puVar4;\n  }\n  iVar7 = 0x10;\n  if (uVar2 != 0) {\n    uVar8 = 1;\n    pcVar5 = param_1;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    iVar7 = uVar8 << 4;\n    if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  puVar4 = (undefined2 *)xmalloc(iVar7);\n  puVar1 = PTR_s_operand_00032108;\n  iVar7 = 0;\nLAB_0001600c:\n  uVar2 = 0;\n  while( true ) {\n    while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }\n    if (iVar9 < 0x62) break;\n    if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }\n  }\n  if (((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b)) goto LAB_00016044;\n  iVar6 = (int)param_1[1];\n  iVar11 = iVar7 + 1;\n  puVar10 = puVar4 + iVar7 * 8;\n  if (iVar6 == 0x67) goto LAB_00016194;\n  while( true ) {\n    pcVar5 = param_1 + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }\n    while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }\n  }\n  uVar8 = 0;\n  if (7 < (iVar6 - 0x30U & 0xff)) {\nLAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;\n    uVar8 = 0;\n    if (uVar3 < 0x21) {\n                    /* WARNING: Could not emulate address calculation at 0x0001623c */\n                    /* WARNING: Treating indirect jump as call */\n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(uint *)(puVar10 + 2) = uVar2;\n    *(undefined4 *)(puVar10 + 4) = 0;\n    goto LAB_0001615c;\n  }\n  do {\n    uVar8 = (uVar8 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar8) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  } while ((iVar6 - 0x30U & 0xff) < 8);\n  if ((uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(undefined4 *)(puVar10 + 2) = 0xfff;\n    uVar2 = 0xfff;\n    *(uint *)(puVar10 + 4) = uVar8;\n    uVar8 = 0xfff;\n    iVar9 = iVar6;\n    goto LAB_00016168;\n  }\nLAB_00016044:\n  (*(code *)PTR_free_000323e8)(puVar4);\n  return (undefined2 *)0x0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined2 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined2 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (expression_statement "uVar2 = (uint)*param_1;" (assignment_expression "uVar2 = (uint)*param_1" identifier = (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if ((uVar2 - 0x30 & 0xff) < 8) {\n    uVar8 = 0;\n    pcVar5 = param_1;\n    do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar2 = 0xfff;\n    if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }\n    puVar4 = (undefined2 *)xmalloc(0x20);\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    *puVar4 = 0x3d01;\n    *(uint *)(puVar4 + 4) = uVar8;\n    *(uint *)(puVar4 + 6) = uVar2;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    return puVar4;\n  }" if (parenthesized_expression "((uVar2 - 0x30 & 0xff) < 8)" ( (binary_expression "(uVar2 - 0x30 & 0xff) < 8" (parenthesized_expression "(uVar2 - 0x30 & 0xff)" ( (binary_expression "uVar2 - 0x30 & 0xff" (binary_expression "uVar2 - 0x30" identifier - number_literal) & number_literal) )) < number_literal) )) (compound_statement "{\n    uVar8 = 0;\n    pcVar5 = param_1;\n    do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar2 = 0xfff;\n    if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }\n    puVar4 = (undefined2 *)xmalloc(0x20);\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    *puVar4 = 0x3d01;\n    *(uint *)(puVar4 + 4) = uVar8;\n    *(uint *)(puVar4 + 6) = uVar2;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    return puVar4;\n  }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "pcVar5 = param_1;" (assignment_expression "pcVar5 = param_1" identifier = identifier) ;) (do_statement "do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);" do (compound_statement "{\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    }" { (expression_statement "uVar8 = (uVar8 * 8 + uVar2) - 0x30;" (assignment_expression "uVar8 = (uVar8 * 8 + uVar2) - 0x30" identifier = (binary_expression "(uVar8 * 8 + uVar2) - 0x30" (parenthesized_expression "(uVar8 * 8 + uVar2)" ( (binary_expression "uVar8 * 8 + uVar2" (binary_expression "uVar8 * 8" identifier * number_literal) + identifier) )) - number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (if_statement "if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }" if (parenthesized_expression "(0xfff < uVar8)" ( (binary_expression "0xfff < uVar8" number_literal < identifier) )) (compound_statement "{\n        return (undefined2 *)0x0;\n      }" { (return_statement "return (undefined2 *)0x0;" return (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar2 = (uint)*pcVar5;" (assignment_expression "uVar2 = (uint)*pcVar5" identifier = (binary_expression "(uint)*pcVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) while (parenthesized_expression "((uVar2 - 0x30 & 0xff) < 8)" ( (binary_expression "(uVar2 - 0x30 & 0xff) < 8" (parenthesized_expression "(uVar2 - 0x30 & 0xff)" ( (binary_expression "uVar2 - 0x30 & 0xff" (binary_expression "uVar2 - 0x30" identifier - number_literal) & number_literal) )) < number_literal) )) ;) (if_statement "if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      return (undefined2 *)0x0;\n    }" { (return_statement "return (undefined2 *)0x0;" return (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar2 = 0xfff;" (assignment_expression "uVar2 = 0xfff" identifier = number_literal) ;) (if_statement "if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }" if (parenthesized_expression "((int)pcVar5 - (int)param_1 < 5)" ( (binary_expression "(int)pcVar5 - (int)param_1 < 5" (binary_expression "(int)pcVar5 - (int)param_1" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal) )) (compound_statement "{\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }" { (expression_statement "uVar2 = uVar8 & 0xc00 | 0x3ff;" (assignment_expression "uVar2 = uVar8 & 0xc00 | 0x3ff" identifier = (binary_expression "uVar8 & 0xc00 | 0x3ff" (binary_expression "uVar8 & 0xc00" identifier & number_literal) | number_literal)) ;) })) (expression_statement "puVar4 = (undefined2 *)xmalloc(0x20);" (assignment_expression "puVar4 = (undefined2 *)xmalloc(0x20)" identifier = (cast_expression "(undefined2 *)xmalloc(0x20)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "*(undefined1 *)((int)puVar4 + 0x11) = 0;" (assignment_expression "*(undefined1 *)((int)puVar4 + 0x11) = 0" (pointer_expression "*(undefined1 *)((int)puVar4 + 0x11)" * (cast_expression "(undefined1 *)((int)puVar4 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 0x11)" ( (binary_expression "(int)puVar4 + 0x11" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*puVar4 = 0x3d01;" (assignment_expression "*puVar4 = 0x3d01" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "*(uint *)(puVar4 + 4) = uVar8;" (assignment_expression "*(uint *)(puVar4 + 4) = uVar8" (pointer_expression "*(uint *)(puVar4 + 4)" * (cast_expression "(uint *)(puVar4 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 4)" ( (binary_expression "puVar4 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar4 + 6) = uVar2;" (assignment_expression "*(uint *)(puVar4 + 6) = uVar2" (pointer_expression "*(uint *)(puVar4 + 6)" * (cast_expression "(uint *)(puVar4 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 6)" ( (binary_expression "puVar4 + 6" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + 2) = 0xfff;" (assignment_expression "*(undefined4 *)(puVar4 + 2) = 0xfff" (pointer_expression "*(undefined4 *)(puVar4 + 2)" * (cast_expression "(undefined4 *)(puVar4 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) = number_literal) ;) (return_statement "return puVar4;" return identifier ;) })) (expression_statement "iVar7 = 0x10;" (assignment_expression "iVar7 = 0x10" identifier = number_literal) ;) (if_statement "if (uVar2 != 0) {\n    uVar8 = 1;\n    pcVar5 = param_1;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    iVar7 = uVar8 << 4;\n    if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar8 = 1;\n    pcVar5 = param_1;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    iVar7 = uVar8 << 4;\n    if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }" { (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (expression_statement "pcVar5 = param_1;" (assignment_expression "pcVar5 = param_1" identifier = identifier) ;) (do_statement "do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);" do (compound_statement "{\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    }" { (while_statement "while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }" while (parenthesized_expression "(uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b)" ( (comma_expression "uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b" (assignment_expression "uVar3 = uVar2 & 0xffffffef" identifier = (binary_expression "uVar2 & 0xffffffef" identifier & number_literal)) , (binary_expression "uVar2 == 0x2b" identifier == number_literal)) )) (compound_statement "{\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }" { (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = (uint)*pcVar5;" (assignment_expression "uVar2 = (uint)*pcVar5" identifier = (binary_expression "(uint)*pcVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (if_statement "if (uVar2 == 0) goto LAB_00015fc8;" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00015fc8;" goto statement_identifier ;)) })) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = (uint)*pcVar5;" (assignment_expression "uVar2 = (uint)*pcVar5" identifier = (binary_expression "(uint)*pcVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar8 = uVar8 + (uVar3 == 0x2d);" (assignment_expression "uVar8 = uVar8 + (uVar3 == 0x2d)" identifier = (binary_expression "uVar8 + (uVar3 == 0x2d)" identifier + (parenthesized_expression "(uVar3 == 0x2d)" ( (binary_expression "uVar3 == 0x2d" identifier == number_literal) )))) ;) }) while (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) ;) (labeled_statement "LAB_00015fc8:\n    iVar7 = uVar8 << 4;" statement_identifier : (expression_statement "iVar7 = uVar8 << 4;" (assignment_expression "iVar7 = uVar8 << 4" identifier = (binary_expression "uVar8 << 4" identifier << number_literal)) ;)) (if_statement "if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }" if (parenthesized_expression "((iVar7 < 0) || (uVar8 >> 0x1c != 0))" ( (binary_expression "(iVar7 < 0) || (uVar8 >> 0x1c != 0)" (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) || (parenthesized_expression "(uVar8 >> 0x1c != 0)" ( (binary_expression "uVar8 >> 0x1c != 0" (binary_expression "uVar8 >> 0x1c" identifier >> number_literal) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }" { comment (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) })) })) (expression_statement "puVar4 = (undefined2 *)xmalloc(iVar7);" (assignment_expression "puVar4 = (undefined2 *)xmalloc(iVar7)" identifier = (cast_expression "(undefined2 *)xmalloc(iVar7)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar7)" identifier (argument_list "(iVar7)" ( identifier ))))) ;) (expression_statement "puVar1 = PTR_s_operand_00032108;" (assignment_expression "puVar1 = PTR_s_operand_00032108" identifier = identifier) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0001600c:\n  uVar2 = 0;" statement_identifier : (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;)) (while_statement "while( true ) {\n    while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }\n    if (iVar9 < 0x62) break;\n    if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }\n    if (iVar9 < 0x62) break;\n    if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }\n  }" { (while_statement "while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }" { (expression_statement "iVar9 = (int)*param_1;" (assignment_expression "iVar9 = (int)*param_1" identifier = (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (iVar9 != 0x61) break;" if (parenthesized_expression "(iVar9 != 0x61)" ( (binary_expression "iVar9 != 0x61" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar2 = 0xfff;" (assignment_expression "uVar2 = 0xfff" identifier = number_literal) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) })) (if_statement "if (iVar9 < 0x62) break;" if (parenthesized_expression "(iVar9 < 0x62)" ( (binary_expression "iVar9 < 0x62" identifier < number_literal) )) (break_statement "break;" break ;)) (if_statement "if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }" if (parenthesized_expression "(iVar9 == 0x6f)" ( (binary_expression "iVar9 == 0x6f" identifier == number_literal) )) (compound_statement "{\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }" { (expression_statement "uVar2 = uVar2 | 0x207;" (assignment_expression "uVar2 = uVar2 | 0x207" identifier = (binary_expression "uVar2 | 0x207" identifier | number_literal)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) }) (else_clause "else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }" else (if_statement "if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }" if (parenthesized_expression "(iVar9 == 0x75)" ( (binary_expression "iVar9 == 0x75" identifier == number_literal) )) (compound_statement "{\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }" { (expression_statement "uVar2 = uVar2 | 0x9c0;" (assignment_expression "uVar2 = uVar2 | 0x9c0" identifier = (binary_expression "uVar2 | 0x9c0" identifier | number_literal)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }" else (compound_statement "{\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }" { (expression_statement "uVar2 = uVar2 | 0x438;" (assignment_expression "uVar2 = uVar2 | 0x438" identifier = (binary_expression "uVar2 | 0x438" identifier | number_literal)) ;) (if_statement "if (iVar9 != 0x67) goto LAB_00016044;" if (parenthesized_expression "(iVar9 != 0x67)" ( (binary_expression "iVar9 != 0x67" identifier != number_literal) )) (goto_statement "goto LAB_00016044;" goto statement_identifier ;)) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) }))))) })) (if_statement "if (((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b)) goto LAB_00016044;" if (parenthesized_expression "(((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b))" ( (binary_expression "((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b)" (parenthesized_expression "((iVar9 != 0x2d) && (iVar9 != 0x3d))" ( (binary_expression "(iVar9 != 0x2d) && (iVar9 != 0x3d)" (parenthesized_expression "(iVar9 != 0x2d)" ( (binary_expression "iVar9 != 0x2d" identifier != number_literal) )) && (parenthesized_expression "(iVar9 != 0x3d)" ( (binary_expression "iVar9 != 0x3d" identifier != number_literal) ))) )) && (parenthesized_expression "(iVar9 != 0x2b)" ( (binary_expression "iVar9 != 0x2b" identifier != number_literal) ))) )) (goto_statement "goto LAB_00016044;" goto statement_identifier ;)) (expression_statement "iVar6 = (int)param_1[1];" (assignment_expression "iVar6 = (int)param_1[1]" identifier = (cast_expression "(int)param_1[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar11 = iVar7 + 1;" (assignment_expression "iVar11 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar4 + iVar7 * 8;" (assignment_expression "puVar10 = puVar4 + iVar7 * 8" identifier = (binary_expression "puVar4 + iVar7 * 8" identifier + (binary_expression "iVar7 * 8" identifier * number_literal))) ;) (if_statement "if (iVar6 == 0x67) goto LAB_00016194;" if (parenthesized_expression "(iVar6 == 0x67)" ( (binary_expression "iVar6 == 0x67" identifier == number_literal) )) (goto_statement "goto LAB_00016194;" goto statement_identifier ;)) (while_statement "while( true ) {\n    pcVar5 = param_1 + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }\n    while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    pcVar5 = param_1 + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }\n    while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }\n  }" { (expression_statement "pcVar5 = param_1 + 1;" (assignment_expression "pcVar5 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 < 0x68) break;" if (parenthesized_expression "(iVar6 < 0x68)" ( (binary_expression "iVar6 < 0x68" identifier < number_literal) )) (break_statement "break;" break ;)) (if_statement "if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }" if (parenthesized_expression "(iVar6 == 0x6f)" ( (binary_expression "iVar6 == 0x6f" identifier == number_literal) )) (compound_statement "{\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }" { (expression_statement "pcVar5 = param_1 + 2;" (assignment_expression "pcVar5 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (expression_statement "uVar8 = 7;" (assignment_expression "uVar8 = 7" identifier = number_literal) ;) }) (else_clause "else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }" else (compound_statement "{\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }" { (if_statement "if (iVar6 != 0x75) goto LAB_00016224;" if (parenthesized_expression "(iVar6 != 0x75)" ( (binary_expression "iVar6 != 0x75" identifier != number_literal) )) (goto_statement "goto LAB_00016224;" goto statement_identifier ;)) (expression_statement "pcVar5 = param_1 + 2;" (assignment_expression "pcVar5 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (expression_statement "uVar8 = 0x1c0;" (assignment_expression "uVar8 = 0x1c0" identifier = number_literal) ;) }))) (while_statement "while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }" { (expression_statement "*(char *)puVar10 = (char)iVar9;" (assignment_expression "*(char *)puVar10 = (char)iVar9" (pointer_expression "*(char *)puVar10" * (cast_expression "(char *)puVar10" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(char)iVar9" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(undefined1 *)((int)puVar10 + 1) = 3;" (assignment_expression "*(undefined1 *)((int)puVar10 + 1) = 3" (pointer_expression "*(undefined1 *)((int)puVar10 + 1)" * (cast_expression "(undefined1 *)((int)puVar10 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 1)" ( (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(puVar10 + 2) = uVar2;" (assignment_expression "*(uint *)(puVar10 + 2) = uVar2" (pointer_expression "*(uint *)(puVar10 + 2)" * (cast_expression "(uint *)(puVar10 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 2)" ( (binary_expression "puVar10 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar10 + 4) = uVar8;" (assignment_expression "*(uint *)(puVar10 + 4) = uVar8" (pointer_expression "*(uint *)(puVar10 + 4)" * (cast_expression "(uint *)(puVar10 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 4)" ( (binary_expression "puVar10 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = (int)param_1[2];" (assignment_expression "iVar6 = (int)param_1[2]" identifier = (cast_expression "(int)param_1[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (labeled_statement "LAB_0001615c:\n      iVar9 = iVar6;" statement_identifier : (expression_statement "iVar9 = iVar6;" (assignment_expression "iVar9 = iVar6" identifier = identifier) ;)) (if_statement "if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar8 = uVar8 & uVar2;\n      }" { (expression_statement "uVar8 = uVar8 & uVar2;" (assignment_expression "uVar8 = uVar8 & uVar2" identifier = (binary_expression "uVar8 & uVar2" identifier & identifier)) ;) })) (labeled_statement "LAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;" statement_identifier : (expression_statement "*(uint *)(puVar10 + 6) = uVar8;" (assignment_expression "*(uint *)(puVar10 + 6) = uVar8" (pointer_expression "*(uint *)(puVar10 + 6)" * (cast_expression "(uint *)(puVar10 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 6)" ( (binary_expression "puVar10 + 6" identifier + number_literal) )))) = identifier) ;)) (if_statement "if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }" if (parenthesized_expression "((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d))" ( (binary_expression "(iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)" (parenthesized_expression "(iVar9 != 0x2b)" ( (binary_expression "iVar9 != 0x2b" identifier != number_literal) )) && (parenthesized_expression "(((byte)iVar9 & 0xef) != 0x2d)" ( (binary_expression "((byte)iVar9 & 0xef) != 0x2d" (parenthesized_expression "((byte)iVar9 & 0xef)" ( (binary_expression "(byte)iVar9 & 0xef" (cast_expression "(byte)iVar9" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }" { (expression_statement "param_1 = pcVar5 + 1;" (assignment_expression "param_1 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar7 = iVar11;" (assignment_expression "iVar7 = iVar11" identifier = identifier) ;) (if_statement "if (iVar9 == 0x2c) goto LAB_0001600c;" if (parenthesized_expression "(iVar9 == 0x2c)" ( (binary_expression "iVar9 == 0x2c" identifier == number_literal) )) (goto_statement "goto LAB_0001600c;" goto statement_identifier ;)) (if_statement "if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }" { (expression_statement "*(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0" (pointer_expression "*(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1)" * (cast_expression "(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + iVar11 * 0x10 + 1)" ( (binary_expression "(int)puVar4 + iVar11 * 0x10 + 1" (binary_expression "(int)puVar4 + iVar11 * 0x10" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar11 * 0x10" identifier * number_literal)) + number_literal) )))) = number_literal) ;) (return_statement "return puVar4;" return identifier ;) })) (goto_statement "goto LAB_00016044;" goto statement_identifier ;) })) (expression_statement "iVar6 = (int)pcVar5[1];" (assignment_expression "iVar6 = (int)pcVar5[1]" identifier = (cast_expression "(int)pcVar5[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pcVar5[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar10 + 8;" (assignment_expression "puVar10 = puVar10 + 8" identifier = (binary_expression "puVar10 + 8" identifier + number_literal)) ;) (expression_statement "param_1 = pcVar5;" (assignment_expression "param_1 = pcVar5" identifier = identifier) ;) (if_statement "if (iVar6 != 0x67) break;" if (parenthesized_expression "(iVar6 != 0x67)" ( (binary_expression "iVar6 != 0x67" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00016194:\n      pcVar5 = param_1 + 2;" statement_identifier : (expression_statement "pcVar5 = param_1 + 2;" (assignment_expression "pcVar5 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;)) (expression_statement "uVar8 = 0x38;" (assignment_expression "uVar8 = 0x38" identifier = number_literal) ;) })) })) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (7 < (iVar6 - 0x30U & 0xff)) {\nLAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;\n    uVar8 = 0;\n    if (uVar3 < 0x21) {\n                    /* WARNING: Could not emulate address calculation at 0x0001623c */\n                    /* WARNING: Treating indirect jump as call */\n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(uint *)(puVar10 + 2) = uVar2;\n    *(undefined4 *)(puVar10 + 4) = 0;\n    goto LAB_0001615c;\n  }" if (parenthesized_expression "(7 < (iVar6 - 0x30U & 0xff))" ( (binary_expression "7 < (iVar6 - 0x30U & 0xff)" number_literal < (parenthesized_expression "(iVar6 - 0x30U & 0xff)" ( (binary_expression "iVar6 - 0x30U & 0xff" (binary_expression "iVar6 - 0x30U" identifier - number_literal) & number_literal) ))) )) (compound_statement "{\nLAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;\n    uVar8 = 0;\n    if (uVar3 < 0x21) {\n                    /* WARNING: Could not emulate address calculation at 0x0001623c */\n                    /* WARNING: Treating indirect jump as call */\n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(uint *)(puVar10 + 2) = uVar2;\n    *(undefined4 *)(puVar10 + 4) = 0;\n    goto LAB_0001615c;\n  }" { (labeled_statement "LAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;" statement_identifier : (expression_statement "uVar3 = iVar6 - 0x58U & 0xff;" (assignment_expression "uVar3 = iVar6 - 0x58U & 0xff" identifier = (binary_expression "iVar6 - 0x58U & 0xff" (binary_expression "iVar6 - 0x58U" identifier - number_literal) & number_literal)) ;)) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (uVar3 < 0x21) {\n                    /* WARNING: Could not emulate address calculation at 0x0001623c */\n                    /* WARNING: Treating indirect jump as call */\n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }" if (parenthesized_expression "(uVar3 < 0x21)" ( (binary_expression "uVar3 < 0x21" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x0001623c */\n                    /* WARNING: Treating indirect jump as call */\n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }" { comment comment (expression_statement "puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();" (assignment_expression "puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))()" identifier = (cast_expression "(undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))()" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0))" * (cast_expression "(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0))" ( (binary_expression "&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(puVar1 + uVar3 * 4 + 0x1e0)" * (cast_expression "(int *)(puVar1 + uVar3 * 4 + 0x1e0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + uVar3 * 4 + 0x1e0)" ( (binary_expression "puVar1 + uVar3 * 4 + 0x1e0" (binary_expression "puVar1 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return puVar4;" return identifier ;) })) (expression_statement "*(char *)puVar10 = (char)iVar9;" (assignment_expression "*(char *)puVar10 = (char)iVar9" (pointer_expression "*(char *)puVar10" * (cast_expression "(char *)puVar10" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(char)iVar9" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(undefined1 *)((int)puVar10 + 1) = 1;" (assignment_expression "*(undefined1 *)((int)puVar10 + 1) = 1" (pointer_expression "*(undefined1 *)((int)puVar10 + 1)" * (cast_expression "(undefined1 *)((int)puVar10 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 1)" ( (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(puVar10 + 2) = uVar2;" (assignment_expression "*(uint *)(puVar10 + 2) = uVar2" (pointer_expression "*(uint *)(puVar10 + 2)" * (cast_expression "(uint *)(puVar10 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 2)" ( (binary_expression "puVar10 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + 4) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + 4) = 0" (pointer_expression "*(undefined4 *)(puVar10 + 4)" * (cast_expression "(undefined4 *)(puVar10 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 4)" ( (binary_expression "puVar10 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0001615c;" goto statement_identifier ;) })) (do_statement "do {\n    uVar8 = (uVar8 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar8) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  } while ((iVar6 - 0x30U & 0xff) < 8);" do (compound_statement "{\n    uVar8 = (uVar8 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar8) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  }" { (expression_statement "uVar8 = (uVar8 * 8 + iVar6) - 0x30;" (assignment_expression "uVar8 = (uVar8 * 8 + iVar6) - 0x30" identifier = (binary_expression "(uVar8 * 8 + iVar6) - 0x30" (parenthesized_expression "(uVar8 * 8 + iVar6)" ( (binary_expression "uVar8 * 8 + iVar6" (binary_expression "uVar8 * 8" identifier * number_literal) + identifier) )) - number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (if_statement "if (0xfff < uVar8) goto LAB_00016044;" if (parenthesized_expression "(0xfff < uVar8)" ( (binary_expression "0xfff < uVar8" number_literal < identifier) )) (goto_statement "goto LAB_00016044;" goto statement_identifier ;)) (expression_statement "iVar6 = (int)*pcVar5;" (assignment_expression "iVar6 = (int)*pcVar5" identifier = (cast_expression "(int)*pcVar5" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar5" * identifier))) ;) }) while (parenthesized_expression "((iVar6 - 0x30U & 0xff) < 8)" ( (binary_expression "(iVar6 - 0x30U & 0xff) < 8" (parenthesized_expression "(iVar6 - 0x30U & 0xff)" ( (binary_expression "iVar6 - 0x30U & 0xff" (binary_expression "iVar6 - 0x30U" identifier - number_literal) & number_literal) )) < number_literal) )) ;) (if_statement "if ((uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(undefined4 *)(puVar10 + 2) = 0xfff;\n    uVar2 = 0xfff;\n    *(uint *)(puVar10 + 4) = uVar8;\n    uVar8 = 0xfff;\n    iVar9 = iVar6;\n    goto LAB_00016168;\n  }" if (parenthesized_expression "((uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c))))" ( (binary_expression "(uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))" (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) && (parenthesized_expression "((iVar6 == 0 || (iVar6 == 0x2c)))" ( (parenthesized_expression "(iVar6 == 0 || (iVar6 == 0x2c))" ( (binary_expression "iVar6 == 0 || (iVar6 == 0x2c)" (binary_expression "iVar6 == 0" identifier == number_literal) || (parenthesized_expression "(iVar6 == 0x2c)" ( (binary_expression "iVar6 == 0x2c" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(undefined4 *)(puVar10 + 2) = 0xfff;\n    uVar2 = 0xfff;\n    *(uint *)(puVar10 + 4) = uVar8;\n    uVar8 = 0xfff;\n    iVar9 = iVar6;\n    goto LAB_00016168;\n  }" { (expression_statement "*(char *)puVar10 = (char)iVar9;" (assignment_expression "*(char *)puVar10 = (char)iVar9" (pointer_expression "*(char *)puVar10" * (cast_expression "(char *)puVar10" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(char)iVar9" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(undefined1 *)((int)puVar10 + 1) = 1;" (assignment_expression "*(undefined1 *)((int)puVar10 + 1) = 1" (pointer_expression "*(undefined1 *)((int)puVar10 + 1)" * (cast_expression "(undefined1 *)((int)puVar10 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 1)" ( (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar10 + 2) = 0xfff;" (assignment_expression "*(undefined4 *)(puVar10 + 2) = 0xfff" (pointer_expression "*(undefined4 *)(puVar10 + 2)" * (cast_expression "(undefined4 *)(puVar10 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 2)" ( (binary_expression "puVar10 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar2 = 0xfff;" (assignment_expression "uVar2 = 0xfff" identifier = number_literal) ;) (expression_statement "*(uint *)(puVar10 + 4) = uVar8;" (assignment_expression "*(uint *)(puVar10 + 4) = uVar8" (pointer_expression "*(uint *)(puVar10 + 4)" * (cast_expression "(uint *)(puVar10 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 4)" ( (binary_expression "puVar10 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar8 = 0xfff;" (assignment_expression "uVar8 = 0xfff" identifier = number_literal) ;) (expression_statement "iVar9 = iVar6;" (assignment_expression "iVar9 = iVar6" identifier = identifier) ;) (goto_statement "goto LAB_00016168;" goto statement_identifier ;) })) (labeled_statement "LAB_00016044:\n  (*(code *)PTR_free_000323e8)(puVar4);" statement_identifier : (expression_statement "(*(code *)PTR_free_000323e8)(puVar4);" (call_expression "(*(code *)PTR_free_000323e8)(puVar4)" (parenthesized_expression "(*(code *)PTR_free_000323e8)" ( (pointer_expression "*(code *)PTR_free_000323e8" * (cast_expression "(code *)PTR_free_000323e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar4)" ( identifier ))) ;)) (return_statement "return (undefined2 *)0x0;" return (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit "mode_change * mode_compile(char *mode_string)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  uint uVar3;\n  mode_change *pmVar4;\n  char *pcVar5;\n  int iVar6;\n  size_t n;\n  uint uVar7;\n  int iVar8;\n  mode_change *pmVar9;\n  mode_t mVar10;\n  int iVar11;\n  int iVar12;\n  mode_t mVar13;\n  \n  uVar2 = (uint)*mode_string;\n  if ((uVar2 - 0x30 & 0xff) < 8) {\n    uVar7 = 0;\n    pcVar5 = mode_string;\n    do {\n      uVar7 = (uVar7 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar7) {\n        return (mode_change *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (mode_change *)0x0;\n    }\n    mVar10 = 0xfff;\n    if ((int)pcVar5 - (int)mode_string < 5) {\n      mVar10 = uVar7 & 0xc00 | 0x3ff;\n    }\n    pmVar4 = (mode_change *)xmalloc(0x20);\n    pmVar4[1].flag = '\0';\n    pmVar4->op = '=';\n    pmVar4->flag = '\x01';\n    pmVar4->value = uVar7;\n    pmVar4->mentioned = mVar10;\n    pmVar4->affected = 0xfff;\n    return pmVar4;\n  }\n  n = 0x10;\n  if (uVar2 != 0) {\n    uVar7 = 1;\n    pcVar5 = mode_string;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar7 = uVar7 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar7 = uVar7 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    n = uVar7 << 4;\n    if (((int)n < 0) || (uVar7 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  pmVar4 = (mode_change *)xmalloc(n);\n  puVar1 = PTR_s_operand_00032108;\n  iVar11 = 0;\nLAB_0001600c:\n  mVar10 = 0;\n  while( true ) {\n    while( true ) {\n      iVar8 = (int)*mode_string;\n      if (iVar8 != 0x61) break;\n      mVar10 = 0xfff;\n      mode_string = mode_string + 1;\n    }\n    if (iVar8 < 0x62) break;\n    if (iVar8 == 0x6f) {\n      mVar10 = mVar10 | 0x207;\n      mode_string = mode_string + 1;\n    }\n    else if (iVar8 == 0x75) {\n      mVar10 = mVar10 | 0x9c0;\n      mode_string = mode_string + 1;\n    }\n    else {\n      mVar10 = mVar10 | 0x438;\n      if (iVar8 != 0x67) goto LAB_00016044;\n      mode_string = mode_string + 1;\n    }\n  }\n  if (((iVar8 != 0x2d) && (iVar8 != 0x3d)) && (iVar8 != 0x2b)) goto LAB_00016044;\n  iVar6 = (int)mode_string[1];\n  iVar12 = iVar11 + 1;\n  pmVar9 = pmVar4 + iVar11;\n  if (iVar6 == 0x67) goto LAB_00016194;\n  while( true ) {\n    pcVar5 = mode_string + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = mode_string + 2;\n      mVar13 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = mode_string + 2;\n      mVar13 = 0x1c0;\n    }\n    while( true ) {\n      pmVar9->op = (char)iVar8;\n      pmVar9->flag = '\x03';\n      pmVar9->affected = mVar10;\n      pmVar9->value = mVar13;\n      iVar6 = (int)mode_string[2];\nLAB_0001615c:\n      iVar8 = iVar6;\n      if (mVar10 != 0) {\n        mVar13 = mVar13 & mVar10;\n      }\nLAB_00016168:\n      pmVar9->mentioned = mVar13;\n      if ((iVar8 != 0x2b) && (((byte)iVar8 & 0xef) != 0x2d)) {\n        mode_string = pcVar5 + 1;\n        iVar11 = iVar12;\n        if (iVar8 == 0x2c) goto LAB_0001600c;\n        if (iVar8 == 0) {\n          pmVar4[iVar12].flag = '\0';\n          return pmVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar12 = iVar12 + 1;\n      pmVar9 = pmVar9 + 1;\n      mode_string = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = mode_string + 2;\n      mVar13 = 0x38;\n    }\n  }\n  uVar2 = 0;\n  if (7 < (iVar6 - 0x30U & 0xff)) {\nLAB_00016224:\n    uVar2 = iVar6 - 0x58U & 0xff;\n    mVar13 = 0;\n    if (uVar2 < 0x21) {\n                    /* WARNING: Could not emulate address calculation at 0x0001623c */\n                    /* WARNING: Treating indirect jump as call */\n      pmVar4 = (mode_change *)(*(code *)(&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0)))();\n      return pmVar4;\n    }\n    pmVar9->op = (char)iVar8;\n    pmVar9->flag = '\x01';\n    pmVar9->affected = mVar10;\n    pmVar9->value = 0;\n    goto LAB_0001615c;\n  }\n  do {\n    uVar2 = (uVar2 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar2) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  } while ((iVar6 - 0x30U & 0xff) < 8);\n  if ((mVar10 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {\n    pmVar9->op = (char)iVar8;\n    pmVar9->flag = '\x01';\n    pmVar9->affected = 0xfff;\n    mVar10 = 0xfff;\n    pmVar9->value = uVar2;\n    mVar13 = 0xfff;\n    iVar8 = iVar6;\n    goto LAB_00016168;\n  }\nLAB_00016044:\n  (*(code *)PTR_free_000323e8)(pmVar4);\n  return (mode_change *)0x0;\n}\n\n" (function_definition "mode_change * mode_compile(char *mode_string)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  uint uVar3;\n  mode_change *pmVar4;\n  char *pcVar5;\n  int iVar6;\n  size_t n;\n  uint uVar7;\n  int iVar8;\n  mode_change *pmVar9;\n  mode_t mVar10;\n  int iVar11;\n  int iVar12;\n  mode_t mVar13;\n  \n  uVar2 = (uint)*mode_string;\n  if ((uVar2 - 0x30 & 0xff) < 8) {\n    uVar7 = 0;\n    pcVar5 = mode_string;\n    do {\n      uVar7 = (uVar7 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar7) {\n        return (mode_change *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (mode_change *)0x0;\n    }\n    mVar10 = 0xfff;\n    if ((int)pcVar5 - (int)mode_string < 5) {\n      mVar10 = uVar7 & 0xc00 | 0x3ff;\n    }\n    pmVar4 = (mode_change *)xmalloc(0x20);\n    pmVar4[1].flag = '\0';\n    pmVar4->op = '=';\n    pmVar4->flag = '\x01';\n    pmVar4->value = uVar7;\n    pmVar4->mentioned = mVar10;\n    pmVar4->affected = 0xfff;\n    return pmVar4;\n  }\n  n = 0x10;\n  if (uVar2 != 0) {\n    uVar7 = 1;\n    pcVar5 = mode_string;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar7 = uVar7 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar7 = uVar7 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    n = uVar7 << 4;\n    if (((int)n < 0) || (uVar7 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  pmVar4 = (mode_change *)xmalloc(n);\n  puVar1 = PTR_s_operand_00032108;\n  iVar11 = 0;\nLAB_0001600c:\n  mVar10 = 0;\n  while( true ) {\n    while( true ) {\n      iVar8 = (int)*mode_string;\n      if (iVar8 != 0x61) break;\n      mVar10 = 0xfff;\n      mode_string = mode_string + 1;\n    }\n    if (iVar8 < 0x62) break;\n    if (iVar8 == 0x6f) {\n      mVar10 = mVar10 | 0x207;\n      mode_string = mode_string + 1;\n    }\n    else if (iVar8 == 0x75) {\n      mVar10 = mVar10 | 0x9c0;\n      mode_string = mode_string + 1;\n    }\n    else {\n      mVar10 = mVar10 | 0x438;\n      if (iVar8 != 0x67) goto LAB_00016044;\n      mode_string = mode_string + 1;\n    }\n  }\n  if (((iVar8 != 0x2d) && (iVar8 != 0x3d)) && (iVar8 != 0x2b)) goto LAB_00016044;\n  iVar6 = (int)mode_string[1];\n  iVar12 = iVar11 + 1;\n  pmVar9 = pmVar4 + iVar11;\n  if (iVar6 == 0x67) goto LAB_00016194;\n  while( true ) {\n    pcVar5 = mode_string + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = mode_string + 2;\n      mVar13 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = mode_string + 2;\n      mVar13 = 0x1c0;\n    }\n    while( true ) {\n      pmVar9->op = (char)iVar8;\n      pmVar9->flag = '\x03';\n      pmVar9->affected = mVar10;\n      pmVar9->value = mVar13;\n      iVar6 = (int)mode_string[2];\nLAB_0001615c:\n      iVar8 = iVar6;\n      if (mVar10 != 0) {\n        mVar13 = mVar13 & mVar10;\n      }\nLAB_00016168:\n      pmVar9->mentioned = mVar13;\n      if ((iVar8 != 0x2b) && (((byte)iVar8 & 0xef) != 0x2d)) {\n        mode_string = pcVar5 + 1;\n        iVar11 = iVar12;\n        if (iVar8 == 0x2c) goto LAB_0001600c;\n        if (iVar8 == 0) {\n          pmVar4[iVar12].flag = '\0';\n          return pmVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar12 = iVar12 + 1;\n      pmVar9 = pmVar9 + 1;\n      mode_string = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = mode_string + 2;\n      mVar13 = 0x38;\n    }\n  }\n  uVar2 = 0;\n  if (7 < (iVar6 - 0x30U & 0xff)) {\nLAB_00016224:\n    uVar2 = iVar6 - 0x58U & 0xff;\n    mVar13 = 0;\n    if (uVar2 < 0x21) {\n                    /* WARNING: Could not emulate address calculation at 0x0001623c */\n                    /* WARNING: Treating indirect jump as call */\n      pmVar4 = (mode_change *)(*(code *)(&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0)))();\n      return pmVar4;\n    }\n    pmVar9->op = (char)iVar8;\n    pmVar9->flag = '\x01';\n    pmVar9->affected = mVar10;\n    pmVar9->value = 0;\n    goto LAB_0001615c;\n  }\n  do {\n    uVar2 = (uVar2 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar2) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  } while ((iVar6 - 0x30U & 0xff) < 8);\n  if ((mVar10 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {\n    pmVar9->op = (char)iVar8;\n    pmVar9->flag = '\x01';\n    pmVar9->affected = 0xfff;\n    mVar10 = 0xfff;\n    pmVar9->value = uVar2;\n    mVar13 = 0xfff;\n    iVar8 = iVar6;\n    goto LAB_00016168;\n  }\nLAB_00016044:\n  (*(code *)PTR_free_000323e8)(pmVar4);\n  return (mode_change *)0x0;\n}" type_identifier (pointer_declarator "* mode_compile(char *mode_string)" * (function_declarator "mode_compile(char *mode_string)" identifier (parameter_list "(char *mode_string)" ( (parameter_declaration "char *mode_string" primitive_type (pointer_declarator "*mode_string" * identifier)) )))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  uint uVar3;\n  mode_change *pmVar4;\n  char *pcVar5;\n  int iVar6;\n  size_t n;\n  uint uVar7;\n  int iVar8;\n  mode_change *pmVar9;\n  mode_t mVar10;\n  int iVar11;\n  int iVar12;\n  mode_t mVar13;\n  \n  uVar2 = (uint)*mode_string;\n  if ((uVar2 - 0x30 & 0xff) < 8) {\n    uVar7 = 0;\n    pcVar5 = mode_string;\n    do {\n      uVar7 = (uVar7 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar7) {\n        return (mode_change *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (mode_change *)0x0;\n    }\n    mVar10 = 0xfff;\n    if ((int)pcVar5 - (int)mode_string < 5) {\n      mVar10 = uVar7 & 0xc00 | 0x3ff;\n    }\n    pmVar4 = (mode_change *)xmalloc(0x20);\n    pmVar4[1].flag = '\0';\n    pmVar4->op = '=';\n    pmVar4->flag = '\x01';\n    pmVar4->value = uVar7;\n    pmVar4->mentioned = mVar10;\n    pmVar4->affected = 0xfff;\n    return pmVar4;\n  }\n  n = 0x10;\n  if (uVar2 != 0) {\n    uVar7 = 1;\n    pcVar5 = mode_string;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar7 = uVar7 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar7 = uVar7 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    n = uVar7 << 4;\n    if (((int)n < 0) || (uVar7 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  pmVar4 = (mode_change *)xmalloc(n);\n  puVar1 = PTR_s_operand_00032108;\n  iVar11 = 0;\nLAB_0001600c:\n  mVar10 = 0;\n  while( true ) {\n    while( true ) {\n      iVar8 = (int)*mode_string;\n      if (iVar8 != 0x61) break;\n      mVar10 = 0xfff;\n      mode_string = mode_string + 1;\n    }\n    if (iVar8 < 0x62) break;\n    if (iVar8 == 0x6f) {\n      mVar10 = mVar10 | 0x207;\n      mode_string = mode_string + 1;\n    }\n    else if (iVar8 == 0x75) {\n      mVar10 = mVar10 | 0x9c0;\n      mode_string = mode_string + 1;\n    }\n    else {\n      mVar10 = mVar10 | 0x438;\n      if (iVar8 != 0x67) goto LAB_00016044;\n      mode_string = mode_string + 1;\n    }\n  }\n  if (((iVar8 != 0x2d) && (iVar8 != 0x3d)) && (iVar8 != 0x2b)) goto LAB_00016044;\n  iVar6 = (int)mode_string[1];\n  iVar12 = iVar11 + 1;\n  pmVar9 = pmVar4 + iVar11;\n  if (iVar6 == 0x67) goto LAB_00016194;\n  while( true ) {\n    pcVar5 = mode_string + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = mode_string + 2;\n      mVar13 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = mode_string + 2;\n      mVar13 = 0x1c0;\n    }\n    while( true ) {\n      pmVar9->op = (char)iVar8;\n      pmVar9->flag = '\x03';\n      pmVar9->affected = mVar10;\n      pmVar9->value = mVar13;\n      iVar6 = (int)mode_string[2];\nLAB_0001615c:\n      iVar8 = iVar6;\n      if (mVar10 != 0) {\n        mVar13 = mVar13 & mVar10;\n      }\nLAB_00016168:\n      pmVar9->mentioned = mVar13;\n      if ((iVar8 != 0x2b) && (((byte)iVar8 & 0xef) != 0x2d)) {\n        mode_string = pcVar5 + 1;\n        iVar11 = iVar12;\n        if (iVar8 == 0x2c) goto LAB_0001600c;\n        if (iVar8 == 0) {\n          pmVar4[iVar12].flag = '\0';\n          return pmVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar12 = iVar12 + 1;\n      pmVar9 = pmVar9 + 1;\n      mode_string = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = mode_string + 2;\n      mVar13 = 0x38;\n    }\n  }\n  uVar2 = 0;\n  if (7 < (iVar6 - 0x30U & 0xff)) {\nLAB_00016224:\n    uVar2 = iVar6 - 0x58U & 0xff;\n    mVar13 = 0;\n    if (uVar2 < 0x21) {\n                    /* WARNING: Could not emulate address calculation at 0x0001623c */\n                    /* WARNING: Treating indirect jump as call */\n      pmVar4 = (mode_change *)(*(code *)(&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0)))();\n      return pmVar4;\n    }\n    pmVar9->op = (char)iVar8;\n    pmVar9->flag = '\x01';\n    pmVar9->affected = mVar10;\n    pmVar9->value = 0;\n    goto LAB_0001615c;\n  }\n  do {\n    uVar2 = (uVar2 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar2) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  } while ((iVar6 - 0x30U & 0xff) < 8);\n  if ((mVar10 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {\n    pmVar9->op = (char)iVar8;\n    pmVar9->flag = '\x01';\n    pmVar9->affected = 0xfff;\n    mVar10 = 0xfff;\n    pmVar9->value = uVar2;\n    mVar13 = 0xfff;\n    iVar8 = iVar6;\n    goto LAB_00016168;\n  }\nLAB_00016044:\n  (*(code *)PTR_free_000323e8)(pmVar4);\n  return (mode_change *)0x0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "mode_change *pmVar4;" type_identifier (pointer_declarator "*pmVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "size_t n;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "mode_change *pmVar9;" type_identifier (pointer_declarator "*pmVar9" * identifier) ;) (declaration "mode_t mVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "mode_t mVar13;" type_identifier identifier ;) (expression_statement "uVar2 = (uint)*mode_string;" (assignment_expression "uVar2 = (uint)*mode_string" identifier = (binary_expression "(uint)*mode_string" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if ((uVar2 - 0x30 & 0xff) < 8) {\n    uVar7 = 0;\n    pcVar5 = mode_string;\n    do {\n      uVar7 = (uVar7 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar7) {\n        return (mode_change *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (mode_change *)0x0;\n    }\n    mVar10 = 0xfff;\n    if ((int)pcVar5 - (int)mode_string < 5) {\n      mVar10 = uVar7 & 0xc00 | 0x3ff;\n    }\n    pmVar4 = (mode_change *)xmalloc(0x20);\n    pmVar4[1].flag = '\0';\n    pmVar4->op = '=';\n    pmVar4->flag = '\x01';\n    pmVar4->value = uVar7;\n    pmVar4->mentioned = mVar10;\n    pmVar4->affected = 0xfff;\n    return pmVar4;\n  }" if (parenthesized_expression "((uVar2 - 0x30 & 0xff) < 8)" ( (binary_expression "(uVar2 - 0x30 & 0xff) < 8" (parenthesized_expression "(uVar2 - 0x30 & 0xff)" ( (binary_expression "uVar2 - 0x30 & 0xff" (binary_expression "uVar2 - 0x30" identifier - number_literal) & number_literal) )) < number_literal) )) (compound_statement "{\n    uVar7 = 0;\n    pcVar5 = mode_string;\n    do {\n      uVar7 = (uVar7 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar7) {\n        return (mode_change *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (mode_change *)0x0;\n    }\n    mVar10 = 0xfff;\n    if ((int)pcVar5 - (int)mode_string < 5) {\n      mVar10 = uVar7 & 0xc00 | 0x3ff;\n    }\n    pmVar4 = (mode_change *)xmalloc(0x20);\n    pmVar4[1].flag = '\0';\n    pmVar4->op = '=';\n    pmVar4->flag = '\x01';\n    pmVar4->value = uVar7;\n    pmVar4->mentioned = mVar10;\n    pmVar4->affected = 0xfff;\n    return pmVar4;\n  }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "pcVar5 = mode_string;" (assignment_expression "pcVar5 = mode_string" identifier = identifier) ;) (do_statement "do {\n      uVar7 = (uVar7 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar7) {\n        return (mode_change *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);" do (compound_statement "{\n      uVar7 = (uVar7 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar7) {\n        return (mode_change *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    }" { (expression_statement "uVar7 = (uVar7 * 8 + uVar2) - 0x30;" (assignment_expression "uVar7 = (uVar7 * 8 + uVar2) - 0x30" identifier = (binary_expression "(uVar7 * 8 + uVar2) - 0x30" (parenthesized_expression "(uVar7 * 8 + uVar2)" ( (binary_expression "uVar7 * 8 + uVar2" (binary_expression "uVar7 * 8" identifier * number_literal) + identifier) )) - number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (if_statement "if (0xfff < uVar7) {\n        return (mode_change *)0x0;\n      }" if (parenthesized_expression "(0xfff < uVar7)" ( (binary_expression "0xfff < uVar7" number_literal < identifier) )) (compound_statement "{\n        return (mode_change *)0x0;\n      }" { (return_statement "return (mode_change *)0x0;" return (cast_expression "(mode_change *)0x0" ( (type_descriptor "mode_change *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar2 = (uint)*pcVar5;" (assignment_expression "uVar2 = (uint)*pcVar5" identifier = (binary_expression "(uint)*pcVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) while (parenthesized_expression "((uVar2 - 0x30 & 0xff) < 8)" ( (binary_expression "(uVar2 - 0x30 & 0xff) < 8" (parenthesized_expression "(uVar2 - 0x30 & 0xff)" ( (binary_expression "uVar2 - 0x30 & 0xff" (binary_expression "uVar2 - 0x30" identifier - number_literal) & number_literal) )) < number_literal) )) ;) (if_statement "if (uVar2 != 0) {\n      return (mode_change *)0x0;\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      return (mode_change *)0x0;\n    }" { (return_statement "return (mode_change *)0x0;" return (cast_expression "(mode_change *)0x0" ( (type_descriptor "mode_change *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "mVar10 = 0xfff;" (assignment_expression "mVar10 = 0xfff" identifier = number_literal) ;) (if_statement "if ((int)pcVar5 - (int)mode_string < 5) {\n      mVar10 = uVar7 & 0xc00 | 0x3ff;\n    }" if (parenthesized_expression "((int)pcVar5 - (int)mode_string < 5)" ( (binary_expression "(int)pcVar5 - (int)mode_string < 5" (binary_expression "(int)pcVar5 - (int)mode_string" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)mode_string" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal) )) (compound_statement "{\n      mVar10 = uVar7 & 0xc00 | 0x3ff;\n    }" { (expression_statement "mVar10 = uVar7 & 0xc00 | 0x3ff;" (assignment_expression "mVar10 = uVar7 & 0xc00 | 0x3ff" identifier = (binary_expression "uVar7 & 0xc00 | 0x3ff" (binary_expression "uVar7 & 0xc00" identifier & number_literal) | number_literal)) ;) })) (expression_statement "pmVar4 = (mode_change *)xmalloc(0x20);" (assignment_expression "pmVar4 = (mode_change *)xmalloc(0x20)" identifier = (cast_expression "(mode_change *)xmalloc(0x20)" ( (type_descriptor "mode_change *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "pmVar4[1].flag = '\0';" (assignment_expression "pmVar4[1].flag = '\0'" (field_expression "pmVar4[1].flag" (subscript_expression "pmVar4[1]" identifier [ number_literal ]) . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pmVar4->op = '=';" (assignment_expression "pmVar4->op = '='" (field_expression "pmVar4->op" identifier -> field_identifier) = (char_literal "'='" ' character ')) ;) (expression_statement "pmVar4->flag = '\x01';" (assignment_expression "pmVar4->flag = '\x01'" (field_expression "pmVar4->flag" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "pmVar4->value = uVar7;" (assignment_expression "pmVar4->value = uVar7" (field_expression "pmVar4->value" identifier -> field_identifier) = identifier) ;) (expression_statement "pmVar4->mentioned = mVar10;" (assignment_expression "pmVar4->mentioned = mVar10" (field_expression "pmVar4->mentioned" identifier -> field_identifier) = identifier) ;) (expression_statement "pmVar4->affected = 0xfff;" (assignment_expression "pmVar4->affected = 0xfff" (field_expression "pmVar4->affected" identifier -> field_identifier) = number_literal) ;) (return_statement "return pmVar4;" return identifier ;) })) (expression_statement "n = 0x10;" (assignment_expression "n = 0x10" identifier = number_literal) ;) (if_statement "if (uVar2 != 0) {\n    uVar7 = 1;\n    pcVar5 = mode_string;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar7 = uVar7 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar7 = uVar7 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    n = uVar7 << 4;\n    if (((int)n < 0) || (uVar7 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar7 = 1;\n    pcVar5 = mode_string;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar7 = uVar7 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar7 = uVar7 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    n = uVar7 << 4;\n    if (((int)n < 0) || (uVar7 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (expression_statement "pcVar5 = mode_string;" (assignment_expression "pcVar5 = mode_string" identifier = identifier) ;) (do_statement "do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar7 = uVar7 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar7 = uVar7 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);" do (compound_statement "{\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar7 = uVar7 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar7 = uVar7 + (uVar3 == 0x2d);\n    }" { (while_statement "while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar7 = uVar7 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }" while (parenthesized_expression "(uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b)" ( (comma_expression "uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b" (assignment_expression "uVar3 = uVar2 & 0xffffffef" identifier = (binary_expression "uVar2 & 0xffffffef" identifier & number_literal)) , (binary_expression "uVar2 == 0x2b" identifier == number_literal)) )) (compound_statement "{\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar7 = uVar7 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }" { (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = (uint)*pcVar5;" (assignment_expression "uVar2 = (uint)*pcVar5" identifier = (binary_expression "(uint)*pcVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (if_statement "if (uVar2 == 0) goto LAB_00015fc8;" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00015fc8;" goto statement_identifier ;)) })) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = (uint)*pcVar5;" (assignment_expression "uVar2 = (uint)*pcVar5" identifier = (binary_expression "(uint)*pcVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar7 = uVar7 + (uVar3 == 0x2d);" (assignment_expression "uVar7 = uVar7 + (uVar3 == 0x2d)" identifier = (binary_expression "uVar7 + (uVar3 == 0x2d)" identifier + (parenthesized_expression "(uVar3 == 0x2d)" ( (binary_expression "uVar3 == 0x2d" identifier == number_literal) )))) ;) }) while (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) ;) (labeled_statement "LAB_00015fc8:\n    n = uVar7 << 4;" statement_identifier : (expression_statement "n = uVar7 << 4;" (assignment_expression "n = uVar7 << 4" identifier = (binary_expression "uVar7 << 4" identifier << number_literal)) ;)) (if_statement "if (((int)n < 0) || (uVar7 >> 0x1c != 0)) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }" if (parenthesized_expression "(((int)n < 0) || (uVar7 >> 0x1c != 0))" ( (binary_expression "((int)n < 0) || (uVar7 >> 0x1c != 0)" (parenthesized_expression "((int)n < 0)" ( (binary_expression "(int)n < 0" (cast_expression "(int)n" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(uVar7 >> 0x1c != 0)" ( (binary_expression "uVar7 >> 0x1c != 0" (binary_expression "uVar7 >> 0x1c" identifier >> number_literal) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }" { comment (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) })) })) (expression_statement "pmVar4 = (mode_change *)xmalloc(n);" (assignment_expression "pmVar4 = (mode_change *)xmalloc(n)" identifier = (cast_expression "(mode_change *)xmalloc(n)" ( (type_descriptor "mode_change *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(n)" identifier (argument_list "(n)" ( identifier ))))) ;) (expression_statement "puVar1 = PTR_s_operand_00032108;" (assignment_expression "puVar1 = PTR_s_operand_00032108" identifier = identifier) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0001600c:\n  mVar10 = 0;" statement_identifier : (expression_statement "mVar10 = 0;" (assignment_expression "mVar10 = 0" identifier = number_literal) ;)) (while_statement "while( true ) {\n    while( true ) {\n      iVar8 = (int)*mode_string;\n      if (iVar8 != 0x61) break;\n      mVar10 = 0xfff;\n      mode_string = mode_string + 1;\n    }\n    if (iVar8 < 0x62) break;\n    if (iVar8 == 0x6f) {\n      mVar10 = mVar10 | 0x207;\n      mode_string = mode_string + 1;\n    }\n    else if (iVar8 == 0x75) {\n      mVar10 = mVar10 | 0x9c0;\n      mode_string = mode_string + 1;\n    }\n    else {\n      mVar10 = mVar10 | 0x438;\n      if (iVar8 != 0x67) goto LAB_00016044;\n      mode_string = mode_string + 1;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    while( true ) {\n      iVar8 = (int)*mode_string;\n      if (iVar8 != 0x61) break;\n      mVar10 = 0xfff;\n      mode_string = mode_string + 1;\n    }\n    if (iVar8 < 0x62) break;\n    if (iVar8 == 0x6f) {\n      mVar10 = mVar10 | 0x207;\n      mode_string = mode_string + 1;\n    }\n    else if (iVar8 == 0x75) {\n      mVar10 = mVar10 | 0x9c0;\n      mode_string = mode_string + 1;\n    }\n    else {\n      mVar10 = mVar10 | 0x438;\n      if (iVar8 != 0x67) goto LAB_00016044;\n      mode_string = mode_string + 1;\n    }\n  }" { (while_statement "while( true ) {\n      iVar8 = (int)*mode_string;\n      if (iVar8 != 0x61) break;\n      mVar10 = 0xfff;\n      mode_string = mode_string + 1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar8 = (int)*mode_string;\n      if (iVar8 != 0x61) break;\n      mVar10 = 0xfff;\n      mode_string = mode_string + 1;\n    }" { (expression_statement "iVar8 = (int)*mode_string;" (assignment_expression "iVar8 = (int)*mode_string" identifier = (cast_expression "(int)*mode_string" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*mode_string" * identifier))) ;) (if_statement "if (iVar8 != 0x61) break;" if (parenthesized_expression "(iVar8 != 0x61)" ( (binary_expression "iVar8 != 0x61" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "mVar10 = 0xfff;" (assignment_expression "mVar10 = 0xfff" identifier = number_literal) ;) (expression_statement "mode_string = mode_string + 1;" (assignment_expression "mode_string = mode_string + 1" identifier = (binary_expression "mode_string + 1" identifier + number_literal)) ;) })) (if_statement "if (iVar8 < 0x62) break;" if (parenthesized_expression "(iVar8 < 0x62)" ( (binary_expression "iVar8 < 0x62" identifier < number_literal) )) (break_statement "break;" break ;)) (if_statement "if (iVar8 == 0x6f) {\n      mVar10 = mVar10 | 0x207;\n      mode_string = mode_string + 1;\n    }\n    else if (iVar8 == 0x75) {\n      mVar10 = mVar10 | 0x9c0;\n      mode_string = mode_string + 1;\n    }\n    else {\n      mVar10 = mVar10 | 0x438;\n      if (iVar8 != 0x67) goto LAB_00016044;\n      mode_string = mode_string + 1;\n    }" if (parenthesized_expression "(iVar8 == 0x6f)" ( (binary_expression "iVar8 == 0x6f" identifier == number_literal) )) (compound_statement "{\n      mVar10 = mVar10 | 0x207;\n      mode_string = mode_string + 1;\n    }" { (expression_statement "mVar10 = mVar10 | 0x207;" (assignment_expression "mVar10 = mVar10 | 0x207" identifier = (binary_expression "mVar10 | 0x207" identifier | number_literal)) ;) (expression_statement "mode_string = mode_string + 1;" (assignment_expression "mode_string = mode_string + 1" identifier = (binary_expression "mode_string + 1" identifier + number_literal)) ;) }) (else_clause "else if (iVar8 == 0x75) {\n      mVar10 = mVar10 | 0x9c0;\n      mode_string = mode_string + 1;\n    }\n    else {\n      mVar10 = mVar10 | 0x438;\n      if (iVar8 != 0x67) goto LAB_00016044;\n      mode_string = mode_string + 1;\n    }" else (if_statement "if (iVar8 == 0x75) {\n      mVar10 = mVar10 | 0x9c0;\n      mode_string = mode_string + 1;\n    }\n    else {\n      mVar10 = mVar10 | 0x438;\n      if (iVar8 != 0x67) goto LAB_00016044;\n      mode_string = mode_string + 1;\n    }" if (parenthesized_expression "(iVar8 == 0x75)" ( (binary_expression "iVar8 == 0x75" identifier == number_literal) )) (compound_statement "{\n      mVar10 = mVar10 | 0x9c0;\n      mode_string = mode_string + 1;\n    }" { (expression_statement "mVar10 = mVar10 | 0x9c0;" (assignment_expression "mVar10 = mVar10 | 0x9c0" identifier = (binary_expression "mVar10 | 0x9c0" identifier | number_literal)) ;) (expression_statement "mode_string = mode_string + 1;" (assignment_expression "mode_string = mode_string + 1" identifier = (binary_expression "mode_string + 1" identifier + number_literal)) ;) }) (else_clause "else {\n      mVar10 = mVar10 | 0x438;\n      if (iVar8 != 0x67) goto LAB_00016044;\n      mode_string = mode_string + 1;\n    }" else (compound_statement "{\n      mVar10 = mVar10 | 0x438;\n      if (iVar8 != 0x67) goto LAB_00016044;\n      mode_string = mode_string + 1;\n    }" { (expression_statement "mVar10 = mVar10 | 0x438;" (assignment_expression "mVar10 = mVar10 | 0x438" identifier = (binary_expression "mVar10 | 0x438" identifier | number_literal)) ;) (if_statement "if (iVar8 != 0x67) goto LAB_00016044;" if (parenthesized_expression "(iVar8 != 0x67)" ( (binary_expression "iVar8 != 0x67" identifier != number_literal) )) (goto_statement "goto LAB_00016044;" goto statement_identifier ;)) (expression_statement "mode_string = mode_string + 1;" (assignment_expression "mode_string = mode_string + 1" identifier = (binary_expression "mode_string + 1" identifier + number_literal)) ;) }))))) })) (if_statement "if (((iVar8 != 0x2d) && (iVar8 != 0x3d)) && (iVar8 != 0x2b)) goto LAB_00016044;" if (parenthesized_expression "(((iVar8 != 0x2d) && (iVar8 != 0x3d)) && (iVar8 != 0x2b))" ( (binary_expression "((iVar8 != 0x2d) && (iVar8 != 0x3d)) && (iVar8 != 0x2b)" (parenthesized_expression "((iVar8 != 0x2d) && (iVar8 != 0x3d))" ( (binary_expression "(iVar8 != 0x2d) && (iVar8 != 0x3d)" (parenthesized_expression "(iVar8 != 0x2d)" ( (binary_expression "iVar8 != 0x2d" identifier != number_literal) )) && (parenthesized_expression "(iVar8 != 0x3d)" ( (binary_expression "iVar8 != 0x3d" identifier != number_literal) ))) )) && (parenthesized_expression "(iVar8 != 0x2b)" ( (binary_expression "iVar8 != 0x2b" identifier != number_literal) ))) )) (goto_statement "goto LAB_00016044;" goto statement_identifier ;)) (expression_statement "iVar6 = (int)mode_string[1];" (assignment_expression "iVar6 = (int)mode_string[1]" identifier = (cast_expression "(int)mode_string[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "mode_string[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar12 = iVar11 + 1;" (assignment_expression "iVar12 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "pmVar9 = pmVar4 + iVar11;" (assignment_expression "pmVar9 = pmVar4 + iVar11" identifier = (binary_expression "pmVar4 + iVar11" identifier + identifier)) ;) (if_statement "if (iVar6 == 0x67) goto LAB_00016194;" if (parenthesized_expression "(iVar6 == 0x67)" ( (binary_expression "iVar6 == 0x67" identifier == number_literal) )) (goto_statement "goto LAB_00016194;" goto statement_identifier ;)) (while_statement "while( true ) {\n    pcVar5 = mode_string + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = mode_string + 2;\n      mVar13 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = mode_string + 2;\n      mVar13 = 0x1c0;\n    }\n    while( true ) {\n      pmVar9->op = (char)iVar8;\n      pmVar9->flag = '\x03';\n      pmVar9->affected = mVar10;\n      pmVar9->value = mVar13;\n      iVar6 = (int)mode_string[2];\nLAB_0001615c:\n      iVar8 = iVar6;\n      if (mVar10 != 0) {\n        mVar13 = mVar13 & mVar10;\n      }\nLAB_00016168:\n      pmVar9->mentioned = mVar13;\n      if ((iVar8 != 0x2b) && (((byte)iVar8 & 0xef) != 0x2d)) {\n        mode_string = pcVar5 + 1;\n        iVar11 = iVar12;\n        if (iVar8 == 0x2c) goto LAB_0001600c;\n        if (iVar8 == 0) {\n          pmVar4[iVar12].flag = '\0';\n          return pmVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar12 = iVar12 + 1;\n      pmVar9 = pmVar9 + 1;\n      mode_string = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = mode_string + 2;\n      mVar13 = 0x38;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    pcVar5 = mode_string + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = mode_string + 2;\n      mVar13 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = mode_string + 2;\n      mVar13 = 0x1c0;\n    }\n    while( true ) {\n      pmVar9->op = (char)iVar8;\n      pmVar9->flag = '\x03';\n      pmVar9->affected = mVar10;\n      pmVar9->value = mVar13;\n      iVar6 = (int)mode_string[2];\nLAB_0001615c:\n      iVar8 = iVar6;\n      if (mVar10 != 0) {\n        mVar13 = mVar13 & mVar10;\n      }\nLAB_00016168:\n      pmVar9->mentioned = mVar13;\n      if ((iVar8 != 0x2b) && (((byte)iVar8 & 0xef) != 0x2d)) {\n        mode_string = pcVar5 + 1;\n        iVar11 = iVar12;\n        if (iVar8 == 0x2c) goto LAB_0001600c;\n        if (iVar8 == 0) {\n          pmVar4[iVar12].flag = '\0';\n          return pmVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar12 = iVar12 + 1;\n      pmVar9 = pmVar9 + 1;\n      mode_string = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = mode_string + 2;\n      mVar13 = 0x38;\n    }\n  }" { (expression_statement "pcVar5 = mode_string + 1;" (assignment_expression "pcVar5 = mode_string + 1" identifier = (binary_expression "mode_string + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 < 0x68) break;" if (parenthesized_expression "(iVar6 < 0x68)" ( (binary_expression "iVar6 < 0x68" identifier < number_literal) )) (break_statement "break;" break ;)) (if_statement "if (iVar6 == 0x6f) {\n      pcVar5 = mode_string + 2;\n      mVar13 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = mode_string + 2;\n      mVar13 = 0x1c0;\n    }" if (parenthesized_expression "(iVar6 == 0x6f)" ( (binary_expression "iVar6 == 0x6f" identifier == number_literal) )) (compound_statement "{\n      pcVar5 = mode_string + 2;\n      mVar13 = 7;\n    }" { (expression_statement "pcVar5 = mode_string + 2;" (assignment_expression "pcVar5 = mode_string + 2" identifier = (binary_expression "mode_string + 2" identifier + number_literal)) ;) (expression_statement "mVar13 = 7;" (assignment_expression "mVar13 = 7" identifier = number_literal) ;) }) (else_clause "else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = mode_string + 2;\n      mVar13 = 0x1c0;\n    }" else (compound_statement "{\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = mode_string + 2;\n      mVar13 = 0x1c0;\n    }" { (if_statement "if (iVar6 != 0x75) goto LAB_00016224;" if (parenthesized_expression "(iVar6 != 0x75)" ( (binary_expression "iVar6 != 0x75" identifier != number_literal) )) (goto_statement "goto LAB_00016224;" goto statement_identifier ;)) (expression_statement "pcVar5 = mode_string + 2;" (assignment_expression "pcVar5 = mode_string + 2" identifier = (binary_expression "mode_string + 2" identifier + number_literal)) ;) (expression_statement "mVar13 = 0x1c0;" (assignment_expression "mVar13 = 0x1c0" identifier = number_literal) ;) }))) (while_statement "while( true ) {\n      pmVar9->op = (char)iVar8;\n      pmVar9->flag = '\x03';\n      pmVar9->affected = mVar10;\n      pmVar9->value = mVar13;\n      iVar6 = (int)mode_string[2];\nLAB_0001615c:\n      iVar8 = iVar6;\n      if (mVar10 != 0) {\n        mVar13 = mVar13 & mVar10;\n      }\nLAB_00016168:\n      pmVar9->mentioned = mVar13;\n      if ((iVar8 != 0x2b) && (((byte)iVar8 & 0xef) != 0x2d)) {\n        mode_string = pcVar5 + 1;\n        iVar11 = iVar12;\n        if (iVar8 == 0x2c) goto LAB_0001600c;\n        if (iVar8 == 0) {\n          pmVar4[iVar12].flag = '\0';\n          return pmVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar12 = iVar12 + 1;\n      pmVar9 = pmVar9 + 1;\n      mode_string = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = mode_string + 2;\n      mVar13 = 0x38;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      pmVar9->op = (char)iVar8;\n      pmVar9->flag = '\x03';\n      pmVar9->affected = mVar10;\n      pmVar9->value = mVar13;\n      iVar6 = (int)mode_string[2];\nLAB_0001615c:\n      iVar8 = iVar6;\n      if (mVar10 != 0) {\n        mVar13 = mVar13 & mVar10;\n      }\nLAB_00016168:\n      pmVar9->mentioned = mVar13;\n      if ((iVar8 != 0x2b) && (((byte)iVar8 & 0xef) != 0x2d)) {\n        mode_string = pcVar5 + 1;\n        iVar11 = iVar12;\n        if (iVar8 == 0x2c) goto LAB_0001600c;\n        if (iVar8 == 0) {\n          pmVar4[iVar12].flag = '\0';\n          return pmVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar12 = iVar12 + 1;\n      pmVar9 = pmVar9 + 1;\n      mode_string = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = mode_string + 2;\n      mVar13 = 0x38;\n    }" { (expression_statement "pmVar9->op = (char)iVar8;" (assignment_expression "pmVar9->op = (char)iVar8" (field_expression "pmVar9->op" identifier -> field_identifier) = (cast_expression "(char)iVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pmVar9->flag = '\x03';" (assignment_expression "pmVar9->flag = '\x03'" (field_expression "pmVar9->flag" identifier -> field_identifier) = (char_literal "'\x03'" ' escape_sequence ')) ;) (expression_statement "pmVar9->affected = mVar10;" (assignment_expression "pmVar9->affected = mVar10" (field_expression "pmVar9->affected" identifier -> field_identifier) = identifier) ;) (expression_statement "pmVar9->value = mVar13;" (assignment_expression "pmVar9->value = mVar13" (field_expression "pmVar9->value" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar6 = (int)mode_string[2];" (assignment_expression "iVar6 = (int)mode_string[2]" identifier = (cast_expression "(int)mode_string[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "mode_string[2]" identifier [ number_literal ]))) ;) (labeled_statement "LAB_0001615c:\n      iVar8 = iVar6;" statement_identifier : (expression_statement "iVar8 = iVar6;" (assignment_expression "iVar8 = iVar6" identifier = identifier) ;)) (if_statement "if (mVar10 != 0) {\n        mVar13 = mVar13 & mVar10;\n      }" if (parenthesized_expression "(mVar10 != 0)" ( (binary_expression "mVar10 != 0" identifier != number_literal) )) (compound_statement "{\n        mVar13 = mVar13 & mVar10;\n      }" { (expression_statement "mVar13 = mVar13 & mVar10;" (assignment_expression "mVar13 = mVar13 & mVar10" identifier = (binary_expression "mVar13 & mVar10" identifier & identifier)) ;) })) (labeled_statement "LAB_00016168:\n      pmVar9->mentioned = mVar13;" statement_identifier : (expression_statement "pmVar9->mentioned = mVar13;" (assignment_expression "pmVar9->mentioned = mVar13" (field_expression "pmVar9->mentioned" identifier -> field_identifier) = identifier) ;)) (if_statement "if ((iVar8 != 0x2b) && (((byte)iVar8 & 0xef) != 0x2d)) {\n        mode_string = pcVar5 + 1;\n        iVar11 = iVar12;\n        if (iVar8 == 0x2c) goto LAB_0001600c;\n        if (iVar8 == 0) {\n          pmVar4[iVar12].flag = '\0';\n          return pmVar4;\n        }\n        goto LAB_00016044;\n      }" if (parenthesized_expression "((iVar8 != 0x2b) && (((byte)iVar8 & 0xef) != 0x2d))" ( (binary_expression "(iVar8 != 0x2b) && (((byte)iVar8 & 0xef) != 0x2d)" (parenthesized_expression "(iVar8 != 0x2b)" ( (binary_expression "iVar8 != 0x2b" identifier != number_literal) )) && (parenthesized_expression "(((byte)iVar8 & 0xef) != 0x2d)" ( (binary_expression "((byte)iVar8 & 0xef) != 0x2d" (parenthesized_expression "((byte)iVar8 & 0xef)" ( (binary_expression "(byte)iVar8 & 0xef" (cast_expression "(byte)iVar8" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        mode_string = pcVar5 + 1;\n        iVar11 = iVar12;\n        if (iVar8 == 0x2c) goto LAB_0001600c;\n        if (iVar8 == 0) {\n          pmVar4[iVar12].flag = '\0';\n          return pmVar4;\n        }\n        goto LAB_00016044;\n      }" { (expression_statement "mode_string = pcVar5 + 1;" (assignment_expression "mode_string = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar11 = iVar12;" (assignment_expression "iVar11 = iVar12" identifier = identifier) ;) (if_statement "if (iVar8 == 0x2c) goto LAB_0001600c;" if (parenthesized_expression "(iVar8 == 0x2c)" ( (binary_expression "iVar8 == 0x2c" identifier == number_literal) )) (goto_statement "goto LAB_0001600c;" goto statement_identifier ;)) (if_statement "if (iVar8 == 0) {\n          pmVar4[iVar12].flag = '\0';\n          return pmVar4;\n        }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n          pmVar4[iVar12].flag = '\0';\n          return pmVar4;\n        }" { (expression_statement "pmVar4[iVar12].flag = '\0';" (assignment_expression "pmVar4[iVar12].flag = '\0'" (field_expression "pmVar4[iVar12].flag" (subscript_expression "pmVar4[iVar12]" identifier [ identifier ]) . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return pmVar4;" return identifier ;) })) (goto_statement "goto LAB_00016044;" goto statement_identifier ;) })) (expression_statement "iVar6 = (int)pcVar5[1];" (assignment_expression "iVar6 = (int)pcVar5[1]" identifier = (cast_expression "(int)pcVar5[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pcVar5[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "pmVar9 = pmVar9 + 1;" (assignment_expression "pmVar9 = pmVar9 + 1" identifier = (binary_expression "pmVar9 + 1" identifier + number_literal)) ;) (expression_statement "mode_string = pcVar5;" (assignment_expression "mode_string = pcVar5" identifier = identifier) ;) (if_statement "if (iVar6 != 0x67) break;" if (parenthesized_expression "(iVar6 != 0x67)" ( (binary_expression "iVar6 != 0x67" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00016194:\n      pcVar5 = mode_string + 2;" statement_identifier : (expression_statement "pcVar5 = mode_string + 2;" (assignment_expression "pcVar5 = mode_string + 2" identifier = (binary_expression "mode_string + 2" identifier + number_literal)) ;)) (expression_statement "mVar13 = 0x38;" (assignment_expression "mVar13 = 0x38" identifier = number_literal) ;) })) })) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (7 < (iVar6 - 0x30U & 0xff)) {\nLAB_00016224:\n    uVar2 = iVar6 - 0x58U & 0xff;\n    mVar13 = 0;\n    if (uVar2 < 0x21) {\n                    /* WARNING: Could not emulate address calculation at 0x0001623c */\n                    /* WARNING: Treating indirect jump as call */\n      pmVar4 = (mode_change *)(*(code *)(&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0)))();\n      return pmVar4;\n    }\n    pmVar9->op = (char)iVar8;\n    pmVar9->flag = '\x01';\n    pmVar9->affected = mVar10;\n    pmVar9->value = 0;\n    goto LAB_0001615c;\n  }" if (parenthesized_expression "(7 < (iVar6 - 0x30U & 0xff))" ( (binary_expression "7 < (iVar6 - 0x30U & 0xff)" number_literal < (parenthesized_expression "(iVar6 - 0x30U & 0xff)" ( (binary_expression "iVar6 - 0x30U & 0xff" (binary_expression "iVar6 - 0x30U" identifier - number_literal) & number_literal) ))) )) (compound_statement "{\nLAB_00016224:\n    uVar2 = iVar6 - 0x58U & 0xff;\n    mVar13 = 0;\n    if (uVar2 < 0x21) {\n                    /* WARNING: Could not emulate address calculation at 0x0001623c */\n                    /* WARNING: Treating indirect jump as call */\n      pmVar4 = (mode_change *)(*(code *)(&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0)))();\n      return pmVar4;\n    }\n    pmVar9->op = (char)iVar8;\n    pmVar9->flag = '\x01';\n    pmVar9->affected = mVar10;\n    pmVar9->value = 0;\n    goto LAB_0001615c;\n  }" { (labeled_statement "LAB_00016224:\n    uVar2 = iVar6 - 0x58U & 0xff;" statement_identifier : (expression_statement "uVar2 = iVar6 - 0x58U & 0xff;" (assignment_expression "uVar2 = iVar6 - 0x58U & 0xff" identifier = (binary_expression "iVar6 - 0x58U & 0xff" (binary_expression "iVar6 - 0x58U" identifier - number_literal) & number_literal)) ;)) (expression_statement "mVar13 = 0;" (assignment_expression "mVar13 = 0" identifier = number_literal) ;) (if_statement "if (uVar2 < 0x21) {\n                    /* WARNING: Could not emulate address calculation at 0x0001623c */\n                    /* WARNING: Treating indirect jump as call */\n      pmVar4 = (mode_change *)(*(code *)(&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0)))();\n      return pmVar4;\n    }" if (parenthesized_expression "(uVar2 < 0x21)" ( (binary_expression "uVar2 < 0x21" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x0001623c */\n                    /* WARNING: Treating indirect jump as call */\n      pmVar4 = (mode_change *)(*(code *)(&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0)))();\n      return pmVar4;\n    }" { comment comment (expression_statement "pmVar4 = (mode_change *)(*(code *)(&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0)))();" (assignment_expression "pmVar4 = (mode_change *)(*(code *)(&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0)))()" identifier = (cast_expression "(mode_change *)(*(code *)(&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0)))()" ( (type_descriptor "mode_change *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0)))()" (parenthesized_expression "(*(code *)(&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0)))" ( (pointer_expression "*(code *)(&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0))" * (cast_expression "(code *)(&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0))" ( (binary_expression "&_gp + *(int *)(puVar1 + uVar2 * 4 + 0x1e0)" (pointer_expression "&_gp" & identifier) + (pointer_expression "*(int *)(puVar1 + uVar2 * 4 + 0x1e0)" * (cast_expression "(int *)(puVar1 + uVar2 * 4 + 0x1e0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + uVar2 * 4 + 0x1e0)" ( (binary_expression "puVar1 + uVar2 * 4 + 0x1e0" (binary_expression "puVar1 + uVar2 * 4" identifier + (binary_expression "uVar2 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return pmVar4;" return identifier ;) })) (expression_statement "pmVar9->op = (char)iVar8;" (assignment_expression "pmVar9->op = (char)iVar8" (field_expression "pmVar9->op" identifier -> field_identifier) = (cast_expression "(char)iVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pmVar9->flag = '\x01';" (assignment_expression "pmVar9->flag = '\x01'" (field_expression "pmVar9->flag" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "pmVar9->affected = mVar10;" (assignment_expression "pmVar9->affected = mVar10" (field_expression "pmVar9->affected" identifier -> field_identifier) = identifier) ;) (expression_statement "pmVar9->value = 0;" (assignment_expression "pmVar9->value = 0" (field_expression "pmVar9->value" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto LAB_0001615c;" goto statement_identifier ;) })) (do_statement "do {\n    uVar2 = (uVar2 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar2) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  } while ((iVar6 - 0x30U & 0xff) < 8);" do (compound_statement "{\n    uVar2 = (uVar2 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar2) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  }" { (expression_statement "uVar2 = (uVar2 * 8 + iVar6) - 0x30;" (assignment_expression "uVar2 = (uVar2 * 8 + iVar6) - 0x30" identifier = (binary_expression "(uVar2 * 8 + iVar6) - 0x30" (parenthesized_expression "(uVar2 * 8 + iVar6)" ( (binary_expression "uVar2 * 8 + iVar6" (binary_expression "uVar2 * 8" identifier * number_literal) + identifier) )) - number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (if_statement "if (0xfff < uVar2) goto LAB_00016044;" if (parenthesized_expression "(0xfff < uVar2)" ( (binary_expression "0xfff < uVar2" number_literal < identifier) )) (goto_statement "goto LAB_00016044;" goto statement_identifier ;)) (expression_statement "iVar6 = (int)*pcVar5;" (assignment_expression "iVar6 = (int)*pcVar5" identifier = (cast_expression "(int)*pcVar5" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar5" * identifier))) ;) }) while (parenthesized_expression "((iVar6 - 0x30U & 0xff) < 8)" ( (binary_expression "(iVar6 - 0x30U & 0xff) < 8" (parenthesized_expression "(iVar6 - 0x30U & 0xff)" ( (binary_expression "iVar6 - 0x30U & 0xff" (binary_expression "iVar6 - 0x30U" identifier - number_literal) & number_literal) )) < number_literal) )) ;) (if_statement "if ((mVar10 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {\n    pmVar9->op = (char)iVar8;\n    pmVar9->flag = '\x01';\n    pmVar9->affected = 0xfff;\n    mVar10 = 0xfff;\n    pmVar9->value = uVar2;\n    mVar13 = 0xfff;\n    iVar8 = iVar6;\n    goto LAB_00016168;\n  }" if (parenthesized_expression "((mVar10 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c))))" ( (binary_expression "(mVar10 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))" (parenthesized_expression "(mVar10 == 0)" ( (binary_expression "mVar10 == 0" identifier == number_literal) )) && (parenthesized_expression "((iVar6 == 0 || (iVar6 == 0x2c)))" ( (parenthesized_expression "(iVar6 == 0 || (iVar6 == 0x2c))" ( (binary_expression "iVar6 == 0 || (iVar6 == 0x2c)" (binary_expression "iVar6 == 0" identifier == number_literal) || (parenthesized_expression "(iVar6 == 0x2c)" ( (binary_expression "iVar6 == 0x2c" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n    pmVar9->op = (char)iVar8;\n    pmVar9->flag = '\x01';\n    pmVar9->affected = 0xfff;\n    mVar10 = 0xfff;\n    pmVar9->value = uVar2;\n    mVar13 = 0xfff;\n    iVar8 = iVar6;\n    goto LAB_00016168;\n  }" { (expression_statement "pmVar9->op = (char)iVar8;" (assignment_expression "pmVar9->op = (char)iVar8" (field_expression "pmVar9->op" identifier -> field_identifier) = (cast_expression "(char)iVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pmVar9->flag = '\x01';" (assignment_expression "pmVar9->flag = '\x01'" (field_expression "pmVar9->flag" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "pmVar9->affected = 0xfff;" (assignment_expression "pmVar9->affected = 0xfff" (field_expression "pmVar9->affected" identifier -> field_identifier) = number_literal) ;) (expression_statement "mVar10 = 0xfff;" (assignment_expression "mVar10 = 0xfff" identifier = number_literal) ;) (expression_statement "pmVar9->value = uVar2;" (assignment_expression "pmVar9->value = uVar2" (field_expression "pmVar9->value" identifier -> field_identifier) = identifier) ;) (expression_statement "mVar13 = 0xfff;" (assignment_expression "mVar13 = 0xfff" identifier = number_literal) ;) (expression_statement "iVar8 = iVar6;" (assignment_expression "iVar8 = iVar6" identifier = identifier) ;) (goto_statement "goto LAB_00016168;" goto statement_identifier ;) })) (labeled_statement "LAB_00016044:\n  (*(code *)PTR_free_000323e8)(pmVar4);" statement_identifier : (expression_statement "(*(code *)PTR_free_000323e8)(pmVar4);" (call_expression "(*(code *)PTR_free_000323e8)(pmVar4)" (parenthesized_expression "(*(code *)PTR_free_000323e8)" ( (pointer_expression "*(code *)PTR_free_000323e8" * (cast_expression "(code *)PTR_free_000323e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar4)" ( identifier ))) ;)) (return_statement "return (mode_change *)0x0;" return (cast_expression "(mode_change *)0x0" ( (type_descriptor "mode_change *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit "undefined2 * mode_compile(char *param_1)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined2 *puVar4;\n  char *pcVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  undefined2 *puVar10;\n  int iVar11;\n  \n  uVar2 = (uint)*param_1;\n  if ((uVar2 - 0x30 & 0xff) < 8) {\n    uVar8 = 0;\n    pcVar5 = param_1;\n    do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar2 = 0xfff;\n    if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }\n    puVar4 = (undefined2 *)xmalloc(0x20);\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    *puVar4 = 0x3d01;\n    *(uint *)(puVar4 + 4) = uVar8;\n    *(uint *)(puVar4 + 6) = uVar2;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    return puVar4;\n  }\n  iVar7 = 0x10;\n  if (uVar2 != 0) {\n    uVar8 = 1;\n    pcVar5 = param_1;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    iVar7 = uVar8 << 4;\n    if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    \n      xalloc_die();\n    }\n  }\n  puVar4 = (undefined2 *)xmalloc(iVar7);\n  puVar1 = PTR_s_operand_00032108;\n  iVar7 = 0;\nLAB_0001600c:\n  uVar2 = 0;\n  while( true ) {\n    while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }\n    if (iVar9 < 0x62) break;\n    if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }\n  }\n  if (((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b)) goto LAB_00016044;\n  iVar6 = (int)param_1[1];\n  iVar11 = iVar7 + 1;\n  puVar10 = puVar4 + iVar7 * 8;\n  if (iVar6 == 0x67) goto LAB_00016194;\n  while( true ) {\n    pcVar5 = param_1 + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }\n    while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }\n  }\n  uVar8 = 0;\n  if (7 < (iVar6 - 0x30U & 0xff)) {\nLAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;\n    uVar8 = 0;\n    if (uVar3 < 0x21) {\n                    \n                    \n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(uint *)(puVar10 + 2) = uVar2;\n    *(undefined4 *)(puVar10 + 4) = 0;\n    goto LAB_0001615c;\n  }\n  do {\n    uVar8 = (uVar8 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar8) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  } while ((iVar6 - 0x30U & 0xff) < 8);\n  if ((uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(undefined4 *)(puVar10 + 2) = 0xfff;\n    uVar2 = 0xfff;\n    *(uint *)(puVar10 + 4) = uVar8;\n    uVar8 = 0xfff;\n    iVar9 = iVar6;\n    goto LAB_00016168;\n  }\nLAB_00016044:\n  (*(code *)PTR_free_000323e8)(puVar4);\n  return (undefined2 *)0x0;\n}\n\n" (function_definition "undefined2 * mode_compile(char *param_1)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined2 *puVar4;\n  char *pcVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  undefined2 *puVar10;\n  int iVar11;\n  \n  uVar2 = (uint)*param_1;\n  if ((uVar2 - 0x30 & 0xff) < 8) {\n    uVar8 = 0;\n    pcVar5 = param_1;\n    do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar2 = 0xfff;\n    if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }\n    puVar4 = (undefined2 *)xmalloc(0x20);\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    *puVar4 = 0x3d01;\n    *(uint *)(puVar4 + 4) = uVar8;\n    *(uint *)(puVar4 + 6) = uVar2;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    return puVar4;\n  }\n  iVar7 = 0x10;\n  if (uVar2 != 0) {\n    uVar8 = 1;\n    pcVar5 = param_1;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    iVar7 = uVar8 << 4;\n    if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    \n      xalloc_die();\n    }\n  }\n  puVar4 = (undefined2 *)xmalloc(iVar7);\n  puVar1 = PTR_s_operand_00032108;\n  iVar7 = 0;\nLAB_0001600c:\n  uVar2 = 0;\n  while( true ) {\n    while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }\n    if (iVar9 < 0x62) break;\n    if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }\n  }\n  if (((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b)) goto LAB_00016044;\n  iVar6 = (int)param_1[1];\n  iVar11 = iVar7 + 1;\n  puVar10 = puVar4 + iVar7 * 8;\n  if (iVar6 == 0x67) goto LAB_00016194;\n  while( true ) {\n    pcVar5 = param_1 + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }\n    while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }\n  }\n  uVar8 = 0;\n  if (7 < (iVar6 - 0x30U & 0xff)) {\nLAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;\n    uVar8 = 0;\n    if (uVar3 < 0x21) {\n                    \n                    \n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(uint *)(puVar10 + 2) = uVar2;\n    *(undefined4 *)(puVar10 + 4) = 0;\n    goto LAB_0001615c;\n  }\n  do {\n    uVar8 = (uVar8 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar8) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  } while ((iVar6 - 0x30U & 0xff) < 8);\n  if ((uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(undefined4 *)(puVar10 + 2) = 0xfff;\n    uVar2 = 0xfff;\n    *(uint *)(puVar10 + 4) = uVar8;\n    uVar8 = 0xfff;\n    iVar9 = iVar6;\n    goto LAB_00016168;\n  }\nLAB_00016044:\n  (*(code *)PTR_free_000323e8)(puVar4);\n  return (undefined2 *)0x0;\n}" type_identifier (pointer_declarator "* mode_compile(char *param_1)" * (function_declarator "mode_compile(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) )))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined2 *puVar4;\n  char *pcVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  undefined2 *puVar10;\n  int iVar11;\n  \n  uVar2 = (uint)*param_1;\n  if ((uVar2 - 0x30 & 0xff) < 8) {\n    uVar8 = 0;\n    pcVar5 = param_1;\n    do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar2 = 0xfff;\n    if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }\n    puVar4 = (undefined2 *)xmalloc(0x20);\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    *puVar4 = 0x3d01;\n    *(uint *)(puVar4 + 4) = uVar8;\n    *(uint *)(puVar4 + 6) = uVar2;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    return puVar4;\n  }\n  iVar7 = 0x10;\n  if (uVar2 != 0) {\n    uVar8 = 1;\n    pcVar5 = param_1;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    iVar7 = uVar8 << 4;\n    if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    \n      xalloc_die();\n    }\n  }\n  puVar4 = (undefined2 *)xmalloc(iVar7);\n  puVar1 = PTR_s_operand_00032108;\n  iVar7 = 0;\nLAB_0001600c:\n  uVar2 = 0;\n  while( true ) {\n    while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }\n    if (iVar9 < 0x62) break;\n    if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }\n  }\n  if (((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b)) goto LAB_00016044;\n  iVar6 = (int)param_1[1];\n  iVar11 = iVar7 + 1;\n  puVar10 = puVar4 + iVar7 * 8;\n  if (iVar6 == 0x67) goto LAB_00016194;\n  while( true ) {\n    pcVar5 = param_1 + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }\n    while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }\n  }\n  uVar8 = 0;\n  if (7 < (iVar6 - 0x30U & 0xff)) {\nLAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;\n    uVar8 = 0;\n    if (uVar3 < 0x21) {\n                    \n                    \n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(uint *)(puVar10 + 2) = uVar2;\n    *(undefined4 *)(puVar10 + 4) = 0;\n    goto LAB_0001615c;\n  }\n  do {\n    uVar8 = (uVar8 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar8) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  } while ((iVar6 - 0x30U & 0xff) < 8);\n  if ((uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(undefined4 *)(puVar10 + 2) = 0xfff;\n    uVar2 = 0xfff;\n    *(uint *)(puVar10 + 4) = uVar8;\n    uVar8 = 0xfff;\n    iVar9 = iVar6;\n    goto LAB_00016168;\n  }\nLAB_00016044:\n  (*(code *)PTR_free_000323e8)(puVar4);\n  return (undefined2 *)0x0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined2 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined2 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (expression_statement "uVar2 = (uint)*param_1;" (assignment_expression "uVar2 = (uint)*param_1" identifier = (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if ((uVar2 - 0x30 & 0xff) < 8) {\n    uVar8 = 0;\n    pcVar5 = param_1;\n    do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar2 = 0xfff;\n    if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }\n    puVar4 = (undefined2 *)xmalloc(0x20);\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    *puVar4 = 0x3d01;\n    *(uint *)(puVar4 + 4) = uVar8;\n    *(uint *)(puVar4 + 6) = uVar2;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    return puVar4;\n  }" if (parenthesized_expression "((uVar2 - 0x30 & 0xff) < 8)" ( (binary_expression "(uVar2 - 0x30 & 0xff) < 8" (parenthesized_expression "(uVar2 - 0x30 & 0xff)" ( (binary_expression "uVar2 - 0x30 & 0xff" (binary_expression "uVar2 - 0x30" identifier - number_literal) & number_literal) )) < number_literal) )) (compound_statement "{\n    uVar8 = 0;\n    pcVar5 = param_1;\n    do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar2 = 0xfff;\n    if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }\n    puVar4 = (undefined2 *)xmalloc(0x20);\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    *puVar4 = 0x3d01;\n    *(uint *)(puVar4 + 4) = uVar8;\n    *(uint *)(puVar4 + 6) = uVar2;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    return puVar4;\n  }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "pcVar5 = param_1;" (assignment_expression "pcVar5 = param_1" identifier = identifier) ;) (do_statement "do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);" do (compound_statement "{\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    }" { (expression_statement "uVar8 = (uVar8 * 8 + uVar2) - 0x30;" (assignment_expression "uVar8 = (uVar8 * 8 + uVar2) - 0x30" identifier = (binary_expression "(uVar8 * 8 + uVar2) - 0x30" (parenthesized_expression "(uVar8 * 8 + uVar2)" ( (binary_expression "uVar8 * 8 + uVar2" (binary_expression "uVar8 * 8" identifier * number_literal) + identifier) )) - number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (if_statement "if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }" if (parenthesized_expression "(0xfff < uVar8)" ( (binary_expression "0xfff < uVar8" number_literal < identifier) )) (compound_statement "{\n        return (undefined2 *)0x0;\n      }" { (return_statement "return (undefined2 *)0x0;" return (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar2 = (uint)*pcVar5;" (assignment_expression "uVar2 = (uint)*pcVar5" identifier = (binary_expression "(uint)*pcVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) while (parenthesized_expression "((uVar2 - 0x30 & 0xff) < 8)" ( (binary_expression "(uVar2 - 0x30 & 0xff) < 8" (parenthesized_expression "(uVar2 - 0x30 & 0xff)" ( (binary_expression "uVar2 - 0x30 & 0xff" (binary_expression "uVar2 - 0x30" identifier - number_literal) & number_literal) )) < number_literal) )) ;) (if_statement "if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      return (undefined2 *)0x0;\n    }" { (return_statement "return (undefined2 *)0x0;" return (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar2 = 0xfff;" (assignment_expression "uVar2 = 0xfff" identifier = number_literal) ;) (if_statement "if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }" if (parenthesized_expression "((int)pcVar5 - (int)param_1 < 5)" ( (binary_expression "(int)pcVar5 - (int)param_1 < 5" (binary_expression "(int)pcVar5 - (int)param_1" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal) )) (compound_statement "{\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }" { (expression_statement "uVar2 = uVar8 & 0xc00 | 0x3ff;" (assignment_expression "uVar2 = uVar8 & 0xc00 | 0x3ff" identifier = (binary_expression "uVar8 & 0xc00 | 0x3ff" (binary_expression "uVar8 & 0xc00" identifier & number_literal) | number_literal)) ;) })) (expression_statement "puVar4 = (undefined2 *)xmalloc(0x20);" (assignment_expression "puVar4 = (undefined2 *)xmalloc(0x20)" identifier = (cast_expression "(undefined2 *)xmalloc(0x20)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "*(undefined1 *)((int)puVar4 + 0x11) = 0;" (assignment_expression "*(undefined1 *)((int)puVar4 + 0x11) = 0" (pointer_expression "*(undefined1 *)((int)puVar4 + 0x11)" * (cast_expression "(undefined1 *)((int)puVar4 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 0x11)" ( (binary_expression "(int)puVar4 + 0x11" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*puVar4 = 0x3d01;" (assignment_expression "*puVar4 = 0x3d01" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "*(uint *)(puVar4 + 4) = uVar8;" (assignment_expression "*(uint *)(puVar4 + 4) = uVar8" (pointer_expression "*(uint *)(puVar4 + 4)" * (cast_expression "(uint *)(puVar4 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 4)" ( (binary_expression "puVar4 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar4 + 6) = uVar2;" (assignment_expression "*(uint *)(puVar4 + 6) = uVar2" (pointer_expression "*(uint *)(puVar4 + 6)" * (cast_expression "(uint *)(puVar4 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 6)" ( (binary_expression "puVar4 + 6" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + 2) = 0xfff;" (assignment_expression "*(undefined4 *)(puVar4 + 2) = 0xfff" (pointer_expression "*(undefined4 *)(puVar4 + 2)" * (cast_expression "(undefined4 *)(puVar4 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) = number_literal) ;) (return_statement "return puVar4;" return identifier ;) })) (expression_statement "iVar7 = 0x10;" (assignment_expression "iVar7 = 0x10" identifier = number_literal) ;) (if_statement "if (uVar2 != 0) {\n    uVar8 = 1;\n    pcVar5 = param_1;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    iVar7 = uVar8 << 4;\n    if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    \n      xalloc_die();\n    }\n  }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar8 = 1;\n    pcVar5 = param_1;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    iVar7 = uVar8 << 4;\n    if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    \n      xalloc_die();\n    }\n  }" { (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (expression_statement "pcVar5 = param_1;" (assignment_expression "pcVar5 = param_1" identifier = identifier) ;) (do_statement "do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);" do (compound_statement "{\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    }" { (while_statement "while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }" while (parenthesized_expression "(uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b)" ( (comma_expression "uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b" (assignment_expression "uVar3 = uVar2 & 0xffffffef" identifier = (binary_expression "uVar2 & 0xffffffef" identifier & number_literal)) , (binary_expression "uVar2 == 0x2b" identifier == number_literal)) )) (compound_statement "{\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }" { (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = (uint)*pcVar5;" (assignment_expression "uVar2 = (uint)*pcVar5" identifier = (binary_expression "(uint)*pcVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (if_statement "if (uVar2 == 0) goto LAB_00015fc8;" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00015fc8;" goto statement_identifier ;)) })) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = (uint)*pcVar5;" (assignment_expression "uVar2 = (uint)*pcVar5" identifier = (binary_expression "(uint)*pcVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar8 = uVar8 + (uVar3 == 0x2d);" (assignment_expression "uVar8 = uVar8 + (uVar3 == 0x2d)" identifier = (binary_expression "uVar8 + (uVar3 == 0x2d)" identifier + (parenthesized_expression "(uVar3 == 0x2d)" ( (binary_expression "uVar3 == 0x2d" identifier == number_literal) )))) ;) }) while (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) ;) (labeled_statement "LAB_00015fc8:\n    iVar7 = uVar8 << 4;" statement_identifier : (expression_statement "iVar7 = uVar8 << 4;" (assignment_expression "iVar7 = uVar8 << 4" identifier = (binary_expression "uVar8 << 4" identifier << number_literal)) ;)) (if_statement "if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    \n      xalloc_die();\n    }" if (parenthesized_expression "((iVar7 < 0) || (uVar8 >> 0x1c != 0))" ( (binary_expression "(iVar7 < 0) || (uVar8 >> 0x1c != 0)" (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) || (parenthesized_expression "(uVar8 >> 0x1c != 0)" ( (binary_expression "uVar8 >> 0x1c != 0" (binary_expression "uVar8 >> 0x1c" identifier >> number_literal) != number_literal) ))) )) (compound_statement "{\n                    \n      xalloc_die();\n    }" { (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) })) })) (expression_statement "puVar4 = (undefined2 *)xmalloc(iVar7);" (assignment_expression "puVar4 = (undefined2 *)xmalloc(iVar7)" identifier = (cast_expression "(undefined2 *)xmalloc(iVar7)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar7)" identifier (argument_list "(iVar7)" ( identifier ))))) ;) (expression_statement "puVar1 = PTR_s_operand_00032108;" (assignment_expression "puVar1 = PTR_s_operand_00032108" identifier = identifier) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0001600c:\n  uVar2 = 0;" statement_identifier : (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;)) (while_statement "while( true ) {\n    while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }\n    if (iVar9 < 0x62) break;\n    if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }\n    if (iVar9 < 0x62) break;\n    if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }\n  }" { (while_statement "while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }" { (expression_statement "iVar9 = (int)*param_1;" (assignment_expression "iVar9 = (int)*param_1" identifier = (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (iVar9 != 0x61) break;" if (parenthesized_expression "(iVar9 != 0x61)" ( (binary_expression "iVar9 != 0x61" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar2 = 0xfff;" (assignment_expression "uVar2 = 0xfff" identifier = number_literal) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) })) (if_statement "if (iVar9 < 0x62) break;" if (parenthesized_expression "(iVar9 < 0x62)" ( (binary_expression "iVar9 < 0x62" identifier < number_literal) )) (break_statement "break;" break ;)) (if_statement "if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }" if (parenthesized_expression "(iVar9 == 0x6f)" ( (binary_expression "iVar9 == 0x6f" identifier == number_literal) )) (compound_statement "{\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }" { (expression_statement "uVar2 = uVar2 | 0x207;" (assignment_expression "uVar2 = uVar2 | 0x207" identifier = (binary_expression "uVar2 | 0x207" identifier | number_literal)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) }) (else_clause "else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }" else (if_statement "if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }" if (parenthesized_expression "(iVar9 == 0x75)" ( (binary_expression "iVar9 == 0x75" identifier == number_literal) )) (compound_statement "{\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }" { (expression_statement "uVar2 = uVar2 | 0x9c0;" (assignment_expression "uVar2 = uVar2 | 0x9c0" identifier = (binary_expression "uVar2 | 0x9c0" identifier | number_literal)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }" else (compound_statement "{\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }" { (expression_statement "uVar2 = uVar2 | 0x438;" (assignment_expression "uVar2 = uVar2 | 0x438" identifier = (binary_expression "uVar2 | 0x438" identifier | number_literal)) ;) (if_statement "if (iVar9 != 0x67) goto LAB_00016044;" if (parenthesized_expression "(iVar9 != 0x67)" ( (binary_expression "iVar9 != 0x67" identifier != number_literal) )) (goto_statement "goto LAB_00016044;" goto statement_identifier ;)) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) }))))) })) (if_statement "if (((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b)) goto LAB_00016044;" if (parenthesized_expression "(((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b))" ( (binary_expression "((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b)" (parenthesized_expression "((iVar9 != 0x2d) && (iVar9 != 0x3d))" ( (binary_expression "(iVar9 != 0x2d) && (iVar9 != 0x3d)" (parenthesized_expression "(iVar9 != 0x2d)" ( (binary_expression "iVar9 != 0x2d" identifier != number_literal) )) && (parenthesized_expression "(iVar9 != 0x3d)" ( (binary_expression "iVar9 != 0x3d" identifier != number_literal) ))) )) && (parenthesized_expression "(iVar9 != 0x2b)" ( (binary_expression "iVar9 != 0x2b" identifier != number_literal) ))) )) (goto_statement "goto LAB_00016044;" goto statement_identifier ;)) (expression_statement "iVar6 = (int)param_1[1];" (assignment_expression "iVar6 = (int)param_1[1]" identifier = (cast_expression "(int)param_1[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar11 = iVar7 + 1;" (assignment_expression "iVar11 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar4 + iVar7 * 8;" (assignment_expression "puVar10 = puVar4 + iVar7 * 8" identifier = (binary_expression "puVar4 + iVar7 * 8" identifier + (binary_expression "iVar7 * 8" identifier * number_literal))) ;) (if_statement "if (iVar6 == 0x67) goto LAB_00016194;" if (parenthesized_expression "(iVar6 == 0x67)" ( (binary_expression "iVar6 == 0x67" identifier == number_literal) )) (goto_statement "goto LAB_00016194;" goto statement_identifier ;)) (while_statement "while( true ) {\n    pcVar5 = param_1 + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }\n    while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    pcVar5 = param_1 + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }\n    while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }\n  }" { (expression_statement "pcVar5 = param_1 + 1;" (assignment_expression "pcVar5 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 < 0x68) break;" if (parenthesized_expression "(iVar6 < 0x68)" ( (binary_expression "iVar6 < 0x68" identifier < number_literal) )) (break_statement "break;" break ;)) (if_statement "if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }" if (parenthesized_expression "(iVar6 == 0x6f)" ( (binary_expression "iVar6 == 0x6f" identifier == number_literal) )) (compound_statement "{\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }" { (expression_statement "pcVar5 = param_1 + 2;" (assignment_expression "pcVar5 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (expression_statement "uVar8 = 7;" (assignment_expression "uVar8 = 7" identifier = number_literal) ;) }) (else_clause "else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }" else (compound_statement "{\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }" { (if_statement "if (iVar6 != 0x75) goto LAB_00016224;" if (parenthesized_expression "(iVar6 != 0x75)" ( (binary_expression "iVar6 != 0x75" identifier != number_literal) )) (goto_statement "goto LAB_00016224;" goto statement_identifier ;)) (expression_statement "pcVar5 = param_1 + 2;" (assignment_expression "pcVar5 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (expression_statement "uVar8 = 0x1c0;" (assignment_expression "uVar8 = 0x1c0" identifier = number_literal) ;) }))) (while_statement "while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }" { (expression_statement "*(char *)puVar10 = (char)iVar9;" (assignment_expression "*(char *)puVar10 = (char)iVar9" (pointer_expression "*(char *)puVar10" * (cast_expression "(char *)puVar10" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(char)iVar9" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(undefined1 *)((int)puVar10 + 1) = 3;" (assignment_expression "*(undefined1 *)((int)puVar10 + 1) = 3" (pointer_expression "*(undefined1 *)((int)puVar10 + 1)" * (cast_expression "(undefined1 *)((int)puVar10 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 1)" ( (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(puVar10 + 2) = uVar2;" (assignment_expression "*(uint *)(puVar10 + 2) = uVar2" (pointer_expression "*(uint *)(puVar10 + 2)" * (cast_expression "(uint *)(puVar10 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 2)" ( (binary_expression "puVar10 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar10 + 4) = uVar8;" (assignment_expression "*(uint *)(puVar10 + 4) = uVar8" (pointer_expression "*(uint *)(puVar10 + 4)" * (cast_expression "(uint *)(puVar10 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 4)" ( (binary_expression "puVar10 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = (int)param_1[2];" (assignment_expression "iVar6 = (int)param_1[2]" identifier = (cast_expression "(int)param_1[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (labeled_statement "LAB_0001615c:\n      iVar9 = iVar6;" statement_identifier : (expression_statement "iVar9 = iVar6;" (assignment_expression "iVar9 = iVar6" identifier = identifier) ;)) (if_statement "if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar8 = uVar8 & uVar2;\n      }" { (expression_statement "uVar8 = uVar8 & uVar2;" (assignment_expression "uVar8 = uVar8 & uVar2" identifier = (binary_expression "uVar8 & uVar2" identifier & identifier)) ;) })) (labeled_statement "LAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;" statement_identifier : (expression_statement "*(uint *)(puVar10 + 6) = uVar8;" (assignment_expression "*(uint *)(puVar10 + 6) = uVar8" (pointer_expression "*(uint *)(puVar10 + 6)" * (cast_expression "(uint *)(puVar10 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 6)" ( (binary_expression "puVar10 + 6" identifier + number_literal) )))) = identifier) ;)) (if_statement "if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }" if (parenthesized_expression "((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d))" ( (binary_expression "(iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)" (parenthesized_expression "(iVar9 != 0x2b)" ( (binary_expression "iVar9 != 0x2b" identifier != number_literal) )) && (parenthesized_expression "(((byte)iVar9 & 0xef) != 0x2d)" ( (binary_expression "((byte)iVar9 & 0xef) != 0x2d" (parenthesized_expression "((byte)iVar9 & 0xef)" ( (binary_expression "(byte)iVar9 & 0xef" (cast_expression "(byte)iVar9" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }" { (expression_statement "param_1 = pcVar5 + 1;" (assignment_expression "param_1 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar7 = iVar11;" (assignment_expression "iVar7 = iVar11" identifier = identifier) ;) (if_statement "if (iVar9 == 0x2c) goto LAB_0001600c;" if (parenthesized_expression "(iVar9 == 0x2c)" ( (binary_expression "iVar9 == 0x2c" identifier == number_literal) )) (goto_statement "goto LAB_0001600c;" goto statement_identifier ;)) (if_statement "if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }" { (expression_statement "*(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0" (pointer_expression "*(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1)" * (cast_expression "(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + iVar11 * 0x10 + 1)" ( (binary_expression "(int)puVar4 + iVar11 * 0x10 + 1" (binary_expression "(int)puVar4 + iVar11 * 0x10" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar11 * 0x10" identifier * number_literal)) + number_literal) )))) = number_literal) ;) (return_statement "return puVar4;" return identifier ;) })) (goto_statement "goto LAB_00016044;" goto statement_identifier ;) })) (expression_statement "iVar6 = (int)pcVar5[1];" (assignment_expression "iVar6 = (int)pcVar5[1]" identifier = (cast_expression "(int)pcVar5[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pcVar5[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar10 + 8;" (assignment_expression "puVar10 = puVar10 + 8" identifier = (binary_expression "puVar10 + 8" identifier + number_literal)) ;) (expression_statement "param_1 = pcVar5;" (assignment_expression "param_1 = pcVar5" identifier = identifier) ;) (if_statement "if (iVar6 != 0x67) break;" if (parenthesized_expression "(iVar6 != 0x67)" ( (binary_expression "iVar6 != 0x67" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00016194:\n      pcVar5 = param_1 + 2;" statement_identifier : (expression_statement "pcVar5 = param_1 + 2;" (assignment_expression "pcVar5 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;)) (expression_statement "uVar8 = 0x38;" (assignment_expression "uVar8 = 0x38" identifier = number_literal) ;) })) })) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (7 < (iVar6 - 0x30U & 0xff)) {\nLAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;\n    uVar8 = 0;\n    if (uVar3 < 0x21) {\n                    \n                    \n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(uint *)(puVar10 + 2) = uVar2;\n    *(undefined4 *)(puVar10 + 4) = 0;\n    goto LAB_0001615c;\n  }" if (parenthesized_expression "(7 < (iVar6 - 0x30U & 0xff))" ( (binary_expression "7 < (iVar6 - 0x30U & 0xff)" number_literal < (parenthesized_expression "(iVar6 - 0x30U & 0xff)" ( (binary_expression "iVar6 - 0x30U & 0xff" (binary_expression "iVar6 - 0x30U" identifier - number_literal) & number_literal) ))) )) (compound_statement "{\nLAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;\n    uVar8 = 0;\n    if (uVar3 < 0x21) {\n                    \n                    \n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(uint *)(puVar10 + 2) = uVar2;\n    *(undefined4 *)(puVar10 + 4) = 0;\n    goto LAB_0001615c;\n  }" { (labeled_statement "LAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;" statement_identifier : (expression_statement "uVar3 = iVar6 - 0x58U & 0xff;" (assignment_expression "uVar3 = iVar6 - 0x58U & 0xff" identifier = (binary_expression "iVar6 - 0x58U & 0xff" (binary_expression "iVar6 - 0x58U" identifier - number_literal) & number_literal)) ;)) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (uVar3 < 0x21) {\n                    \n                    \n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }" if (parenthesized_expression "(uVar3 < 0x21)" ( (binary_expression "uVar3 < 0x21" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }" { (expression_statement "puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();" (assignment_expression "puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))()" identifier = (cast_expression "(undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))()" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0))" * (cast_expression "(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0))" ( (binary_expression "&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(puVar1 + uVar3 * 4 + 0x1e0)" * (cast_expression "(int *)(puVar1 + uVar3 * 4 + 0x1e0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + uVar3 * 4 + 0x1e0)" ( (binary_expression "puVar1 + uVar3 * 4 + 0x1e0" (binary_expression "puVar1 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return puVar4;" return identifier ;) })) (expression_statement "*(char *)puVar10 = (char)iVar9;" (assignment_expression "*(char *)puVar10 = (char)iVar9" (pointer_expression "*(char *)puVar10" * (cast_expression "(char *)puVar10" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(char)iVar9" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(undefined1 *)((int)puVar10 + 1) = 1;" (assignment_expression "*(undefined1 *)((int)puVar10 + 1) = 1" (pointer_expression "*(undefined1 *)((int)puVar10 + 1)" * (cast_expression "(undefined1 *)((int)puVar10 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 1)" ( (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(puVar10 + 2) = uVar2;" (assignment_expression "*(uint *)(puVar10 + 2) = uVar2" (pointer_expression "*(uint *)(puVar10 + 2)" * (cast_expression "(uint *)(puVar10 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 2)" ( (binary_expression "puVar10 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + 4) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + 4) = 0" (pointer_expression "*(undefined4 *)(puVar10 + 4)" * (cast_expression "(undefined4 *)(puVar10 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 4)" ( (binary_expression "puVar10 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0001615c;" goto statement_identifier ;) })) (do_statement "do {\n    uVar8 = (uVar8 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar8) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  } while ((iVar6 - 0x30U & 0xff) < 8);" do (compound_statement "{\n    uVar8 = (uVar8 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar8) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  }" { (expression_statement "uVar8 = (uVar8 * 8 + iVar6) - 0x30;" (assignment_expression "uVar8 = (uVar8 * 8 + iVar6) - 0x30" identifier = (binary_expression "(uVar8 * 8 + iVar6) - 0x30" (parenthesized_expression "(uVar8 * 8 + iVar6)" ( (binary_expression "uVar8 * 8 + iVar6" (binary_expression "uVar8 * 8" identifier * number_literal) + identifier) )) - number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (if_statement "if (0xfff < uVar8) goto LAB_00016044;" if (parenthesized_expression "(0xfff < uVar8)" ( (binary_expression "0xfff < uVar8" number_literal < identifier) )) (goto_statement "goto LAB_00016044;" goto statement_identifier ;)) (expression_statement "iVar6 = (int)*pcVar5;" (assignment_expression "iVar6 = (int)*pcVar5" identifier = (cast_expression "(int)*pcVar5" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar5" * identifier))) ;) }) while (parenthesized_expression "((iVar6 - 0x30U & 0xff) < 8)" ( (binary_expression "(iVar6 - 0x30U & 0xff) < 8" (parenthesized_expression "(iVar6 - 0x30U & 0xff)" ( (binary_expression "iVar6 - 0x30U & 0xff" (binary_expression "iVar6 - 0x30U" identifier - number_literal) & number_literal) )) < number_literal) )) ;) (if_statement "if ((uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(undefined4 *)(puVar10 + 2) = 0xfff;\n    uVar2 = 0xfff;\n    *(uint *)(puVar10 + 4) = uVar8;\n    uVar8 = 0xfff;\n    iVar9 = iVar6;\n    goto LAB_00016168;\n  }" if (parenthesized_expression "((uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c))))" ( (binary_expression "(uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))" (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) && (parenthesized_expression "((iVar6 == 0 || (iVar6 == 0x2c)))" ( (parenthesized_expression "(iVar6 == 0 || (iVar6 == 0x2c))" ( (binary_expression "iVar6 == 0 || (iVar6 == 0x2c)" (binary_expression "iVar6 == 0" identifier == number_literal) || (parenthesized_expression "(iVar6 == 0x2c)" ( (binary_expression "iVar6 == 0x2c" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(undefined4 *)(puVar10 + 2) = 0xfff;\n    uVar2 = 0xfff;\n    *(uint *)(puVar10 + 4) = uVar8;\n    uVar8 = 0xfff;\n    iVar9 = iVar6;\n    goto LAB_00016168;\n  }" { (expression_statement "*(char *)puVar10 = (char)iVar9;" (assignment_expression "*(char *)puVar10 = (char)iVar9" (pointer_expression "*(char *)puVar10" * (cast_expression "(char *)puVar10" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(char)iVar9" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(undefined1 *)((int)puVar10 + 1) = 1;" (assignment_expression "*(undefined1 *)((int)puVar10 + 1) = 1" (pointer_expression "*(undefined1 *)((int)puVar10 + 1)" * (cast_expression "(undefined1 *)((int)puVar10 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 1)" ( (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar10 + 2) = 0xfff;" (assignment_expression "*(undefined4 *)(puVar10 + 2) = 0xfff" (pointer_expression "*(undefined4 *)(puVar10 + 2)" * (cast_expression "(undefined4 *)(puVar10 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 2)" ( (binary_expression "puVar10 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar2 = 0xfff;" (assignment_expression "uVar2 = 0xfff" identifier = number_literal) ;) (expression_statement "*(uint *)(puVar10 + 4) = uVar8;" (assignment_expression "*(uint *)(puVar10 + 4) = uVar8" (pointer_expression "*(uint *)(puVar10 + 4)" * (cast_expression "(uint *)(puVar10 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 4)" ( (binary_expression "puVar10 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar8 = 0xfff;" (assignment_expression "uVar8 = 0xfff" identifier = number_literal) ;) (expression_statement "iVar9 = iVar6;" (assignment_expression "iVar9 = iVar6" identifier = identifier) ;) (goto_statement "goto LAB_00016168;" goto statement_identifier ;) })) (labeled_statement "LAB_00016044:\n  (*(code *)PTR_free_000323e8)(puVar4);" statement_identifier : (expression_statement "(*(code *)PTR_free_000323e8)(puVar4);" (call_expression "(*(code *)PTR_free_000323e8)(puVar4)" (parenthesized_expression "(*(code *)PTR_free_000323e8)" ( (pointer_expression "*(code *)PTR_free_000323e8" * (cast_expression "(code *)PTR_free_000323e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar4)" ( identifier ))) ;)) (return_statement "return (undefined2 *)0x0;" return (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) )) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) )) < LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & LIT) | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT & LIT)) , (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT == LIT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))))) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) )))) = LIT) ;) (return_statement return IDENT ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - LIT) & LIT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) )))) )) (argument_list ( ))))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) )) < LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;)) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })))
(function_definition "undefined2 * mode_compile(char *param_1)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined2 *puVar4;\n  char *pcVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  undefined2 *puVar10;\n  int iVar11;\n  \n  uVar2 = (uint)*param_1;\n  if ((uVar2 - 0x30 & 0xff) < 8) {\n    uVar8 = 0;\n    pcVar5 = param_1;\n    do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar2 = 0xfff;\n    if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }\n    puVar4 = (undefined2 *)xmalloc(0x20);\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    *puVar4 = 0x3d01;\n    *(uint *)(puVar4 + 4) = uVar8;\n    *(uint *)(puVar4 + 6) = uVar2;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    return puVar4;\n  }\n  iVar7 = 0x10;\n  if (uVar2 != 0) {\n    uVar8 = 1;\n    pcVar5 = param_1;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    iVar7 = uVar8 << 4;\n    if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    \n      xalloc_die();\n    }\n  }\n  puVar4 = (undefined2 *)xmalloc(iVar7);\n  puVar1 = PTR_s_operand_00032108;\n  iVar7 = 0;\nLAB_0001600c:\n  uVar2 = 0;\n  while( true ) {\n    while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }\n    if (iVar9 < 0x62) break;\n    if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }\n  }\n  if (((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b)) goto LAB_00016044;\n  iVar6 = (int)param_1[1];\n  iVar11 = iVar7 + 1;\n  puVar10 = puVar4 + iVar7 * 8;\n  if (iVar6 == 0x67) goto LAB_00016194;\n  while( true ) {\n    pcVar5 = param_1 + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }\n    while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }\n  }\n  uVar8 = 0;\n  if (7 < (iVar6 - 0x30U & 0xff)) {\nLAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;\n    uVar8 = 0;\n    if (uVar3 < 0x21) {\n                    \n                    \n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(uint *)(puVar10 + 2) = uVar2;\n    *(undefined4 *)(puVar10 + 4) = 0;\n    goto LAB_0001615c;\n  }\n  do {\n    uVar8 = (uVar8 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar8) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  } while ((iVar6 - 0x30U & 0xff) < 8);\n  if ((uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(undefined4 *)(puVar10 + 2) = 0xfff;\n    uVar2 = 0xfff;\n    *(uint *)(puVar10 + 4) = uVar8;\n    uVar8 = 0xfff;\n    iVar9 = iVar6;\n    goto LAB_00016168;\n  }\nLAB_00016044:\n  (*(code *)PTR_free_000323e8)(puVar4);\n  return (undefined2 *)0x0;\n}" (type_identifier "undefined2") (pointer_declarator "* mode_compile(char *param_1)" (* "*") (function_declarator "mode_compile(char *param_1)" (identifier "mode_compile") (parameter_list "(char *param_1)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")")))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined2 *puVar4;\n  char *pcVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  undefined2 *puVar10;\n  int iVar11;\n  \n  uVar2 = (uint)*param_1;\n  if ((uVar2 - 0x30 & 0xff) < 8) {\n    uVar8 = 0;\n    pcVar5 = param_1;\n    do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar2 = 0xfff;\n    if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }\n    puVar4 = (undefined2 *)xmalloc(0x20);\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    *puVar4 = 0x3d01;\n    *(uint *)(puVar4 + 4) = uVar8;\n    *(uint *)(puVar4 + 6) = uVar2;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    return puVar4;\n  }\n  iVar7 = 0x10;\n  if (uVar2 != 0) {\n    uVar8 = 1;\n    pcVar5 = param_1;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    iVar7 = uVar8 << 4;\n    if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    \n      xalloc_die();\n    }\n  }\n  puVar4 = (undefined2 *)xmalloc(iVar7);\n  puVar1 = PTR_s_operand_00032108;\n  iVar7 = 0;\nLAB_0001600c:\n  uVar2 = 0;\n  while( true ) {\n    while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }\n    if (iVar9 < 0x62) break;\n    if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }\n  }\n  if (((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b)) goto LAB_00016044;\n  iVar6 = (int)param_1[1];\n  iVar11 = iVar7 + 1;\n  puVar10 = puVar4 + iVar7 * 8;\n  if (iVar6 == 0x67) goto LAB_00016194;\n  while( true ) {\n    pcVar5 = param_1 + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }\n    while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }\n  }\n  uVar8 = 0;\n  if (7 < (iVar6 - 0x30U & 0xff)) {\nLAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;\n    uVar8 = 0;\n    if (uVar3 < 0x21) {\n                    \n                    \n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(uint *)(puVar10 + 2) = uVar2;\n    *(undefined4 *)(puVar10 + 4) = 0;\n    goto LAB_0001615c;\n  }\n  do {\n    uVar8 = (uVar8 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar8) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  } while ((iVar6 - 0x30U & 0xff) < 8);\n  if ((uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(undefined4 *)(puVar10 + 2) = 0xfff;\n    uVar2 = 0xfff;\n    *(uint *)(puVar10 + 4) = uVar8;\n    uVar8 = 0xfff;\n    iVar9 = iVar6;\n    goto LAB_00016168;\n  }\nLAB_00016044:\n  (*(code *)PTR_free_000323e8)(puVar4);\n  return (undefined2 *)0x0;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined2 *puVar4;" (type_identifier "undefined2") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "undefined2 *puVar10;" (type_identifier "undefined2") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (expression_statement "uVar2 = (uint)*param_1;" (assignment_expression "uVar2 = (uint)*param_1" (identifier "uVar2") (= "=") (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_1"))) (; ";")) (if_statement "if ((uVar2 - 0x30 & 0xff) < 8) {\n    uVar8 = 0;\n    pcVar5 = param_1;\n    do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar2 = 0xfff;\n    if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }\n    puVar4 = (undefined2 *)xmalloc(0x20);\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    *puVar4 = 0x3d01;\n    *(uint *)(puVar4 + 4) = uVar8;\n    *(uint *)(puVar4 + 6) = uVar2;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    return puVar4;\n  }" (if "if") (parenthesized_expression "((uVar2 - 0x30 & 0xff) < 8)" (( "(") (binary_expression "(uVar2 - 0x30 & 0xff) < 8" (parenthesized_expression "(uVar2 - 0x30 & 0xff)" (( "(") (binary_expression "uVar2 - 0x30 & 0xff" (binary_expression "uVar2 - 0x30" (identifier "uVar2") (- "-") (number_literal "0x30")) (& "&") (number_literal "0xff")) () ")")) (< "<") (number_literal "8")) () ")")) (compound_statement "{\n    uVar8 = 0;\n    pcVar5 = param_1;\n    do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);\n    if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }\n    uVar2 = 0xfff;\n    if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }\n    puVar4 = (undefined2 *)xmalloc(0x20);\n    *(undefined1 *)((int)puVar4 + 0x11) = 0;\n    *puVar4 = 0x3d01;\n    *(uint *)(puVar4 + 4) = uVar8;\n    *(uint *)(puVar4 + 6) = uVar2;\n    *(undefined4 *)(puVar4 + 2) = 0xfff;\n    return puVar4;\n  }" ({ "{") (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar5 = param_1;" (assignment_expression "pcVar5 = param_1" (identifier "pcVar5") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    } while ((uVar2 - 0x30 & 0xff) < 8);" (do "do") (compound_statement "{\n      uVar8 = (uVar8 * 8 + uVar2) - 0x30;\n      pcVar5 = pcVar5 + 1;\n      if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }\n      uVar2 = (uint)*pcVar5;\n    }" ({ "{") (expression_statement "uVar8 = (uVar8 * 8 + uVar2) - 0x30;" (assignment_expression "uVar8 = (uVar8 * 8 + uVar2) - 0x30" (identifier "uVar8") (= "=") (binary_expression "(uVar8 * 8 + uVar2) - 0x30" (parenthesized_expression "(uVar8 * 8 + uVar2)" (( "(") (binary_expression "uVar8 * 8 + uVar2" (binary_expression "uVar8 * 8" (identifier "uVar8") (* "*") (number_literal "8")) (+ "+") (identifier "uVar2")) () ")")) (- "-") (number_literal "0x30"))) (; ";")) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (0xfff < uVar8) {\n        return (undefined2 *)0x0;\n      }" (if "if") (parenthesized_expression "(0xfff < uVar8)" (( "(") (binary_expression "0xfff < uVar8" (number_literal "0xfff") (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n        return (undefined2 *)0x0;\n      }" ({ "{") (return_statement "return (undefined2 *)0x0;" (return "return") (cast_expression "(undefined2 *)0x0" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "uVar2 = (uint)*pcVar5;" (assignment_expression "uVar2 = (uint)*pcVar5" (identifier "uVar2") (= "=") (binary_expression "(uint)*pcVar5" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pcVar5"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((uVar2 - 0x30 & 0xff) < 8)" (( "(") (binary_expression "(uVar2 - 0x30 & 0xff) < 8" (parenthesized_expression "(uVar2 - 0x30 & 0xff)" (( "(") (binary_expression "uVar2 - 0x30 & 0xff" (binary_expression "uVar2 - 0x30" (identifier "uVar2") (- "-") (number_literal "0x30")) (& "&") (number_literal "0xff")) () ")")) (< "<") (number_literal "8")) () ")")) (; ";")) (if_statement "if (uVar2 != 0) {\n      return (undefined2 *)0x0;\n    }" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return (undefined2 *)0x0;\n    }" ({ "{") (return_statement "return (undefined2 *)0x0;" (return "return") (cast_expression "(undefined2 *)0x0" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "uVar2 = 0xfff;" (assignment_expression "uVar2 = 0xfff" (identifier "uVar2") (= "=") (number_literal "0xfff")) (; ";")) (if_statement "if ((int)pcVar5 - (int)param_1 < 5) {\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }" (if "if") (parenthesized_expression "((int)pcVar5 - (int)param_1 < 5)" (( "(") (binary_expression "(int)pcVar5 - (int)param_1 < 5" (binary_expression "(int)pcVar5 - (int)param_1" (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5")) (- "-") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) (< "<") (number_literal "5")) () ")")) (compound_statement "{\n      uVar2 = uVar8 & 0xc00 | 0x3ff;\n    }" ({ "{") (expression_statement "uVar2 = uVar8 & 0xc00 | 0x3ff;" (assignment_expression "uVar2 = uVar8 & 0xc00 | 0x3ff" (identifier "uVar2") (= "=") (binary_expression "uVar8 & 0xc00 | 0x3ff" (binary_expression "uVar8 & 0xc00" (identifier "uVar8") (& "&") (number_literal "0xc00")) (| "|") (number_literal "0x3ff"))) (; ";")) (} "}"))) (expression_statement "puVar4 = (undefined2 *)xmalloc(0x20);" (assignment_expression "puVar4 = (undefined2 *)xmalloc(0x20)" (identifier "puVar4") (= "=") (cast_expression "(undefined2 *)xmalloc(0x20)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(0x20)" (identifier "xmalloc") (argument_list "(0x20)" (( "(") (number_literal "0x20") () ")"))))) (; ";")) (expression_statement "*(undefined1 *)((int)puVar4 + 0x11) = 0;" (assignment_expression "*(undefined1 *)((int)puVar4 + 0x11) = 0" (pointer_expression "*(undefined1 *)((int)puVar4 + 0x11)" (* "*") (cast_expression "(undefined1 *)((int)puVar4 + 0x11)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar4 + 0x11)" (( "(") (binary_expression "(int)puVar4 + 0x11" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (number_literal "0x11")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar4 = 0x3d01;" (assignment_expression "*puVar4 = 0x3d01" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0x3d01")) (; ";")) (expression_statement "*(uint *)(puVar4 + 4) = uVar8;" (assignment_expression "*(uint *)(puVar4 + 4) = uVar8" (pointer_expression "*(uint *)(puVar4 + 4)" (* "*") (cast_expression "(uint *)(puVar4 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 4)" (( "(") (binary_expression "puVar4 + 4" (identifier "puVar4") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(uint *)(puVar4 + 6) = uVar2;" (assignment_expression "*(uint *)(puVar4 + 6) = uVar2" (pointer_expression "*(uint *)(puVar4 + 6)" (* "*") (cast_expression "(uint *)(puVar4 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 6)" (( "(") (binary_expression "puVar4 + 6" (identifier "puVar4") (+ "+") (number_literal "6")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + 2) = 0xfff;" (assignment_expression "*(undefined4 *)(puVar4 + 2) = 0xfff" (pointer_expression "*(undefined4 *)(puVar4 + 2)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 2)" (( "(") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0xfff")) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (expression_statement "iVar7 = 0x10;" (assignment_expression "iVar7 = 0x10" (identifier "iVar7") (= "=") (number_literal "0x10")) (; ";")) (if_statement "if (uVar2 != 0) {\n    uVar8 = 1;\n    pcVar5 = param_1;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    iVar7 = uVar8 << 4;\n    if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    \n      xalloc_die();\n    }\n  }" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar8 = 1;\n    pcVar5 = param_1;\n    do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);\nLAB_00015fc8:\n    iVar7 = uVar8 << 4;\n    if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    \n      xalloc_die();\n    }\n  }" ({ "{") (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" (identifier "uVar8") (= "=") (number_literal "1")) (; ";")) (expression_statement "pcVar5 = param_1;" (assignment_expression "pcVar5 = param_1" (identifier "pcVar5") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    } while (uVar2 != 0);" (do "do") (compound_statement "{\n      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }\n      pcVar5 = pcVar5 + 1;\n      uVar2 = (uint)*pcVar5;\n      uVar8 = uVar8 + (uVar3 == 0x2d);\n    }" ({ "{") (while_statement "while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }" (while "while") (parenthesized_expression "(uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b)" (( "(") (comma_expression "uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b" (assignment_expression "uVar3 = uVar2 & 0xffffffef" (identifier "uVar3") (= "=") (binary_expression "uVar2 & 0xffffffef" (identifier "uVar2") (& "&") (number_literal "0xffffffef"))) (, ",") (binary_expression "uVar2 == 0x2b" (identifier "uVar2") (== "==") (number_literal "0x2b"))) () ")")) (compound_statement "{\n        pcVar5 = pcVar5 + 1;\n        uVar2 = (uint)*pcVar5;\n        uVar8 = uVar8 + 1;\n        if (uVar2 == 0) goto LAB_00015fc8;\n      }" ({ "{") (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar2 = (uint)*pcVar5;" (assignment_expression "uVar2 = (uint)*pcVar5" (identifier "uVar2") (= "=") (binary_expression "(uint)*pcVar5" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pcVar5"))) (; ";")) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar2 == 0) goto LAB_00015fc8;" (if "if") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00015fc8;" (goto "goto") (statement_identifier "LAB_00015fc8") (; ";"))) (} "}"))) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar2 = (uint)*pcVar5;" (assignment_expression "uVar2 = (uint)*pcVar5" (identifier "uVar2") (= "=") (binary_expression "(uint)*pcVar5" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pcVar5"))) (; ";")) (expression_statement "uVar8 = uVar8 + (uVar3 == 0x2d);" (assignment_expression "uVar8 = uVar8 + (uVar3 == 0x2d)" (identifier "uVar8") (= "=") (binary_expression "uVar8 + (uVar3 == 0x2d)" (identifier "uVar8") (+ "+") (parenthesized_expression "(uVar3 == 0x2d)" (( "(") (binary_expression "uVar3 == 0x2d" (identifier "uVar3") (== "==") (number_literal "0x2d")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (; ";")) (labeled_statement "LAB_00015fc8:\n    iVar7 = uVar8 << 4;" (statement_identifier "LAB_00015fc8") (: ":") (expression_statement "iVar7 = uVar8 << 4;" (assignment_expression "iVar7 = uVar8 << 4" (identifier "iVar7") (= "=") (binary_expression "uVar8 << 4" (identifier "uVar8") (<< "<<") (number_literal "4"))) (; ";"))) (if_statement "if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {\n                    \n      xalloc_die();\n    }" (if "if") (parenthesized_expression "((iVar7 < 0) || (uVar8 >> 0x1c != 0))" (( "(") (binary_expression "(iVar7 < 0) || (uVar8 >> 0x1c != 0)" (parenthesized_expression "(iVar7 < 0)" (( "(") (binary_expression "iVar7 < 0" (identifier "iVar7") (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar8 >> 0x1c != 0)" (( "(") (binary_expression "uVar8 >> 0x1c != 0" (binary_expression "uVar8 >> 0x1c" (identifier "uVar8") (>> ">>") (number_literal "0x1c")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n      xalloc_die();\n    }" ({ "{") (expression_statement "xalloc_die();" (call_expression "xalloc_die()" (identifier "xalloc_die") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar4 = (undefined2 *)xmalloc(iVar7);" (assignment_expression "puVar4 = (undefined2 *)xmalloc(iVar7)" (identifier "puVar4") (= "=") (cast_expression "(undefined2 *)xmalloc(iVar7)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(iVar7)" (identifier "xmalloc") (argument_list "(iVar7)" (( "(") (identifier "iVar7") () ")"))))) (; ";")) (expression_statement "puVar1 = PTR_s_operand_00032108;" (assignment_expression "puVar1 = PTR_s_operand_00032108" (identifier "puVar1") (= "=") (identifier "PTR_s_operand_00032108")) (; ";")) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0001600c:\n  uVar2 = 0;" (statement_identifier "LAB_0001600c") (: ":") (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";"))) (while_statement "while( true ) {\n    while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }\n    if (iVar9 < 0x62) break;\n    if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }\n    if (iVar9 < 0x62) break;\n    if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }\n  }" ({ "{") (while_statement "while( true ) {\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      iVar9 = (int)*param_1;\n      if (iVar9 != 0x61) break;\n      uVar2 = 0xfff;\n      param_1 = param_1 + 1;\n    }" ({ "{") (expression_statement "iVar9 = (int)*param_1;" (assignment_expression "iVar9 = (int)*param_1" (identifier "iVar9") (= "=") (cast_expression "(int)*param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (if_statement "if (iVar9 != 0x61) break;" (if "if") (parenthesized_expression "(iVar9 != 0x61)" (( "(") (binary_expression "iVar9 != 0x61" (identifier "iVar9") (!= "!=") (number_literal "0x61")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar2 = 0xfff;" (assignment_expression "uVar2 = 0xfff" (identifier "uVar2") (= "=") (number_literal "0xfff")) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (iVar9 < 0x62) break;" (if "if") (parenthesized_expression "(iVar9 < 0x62)" (( "(") (binary_expression "iVar9 < 0x62" (identifier "iVar9") (< "<") (number_literal "0x62")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (iVar9 == 0x6f) {\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }\n    else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }" (if "if") (parenthesized_expression "(iVar9 == 0x6f)" (( "(") (binary_expression "iVar9 == 0x6f" (identifier "iVar9") (== "==") (number_literal "0x6f")) () ")")) (compound_statement "{\n      uVar2 = uVar2 | 0x207;\n      param_1 = param_1 + 1;\n    }" ({ "{") (expression_statement "uVar2 = uVar2 | 0x207;" (assignment_expression "uVar2 = uVar2 | 0x207" (identifier "uVar2") (= "=") (binary_expression "uVar2 | 0x207" (identifier "uVar2") (| "|") (number_literal "0x207"))) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }" (else "else") (if_statement "if (iVar9 == 0x75) {\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }\n    else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }" (if "if") (parenthesized_expression "(iVar9 == 0x75)" (( "(") (binary_expression "iVar9 == 0x75" (identifier "iVar9") (== "==") (number_literal "0x75")) () ")")) (compound_statement "{\n      uVar2 = uVar2 | 0x9c0;\n      param_1 = param_1 + 1;\n    }" ({ "{") (expression_statement "uVar2 = uVar2 | 0x9c0;" (assignment_expression "uVar2 = uVar2 | 0x9c0" (identifier "uVar2") (= "=") (binary_expression "uVar2 | 0x9c0" (identifier "uVar2") (| "|") (number_literal "0x9c0"))) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }" (else "else") (compound_statement "{\n      uVar2 = uVar2 | 0x438;\n      if (iVar9 != 0x67) goto LAB_00016044;\n      param_1 = param_1 + 1;\n    }" ({ "{") (expression_statement "uVar2 = uVar2 | 0x438;" (assignment_expression "uVar2 = uVar2 | 0x438" (identifier "uVar2") (= "=") (binary_expression "uVar2 | 0x438" (identifier "uVar2") (| "|") (number_literal "0x438"))) (; ";")) (if_statement "if (iVar9 != 0x67) goto LAB_00016044;" (if "if") (parenthesized_expression "(iVar9 != 0x67)" (( "(") (binary_expression "iVar9 != 0x67" (identifier "iVar9") (!= "!=") (number_literal "0x67")) () ")")) (goto_statement "goto LAB_00016044;" (goto "goto") (statement_identifier "LAB_00016044") (; ";"))) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (} "}")))))) (} "}"))) (if_statement "if (((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b)) goto LAB_00016044;" (if "if") (parenthesized_expression "(((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b))" (( "(") (binary_expression "((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b)" (parenthesized_expression "((iVar9 != 0x2d) && (iVar9 != 0x3d))" (( "(") (binary_expression "(iVar9 != 0x2d) && (iVar9 != 0x3d)" (parenthesized_expression "(iVar9 != 0x2d)" (( "(") (binary_expression "iVar9 != 0x2d" (identifier "iVar9") (!= "!=") (number_literal "0x2d")) () ")")) (&& "&&") (parenthesized_expression "(iVar9 != 0x3d)" (( "(") (binary_expression "iVar9 != 0x3d" (identifier "iVar9") (!= "!=") (number_literal "0x3d")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar9 != 0x2b)" (( "(") (binary_expression "iVar9 != 0x2b" (identifier "iVar9") (!= "!=") (number_literal "0x2b")) () ")"))) () ")")) (goto_statement "goto LAB_00016044;" (goto "goto") (statement_identifier "LAB_00016044") (; ";"))) (expression_statement "iVar6 = (int)param_1[1];" (assignment_expression "iVar6 = (int)param_1[1]" (identifier "iVar6") (= "=") (cast_expression "(int)param_1[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "iVar11 = iVar7 + 1;" (assignment_expression "iVar11 = iVar7 + 1" (identifier "iVar11") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar10 = puVar4 + iVar7 * 8;" (assignment_expression "puVar10 = puVar4 + iVar7 * 8" (identifier "puVar10") (= "=") (binary_expression "puVar4 + iVar7 * 8" (identifier "puVar4") (+ "+") (binary_expression "iVar7 * 8" (identifier "iVar7") (* "*") (number_literal "8")))) (; ";")) (if_statement "if (iVar6 == 0x67) goto LAB_00016194;" (if "if") (parenthesized_expression "(iVar6 == 0x67)" (( "(") (binary_expression "iVar6 == 0x67" (identifier "iVar6") (== "==") (number_literal "0x67")) () ")")) (goto_statement "goto LAB_00016194;" (goto "goto") (statement_identifier "LAB_00016194") (; ";"))) (while_statement "while( true ) {\n    pcVar5 = param_1 + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }\n    while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    pcVar5 = param_1 + 1;\n    if (iVar6 < 0x68) break;\n    if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }\n    while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }\n  }" ({ "{") (expression_statement "pcVar5 = param_1 + 1;" (assignment_expression "pcVar5 = param_1 + 1" (identifier "pcVar5") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar6 < 0x68) break;" (if "if") (parenthesized_expression "(iVar6 < 0x68)" (( "(") (binary_expression "iVar6 < 0x68" (identifier "iVar6") (< "<") (number_literal "0x68")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (iVar6 == 0x6f) {\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }\n    else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }" (if "if") (parenthesized_expression "(iVar6 == 0x6f)" (( "(") (binary_expression "iVar6 == 0x6f" (identifier "iVar6") (== "==") (number_literal "0x6f")) () ")")) (compound_statement "{\n      pcVar5 = param_1 + 2;\n      uVar8 = 7;\n    }" ({ "{") (expression_statement "pcVar5 = param_1 + 2;" (assignment_expression "pcVar5 = param_1 + 2" (identifier "pcVar5") (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar8 = 7;" (assignment_expression "uVar8 = 7" (identifier "uVar8") (= "=") (number_literal "7")) (; ";")) (} "}")) (else_clause "else {\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }" (else "else") (compound_statement "{\n      if (iVar6 != 0x75) goto LAB_00016224;\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x1c0;\n    }" ({ "{") (if_statement "if (iVar6 != 0x75) goto LAB_00016224;" (if "if") (parenthesized_expression "(iVar6 != 0x75)" (( "(") (binary_expression "iVar6 != 0x75" (identifier "iVar6") (!= "!=") (number_literal "0x75")) () ")")) (goto_statement "goto LAB_00016224;" (goto "goto") (statement_identifier "LAB_00016224") (; ";"))) (expression_statement "pcVar5 = param_1 + 2;" (assignment_expression "pcVar5 = param_1 + 2" (identifier "pcVar5") (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar8 = 0x1c0;" (assignment_expression "uVar8 = 0x1c0" (identifier "uVar8") (= "=") (number_literal "0x1c0")) (; ";")) (} "}")))) (while_statement "while( true ) {\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      *(char *)puVar10 = (char)iVar9;\n      *(undefined1 *)((int)puVar10 + 1) = 3;\n      *(uint *)(puVar10 + 2) = uVar2;\n      *(uint *)(puVar10 + 4) = uVar8;\n      iVar6 = (int)param_1[2];\nLAB_0001615c:\n      iVar9 = iVar6;\n      if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }\nLAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;\n      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }\n      iVar6 = (int)pcVar5[1];\n      iVar11 = iVar11 + 1;\n      puVar10 = puVar10 + 8;\n      param_1 = pcVar5;\n      if (iVar6 != 0x67) break;\nLAB_00016194:\n      pcVar5 = param_1 + 2;\n      uVar8 = 0x38;\n    }" ({ "{") (expression_statement "*(char *)puVar10 = (char)iVar9;" (assignment_expression "*(char *)puVar10 = (char)iVar9" (pointer_expression "*(char *)puVar10" (* "*") (cast_expression "(char *)puVar10" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar10"))) (= "=") (cast_expression "(char)iVar9" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar9"))) (; ";")) (expression_statement "*(undefined1 *)((int)puVar10 + 1) = 3;" (assignment_expression "*(undefined1 *)((int)puVar10 + 1) = 3" (pointer_expression "*(undefined1 *)((int)puVar10 + 1)" (* "*") (cast_expression "(undefined1 *)((int)puVar10 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 1)" (( "(") (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "3")) (; ";")) (expression_statement "*(uint *)(puVar10 + 2) = uVar2;" (assignment_expression "*(uint *)(puVar10 + 2) = uVar2" (pointer_expression "*(uint *)(puVar10 + 2)" (* "*") (cast_expression "(uint *)(puVar10 + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 2)" (( "(") (binary_expression "puVar10 + 2" (identifier "puVar10") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(uint *)(puVar10 + 4) = uVar8;" (assignment_expression "*(uint *)(puVar10 + 4) = uVar8" (pointer_expression "*(uint *)(puVar10 + 4)" (* "*") (cast_expression "(uint *)(puVar10 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 4)" (( "(") (binary_expression "puVar10 + 4" (identifier "puVar10") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "iVar6 = (int)param_1[2];" (assignment_expression "iVar6 = (int)param_1[2]" (identifier "iVar6") (= "=") (cast_expression "(int)param_1[2]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (labeled_statement "LAB_0001615c:\n      iVar9 = iVar6;" (statement_identifier "LAB_0001615c") (: ":") (expression_statement "iVar9 = iVar6;" (assignment_expression "iVar9 = iVar6" (identifier "iVar9") (= "=") (identifier "iVar6")) (; ";"))) (if_statement "if (uVar2 != 0) {\n        uVar8 = uVar8 & uVar2;\n      }" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar8 = uVar8 & uVar2;\n      }" ({ "{") (expression_statement "uVar8 = uVar8 & uVar2;" (assignment_expression "uVar8 = uVar8 & uVar2" (identifier "uVar8") (= "=") (binary_expression "uVar8 & uVar2" (identifier "uVar8") (& "&") (identifier "uVar2"))) (; ";")) (} "}"))) (labeled_statement "LAB_00016168:\n      *(uint *)(puVar10 + 6) = uVar8;" (statement_identifier "LAB_00016168") (: ":") (expression_statement "*(uint *)(puVar10 + 6) = uVar8;" (assignment_expression "*(uint *)(puVar10 + 6) = uVar8" (pointer_expression "*(uint *)(puVar10 + 6)" (* "*") (cast_expression "(uint *)(puVar10 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 6)" (( "(") (binary_expression "puVar10 + 6" (identifier "puVar10") (+ "+") (number_literal "6")) () ")")))) (= "=") (identifier "uVar8")) (; ";"))) (if_statement "if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }" (if "if") (parenthesized_expression "((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d))" (( "(") (binary_expression "(iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)" (parenthesized_expression "(iVar9 != 0x2b)" (( "(") (binary_expression "iVar9 != 0x2b" (identifier "iVar9") (!= "!=") (number_literal "0x2b")) () ")")) (&& "&&") (parenthesized_expression "(((byte)iVar9 & 0xef) != 0x2d)" (( "(") (binary_expression "((byte)iVar9 & 0xef) != 0x2d" (parenthesized_expression "((byte)iVar9 & 0xef)" (( "(") (binary_expression "(byte)iVar9 & 0xef" (cast_expression "(byte)iVar9" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar9")) (& "&") (number_literal "0xef")) () ")")) (!= "!=") (number_literal "0x2d")) () ")"))) () ")")) (compound_statement "{\n        param_1 = pcVar5 + 1;\n        iVar7 = iVar11;\n        if (iVar9 == 0x2c) goto LAB_0001600c;\n        if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }\n        goto LAB_00016044;\n      }" ({ "{") (expression_statement "param_1 = pcVar5 + 1;" (assignment_expression "param_1 = pcVar5 + 1" (identifier "param_1") (= "=") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar7 = iVar11;" (assignment_expression "iVar7 = iVar11" (identifier "iVar7") (= "=") (identifier "iVar11")) (; ";")) (if_statement "if (iVar9 == 0x2c) goto LAB_0001600c;" (if "if") (parenthesized_expression "(iVar9 == 0x2c)" (( "(") (binary_expression "iVar9 == 0x2c" (identifier "iVar9") (== "==") (number_literal "0x2c")) () ")")) (goto_statement "goto LAB_0001600c;" (goto "goto") (statement_identifier "LAB_0001600c") (; ";"))) (if_statement "if (iVar9 == 0) {\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;\n          return puVar4;\n        }" ({ "{") (expression_statement "*(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0" (pointer_expression "*(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1)" (* "*") (cast_expression "(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar4 + iVar11 * 0x10 + 1)" (( "(") (binary_expression "(int)puVar4 + iVar11 * 0x10 + 1" (binary_expression "(int)puVar4 + iVar11 * 0x10" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (binary_expression "iVar11 * 0x10" (identifier "iVar11") (* "*") (number_literal "0x10"))) (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (goto_statement "goto LAB_00016044;" (goto "goto") (statement_identifier "LAB_00016044") (; ";")) (} "}"))) (expression_statement "iVar6 = (int)pcVar5[1];" (assignment_expression "iVar6 = (int)pcVar5[1]" (identifier "iVar6") (= "=") (cast_expression "(int)pcVar5[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "pcVar5[1]" (identifier "pcVar5") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar10 = puVar10 + 8;" (assignment_expression "puVar10 = puVar10 + 8" (identifier "puVar10") (= "=") (binary_expression "puVar10 + 8" (identifier "puVar10") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "param_1 = pcVar5;" (assignment_expression "param_1 = pcVar5" (identifier "param_1") (= "=") (identifier "pcVar5")) (; ";")) (if_statement "if (iVar6 != 0x67) break;" (if "if") (parenthesized_expression "(iVar6 != 0x67)" (( "(") (binary_expression "iVar6 != 0x67" (identifier "iVar6") (!= "!=") (number_literal "0x67")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00016194:\n      pcVar5 = param_1 + 2;" (statement_identifier "LAB_00016194") (: ":") (expression_statement "pcVar5 = param_1 + 2;" (assignment_expression "pcVar5 = param_1 + 2" (identifier "pcVar5") (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";"))) (expression_statement "uVar8 = 0x38;" (assignment_expression "uVar8 = 0x38" (identifier "uVar8") (= "=") (number_literal "0x38")) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (if_statement "if (7 < (iVar6 - 0x30U & 0xff)) {\nLAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;\n    uVar8 = 0;\n    if (uVar3 < 0x21) {\n                    \n                    \n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(uint *)(puVar10 + 2) = uVar2;\n    *(undefined4 *)(puVar10 + 4) = 0;\n    goto LAB_0001615c;\n  }" (if "if") (parenthesized_expression "(7 < (iVar6 - 0x30U & 0xff))" (( "(") (binary_expression "7 < (iVar6 - 0x30U & 0xff)" (number_literal "7") (< "<") (parenthesized_expression "(iVar6 - 0x30U & 0xff)" (( "(") (binary_expression "iVar6 - 0x30U & 0xff" (binary_expression "iVar6 - 0x30U" (identifier "iVar6") (- "-") (number_literal "0x30U")) (& "&") (number_literal "0xff")) () ")"))) () ")")) (compound_statement "{\nLAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;\n    uVar8 = 0;\n    if (uVar3 < 0x21) {\n                    \n                    \n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(uint *)(puVar10 + 2) = uVar2;\n    *(undefined4 *)(puVar10 + 4) = 0;\n    goto LAB_0001615c;\n  }" ({ "{") (labeled_statement "LAB_00016224:\n    uVar3 = iVar6 - 0x58U & 0xff;" (statement_identifier "LAB_00016224") (: ":") (expression_statement "uVar3 = iVar6 - 0x58U & 0xff;" (assignment_expression "uVar3 = iVar6 - 0x58U & 0xff" (identifier "uVar3") (= "=") (binary_expression "iVar6 - 0x58U & 0xff" (binary_expression "iVar6 - 0x58U" (identifier "iVar6") (- "-") (number_literal "0x58U")) (& "&") (number_literal "0xff"))) (; ";"))) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar3 < 0x21) {\n                    \n                    \n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }" (if "if") (parenthesized_expression "(uVar3 < 0x21)" (( "(") (binary_expression "uVar3 < 0x21" (identifier "uVar3") (< "<") (number_literal "0x21")) () ")")) (compound_statement "{\n                    \n                    \n      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();\n      return puVar4;\n    }" ({ "{") (expression_statement "puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();" (assignment_expression "puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))()" (identifier "puVar4") (= "=") (cast_expression "(undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))()" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))" (( "(") (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0))" (* "*") (cast_expression "(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0))" (( "(") (binary_expression "&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)" (pointer_expression "&_gp_1" (& "&") (identifier "_gp_1")) (+ "+") (pointer_expression "*(int *)(puVar1 + uVar3 * 4 + 0x1e0)" (* "*") (cast_expression "(int *)(puVar1 + uVar3 * 4 + 0x1e0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + uVar3 * 4 + 0x1e0)" (( "(") (binary_expression "puVar1 + uVar3 * 4 + 0x1e0" (binary_expression "puVar1 + uVar3 * 4" (identifier "puVar1") (+ "+") (binary_expression "uVar3 * 4" (identifier "uVar3") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x1e0")) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (expression_statement "*(char *)puVar10 = (char)iVar9;" (assignment_expression "*(char *)puVar10 = (char)iVar9" (pointer_expression "*(char *)puVar10" (* "*") (cast_expression "(char *)puVar10" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar10"))) (= "=") (cast_expression "(char)iVar9" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar9"))) (; ";")) (expression_statement "*(undefined1 *)((int)puVar10 + 1) = 1;" (assignment_expression "*(undefined1 *)((int)puVar10 + 1) = 1" (pointer_expression "*(undefined1 *)((int)puVar10 + 1)" (* "*") (cast_expression "(undefined1 *)((int)puVar10 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 1)" (( "(") (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(uint *)(puVar10 + 2) = uVar2;" (assignment_expression "*(uint *)(puVar10 + 2) = uVar2" (pointer_expression "*(uint *)(puVar10 + 2)" (* "*") (cast_expression "(uint *)(puVar10 + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 2)" (( "(") (binary_expression "puVar10 + 2" (identifier "puVar10") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + 4) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + 4) = 0" (pointer_expression "*(undefined4 *)(puVar10 + 4)" (* "*") (cast_expression "(undefined4 *)(puVar10 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 4)" (( "(") (binary_expression "puVar10 + 4" (identifier "puVar10") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0001615c;" (goto "goto") (statement_identifier "LAB_0001615c") (; ";")) (} "}"))) (do_statement "do {\n    uVar8 = (uVar8 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar8) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  } while ((iVar6 - 0x30U & 0xff) < 8);" (do "do") (compound_statement "{\n    uVar8 = (uVar8 * 8 + iVar6) - 0x30;\n    pcVar5 = pcVar5 + 1;\n    if (0xfff < uVar8) goto LAB_00016044;\n    iVar6 = (int)*pcVar5;\n  }" ({ "{") (expression_statement "uVar8 = (uVar8 * 8 + iVar6) - 0x30;" (assignment_expression "uVar8 = (uVar8 * 8 + iVar6) - 0x30" (identifier "uVar8") (= "=") (binary_expression "(uVar8 * 8 + iVar6) - 0x30" (parenthesized_expression "(uVar8 * 8 + iVar6)" (( "(") (binary_expression "uVar8 * 8 + iVar6" (binary_expression "uVar8 * 8" (identifier "uVar8") (* "*") (number_literal "8")) (+ "+") (identifier "iVar6")) () ")")) (- "-") (number_literal "0x30"))) (; ";")) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (0xfff < uVar8) goto LAB_00016044;" (if "if") (parenthesized_expression "(0xfff < uVar8)" (( "(") (binary_expression "0xfff < uVar8" (number_literal "0xfff") (< "<") (identifier "uVar8")) () ")")) (goto_statement "goto LAB_00016044;" (goto "goto") (statement_identifier "LAB_00016044") (; ";"))) (expression_statement "iVar6 = (int)*pcVar5;" (assignment_expression "iVar6 = (int)*pcVar5" (identifier "iVar6") (= "=") (cast_expression "(int)*pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((iVar6 - 0x30U & 0xff) < 8)" (( "(") (binary_expression "(iVar6 - 0x30U & 0xff) < 8" (parenthesized_expression "(iVar6 - 0x30U & 0xff)" (( "(") (binary_expression "iVar6 - 0x30U & 0xff" (binary_expression "iVar6 - 0x30U" (identifier "iVar6") (- "-") (number_literal "0x30U")) (& "&") (number_literal "0xff")) () ")")) (< "<") (number_literal "8")) () ")")) (; ";")) (if_statement "if ((uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(undefined4 *)(puVar10 + 2) = 0xfff;\n    uVar2 = 0xfff;\n    *(uint *)(puVar10 + 4) = uVar8;\n    uVar8 = 0xfff;\n    iVar9 = iVar6;\n    goto LAB_00016168;\n  }" (if "if") (parenthesized_expression "((uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c))))" (( "(") (binary_expression "(uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))" (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((iVar6 == 0 || (iVar6 == 0x2c)))" (( "(") (parenthesized_expression "(iVar6 == 0 || (iVar6 == 0x2c))" (( "(") (binary_expression "iVar6 == 0 || (iVar6 == 0x2c)" (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(iVar6 == 0x2c)" (( "(") (binary_expression "iVar6 == 0x2c" (identifier "iVar6") (== "==") (number_literal "0x2c")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    *(char *)puVar10 = (char)iVar9;\n    *(undefined1 *)((int)puVar10 + 1) = 1;\n    *(undefined4 *)(puVar10 + 2) = 0xfff;\n    uVar2 = 0xfff;\n    *(uint *)(puVar10 + 4) = uVar8;\n    uVar8 = 0xfff;\n    iVar9 = iVar6;\n    goto LAB_00016168;\n  }" ({ "{") (expression_statement "*(char *)puVar10 = (char)iVar9;" (assignment_expression "*(char *)puVar10 = (char)iVar9" (pointer_expression "*(char *)puVar10" (* "*") (cast_expression "(char *)puVar10" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar10"))) (= "=") (cast_expression "(char)iVar9" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar9"))) (; ";")) (expression_statement "*(undefined1 *)((int)puVar10 + 1) = 1;" (assignment_expression "*(undefined1 *)((int)puVar10 + 1) = 1" (pointer_expression "*(undefined1 *)((int)puVar10 + 1)" (* "*") (cast_expression "(undefined1 *)((int)puVar10 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 1)" (( "(") (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + 2) = 0xfff;" (assignment_expression "*(undefined4 *)(puVar10 + 2) = 0xfff" (pointer_expression "*(undefined4 *)(puVar10 + 2)" (* "*") (cast_expression "(undefined4 *)(puVar10 + 2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 2)" (( "(") (binary_expression "puVar10 + 2" (identifier "puVar10") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0xfff")) (; ";")) (expression_statement "uVar2 = 0xfff;" (assignment_expression "uVar2 = 0xfff" (identifier "uVar2") (= "=") (number_literal "0xfff")) (; ";")) (expression_statement "*(uint *)(puVar10 + 4) = uVar8;" (assignment_expression "*(uint *)(puVar10 + 4) = uVar8" (pointer_expression "*(uint *)(puVar10 + 4)" (* "*") (cast_expression "(uint *)(puVar10 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 4)" (( "(") (binary_expression "puVar10 + 4" (identifier "puVar10") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "uVar8 = 0xfff;" (assignment_expression "uVar8 = 0xfff" (identifier "uVar8") (= "=") (number_literal "0xfff")) (; ";")) (expression_statement "iVar9 = iVar6;" (assignment_expression "iVar9 = iVar6" (identifier "iVar9") (= "=") (identifier "iVar6")) (; ";")) (goto_statement "goto LAB_00016168;" (goto "goto") (statement_identifier "LAB_00016168") (; ";")) (} "}"))) (labeled_statement "LAB_00016044:\n  (*(code *)PTR_free_000323e8)(puVar4);" (statement_identifier "LAB_00016044") (: ":") (expression_statement "(*(code *)PTR_free_000323e8)(puVar4);" (call_expression "(*(code *)PTR_free_000323e8)(puVar4)" (parenthesized_expression "(*(code *)PTR_free_000323e8)" (( "(") (pointer_expression "*(code *)PTR_free_000323e8" (* "*") (cast_expression "(code *)PTR_free_000323e8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_000323e8"))) () ")")) (argument_list "(puVar4)" (( "(") (identifier "puVar4") () ")"))) (; ";"))) (return_statement "return (undefined2 *)0x0;" (return "return") (cast_expression "(undefined2 *)0x0" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}")))

type_1 * function_1(char *var_1)

{
  type_2 *var_16;
  type_3 var_2;
  type_3 var_6;
  type_1 *var_11;
  char *var_4;
  int var_12;
  size_t n;
  type_3 var_3;
  int var_8;
  type_1 *var_15;
  type_4 var_9;
  int var_10;
  int var_14;
  type_4 var_13;
  
  var_2 = (type_3)*var_1;
  if ((var_2 - 0x30 & 0xff) < 8) {
    var_3 = 0;
    var_4 = var_1;
    do {
      var_3 = (var_3 * 8 + var_2) - 0x30;
      var_4 = var_4 + 1;
      if (0xfff < var_3) {
        return (type_1 *)0x0;
      }
      var_2 = (type_3)*var_4;
    } while ((var_2 - 0x30 & 0xff) < 8);
    if (var_2 != 0) {
      return (type_1 *)0x0;
    }
    var_9 = 0xfff;
    if ((int)var_4 - (int)var_1 < 5) {
      var_9 = var_3 & 0xc00 | 0x3ff;
    }
    var_11 = (type_1 *)var_5(0x20);
    var_11[1].flag = '\0';
    var_11->op = '=';
    var_11->flag = '\x01';
    var_11->value = var_3;
    var_11->mentioned = var_9;
    var_11->affected = 0xfff;
    return var_11;
  }
  n = 0x10;
  if (var_2 != 0) {
    var_3 = 1;
    var_4 = var_1;
    do {
      while (var_6 = var_2 & 0xffffffef, var_2 == 0x2b) {
        var_4 = var_4 + 1;
        var_2 = (type_3)*var_4;
        var_3 = var_3 + 1;
        if (var_2 == 0) goto LAB_00015fc8;
      }
      var_4 = var_4 + 1;
      var_2 = (type_3)*var_4;
      var_3 = var_3 + (var_6 == 0x2d);
    } while (var_2 != 0);
LAB_00015fc8:
    n = var_3 << 4;
    if (((int)n < 0) || (var_3 >> 0x1c != 0)) {
                    /* WARNING: Subroutine does not return */
      var_7();
    }
  }
  var_11 = (type_1 *)var_5(n);
  var_16 = PTR_s_operand_00032108;
  var_10 = 0;
LAB_0001600c:
  var_9 = 0;
  while( true ) {
    while( true ) {
      var_8 = (int)*var_1;
      if (var_8 != 0x61) break;
      var_9 = 0xfff;
      var_1 = var_1 + 1;
    }
    if (var_8 < 0x62) break;
    if (var_8 == 0x6f) {
      var_9 = var_9 | 0x207;
      var_1 = var_1 + 1;
    }
    else if (var_8 == 0x75) {
      var_9 = var_9 | 0x9c0;
      var_1 = var_1 + 1;
    }
    else {
      var_9 = var_9 | 0x438;
      if (var_8 != 0x67) goto LAB_00016044;
      var_1 = var_1 + 1;
    }
  }
  if (((var_8 != 0x2d) && (var_8 != 0x3d)) && (var_8 != 0x2b)) goto LAB_00016044;
  var_12 = (int)var_1[1];
  var_14 = var_10 + 1;
  var_15 = var_11 + var_10;
  if (var_12 == 0x67) goto LAB_00016194;
  while( true ) {
    var_4 = var_1 + 1;
    if (var_12 < 0x68) break;
    if (var_12 == 0x6f) {
      var_4 = var_1 + 2;
      var_13 = 7;
    }
    else {
      if (var_12 != 0x75) goto LAB_00016224;
      var_4 = var_1 + 2;
      var_13 = 0x1c0;
    }
    while( true ) {
      var_15->op = (char)var_8;
      var_15->flag = '\x03';
      var_15->affected = var_9;
      var_15->value = var_13;
      var_12 = (int)var_1[2];
LAB_0001615c:
      var_8 = var_12;
      if (var_9 != 0) {
        var_13 = var_13 & var_9;
      }
LAB_00016168:
      var_15->mentioned = var_13;
      if ((var_8 != 0x2b) && (((type_5)var_8 & 0xef) != 0x2d)) {
        var_1 = var_4 + 1;
        var_10 = var_14;
        if (var_8 == 0x2c) goto LAB_0001600c;
        if (var_8 == 0) {
          var_11[var_14].flag = '\0';
          return var_11;
        }
        goto LAB_00016044;
      }
      var_12 = (int)var_4[1];
      var_14 = var_14 + 1;
      var_15 = var_15 + 1;
      var_1 = var_4;
      if (var_12 != 0x67) break;
LAB_00016194:
      var_4 = var_1 + 2;
      var_13 = 0x38;
    }
  }
  var_2 = 0;
  if (7 < (var_12 - 0x30U & 0xff)) {
LAB_00016224:
    var_2 = var_12 - 0x58U & 0xff;
    var_13 = 0;
    if (var_2 < 0x21) {
                    /* WARNING: Could not emulate address calculation at 0x0001623c */
                    /* WARNING: Treating indirect jump as call */
      var_11 = (type_1 *)(*(type_6 *)(&_gp + *(int *)(var_16 + var_2 * 4 + 0x1e0)))();
      return var_11;
    }
    var_15->op = (char)var_8;
    var_15->flag = '\x01';
    var_15->affected = var_9;
    var_15->value = 0;
    goto LAB_0001615c;
  }
  do {
    var_2 = (var_2 * 8 + var_12) - 0x30;
    var_4 = var_4 + 1;
    if (0xfff < var_2) goto LAB_00016044;
    var_12 = (int)*var_4;
  } while ((var_12 - 0x30U & 0xff) < 8);
  if ((var_9 == 0) && ((var_12 == 0 || (var_12 == 0x2c)))) {
    var_15->op = (char)var_8;
    var_15->flag = '\x01';
    var_15->affected = 0xfff;
    var_9 = 0xfff;
    var_15->value = var_2;
    var_13 = 0xfff;
    var_8 = var_12;
    goto LAB_00016168;
  }
LAB_00016044:
  (*(type_6 *)PTR_free_000323e8)(var_11);
  return (type_1 *)0x0;
}


(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (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: (number_literal) right: (identifier))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) 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: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (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: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_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: (identifier) right: (number_literal))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (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: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) 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: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) right: (number_literal))) (return_statement (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))))) arguments: (argument_list))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (goto_statement label: (statement_identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (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: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))

undefined2 * MASKED(char *param_1)

{
  undefined *puVar1;
  uint uVar2;
  uint uVar3;
  undefined2 *puVar4;
  char *pcVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  int iVar9;
  undefined2 *puVar10;
  int iVar11;
  
  uVar2 = (uint)*param_1;
  if ((uVar2 - 0x30 & 0xff) < 8) {
    uVar8 = 0;
    pcVar5 = param_1;
    do {
      uVar8 = (uVar8 * 8 + uVar2) - 0x30;
      pcVar5 = pcVar5 + 1;
      if (0xfff < uVar8) {
        return (undefined2 *)0x0;
      }
      uVar2 = (uint)*pcVar5;
    } while ((uVar2 - 0x30 & 0xff) < 8);
    if (uVar2 != 0) {
      return (undefined2 *)0x0;
    }
    uVar2 = 0xfff;
    if ((int)pcVar5 - (int)param_1 < 5) {
      uVar2 = uVar8 & 0xc00 | 0x3ff;
    }
    puVar4 = (undefined2 *)xmalloc(0x20);
    *(undefined1 *)((int)puVar4 + 0x11) = 0;
    *puVar4 = 0x3d01;
    *(uint *)(puVar4 + 4) = uVar8;
    *(uint *)(puVar4 + 6) = uVar2;
    *(undefined4 *)(puVar4 + 2) = 0xfff;
    return puVar4;
  }
  iVar7 = 0x10;
  if (uVar2 != 0) {
    uVar8 = 1;
    pcVar5 = param_1;
    do {
      while (uVar3 = uVar2 & 0xffffffef, uVar2 == 0x2b) {
        pcVar5 = pcVar5 + 1;
        uVar2 = (uint)*pcVar5;
        uVar8 = uVar8 + 1;
        if (uVar2 == 0) goto LAB_00015fc8;
      }
      pcVar5 = pcVar5 + 1;
      uVar2 = (uint)*pcVar5;
      uVar8 = uVar8 + (uVar3 == 0x2d);
    } while (uVar2 != 0);
LAB_00015fc8:
    iVar7 = uVar8 << 4;
    if ((iVar7 < 0) || (uVar8 >> 0x1c != 0)) {
                    /* WARNING: Subroutine does not return */
      xalloc_die();
    }
  }
  puVar4 = (undefined2 *)xmalloc(iVar7);
  puVar1 = PTR_s_operand_00032108;
  iVar7 = 0;
LAB_0001600c:
  uVar2 = 0;
  while( true ) {
    while( true ) {
      iVar9 = (int)*param_1;
      if (iVar9 != 0x61) break;
      uVar2 = 0xfff;
      param_1 = param_1 + 1;
    }
    if (iVar9 < 0x62) break;
    if (iVar9 == 0x6f) {
      uVar2 = uVar2 | 0x207;
      param_1 = param_1 + 1;
    }
    else if (iVar9 == 0x75) {
      uVar2 = uVar2 | 0x9c0;
      param_1 = param_1 + 1;
    }
    else {
      uVar2 = uVar2 | 0x438;
      if (iVar9 != 0x67) goto LAB_00016044;
      param_1 = param_1 + 1;
    }
  }
  if (((iVar9 != 0x2d) && (iVar9 != 0x3d)) && (iVar9 != 0x2b)) goto LAB_00016044;
  iVar6 = (int)param_1[1];
  iVar11 = iVar7 + 1;
  puVar10 = puVar4 + iVar7 * 8;
  if (iVar6 == 0x67) goto LAB_00016194;
  while( true ) {
    pcVar5 = param_1 + 1;
    if (iVar6 < 0x68) break;
    if (iVar6 == 0x6f) {
      pcVar5 = param_1 + 2;
      uVar8 = 7;
    }
    else {
      if (iVar6 != 0x75) goto LAB_00016224;
      pcVar5 = param_1 + 2;
      uVar8 = 0x1c0;
    }
    while( true ) {
      *(char *)puVar10 = (char)iVar9;
      *(undefined1 *)((int)puVar10 + 1) = 3;
      *(uint *)(puVar10 + 2) = uVar2;
      *(uint *)(puVar10 + 4) = uVar8;
      iVar6 = (int)param_1[2];
LAB_0001615c:
      iVar9 = iVar6;
      if (uVar2 != 0) {
        uVar8 = uVar8 & uVar2;
      }
LAB_00016168:
      *(uint *)(puVar10 + 6) = uVar8;
      if ((iVar9 != 0x2b) && (((byte)iVar9 & 0xef) != 0x2d)) {
        param_1 = pcVar5 + 1;
        iVar7 = iVar11;
        if (iVar9 == 0x2c) goto LAB_0001600c;
        if (iVar9 == 0) {
          *(undefined1 *)((int)puVar4 + iVar11 * 0x10 + 1) = 0;
          return puVar4;
        }
        goto LAB_00016044;
      }
      iVar6 = (int)pcVar5[1];
      iVar11 = iVar11 + 1;
      puVar10 = puVar10 + 8;
      param_1 = pcVar5;
      if (iVar6 != 0x67) break;
LAB_00016194:
      pcVar5 = param_1 + 2;
      uVar8 = 0x38;
    }
  }
  uVar8 = 0;
  if (7 < (iVar6 - 0x30U & 0xff)) {
LAB_00016224:
    uVar3 = iVar6 - 0x58U & 0xff;
    uVar8 = 0;
    if (uVar3 < 0x21) {
                    /* WARNING: Could not emulate address calculation at 0x0001623c */
                    /* WARNING: Treating indirect jump as call */
      puVar4 = (undefined2 *)(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x1e0)))();
      return puVar4;
    }
    *(char *)puVar10 = (char)iVar9;
    *(undefined1 *)((int)puVar10 + 1) = 1;
    *(uint *)(puVar10 + 2) = uVar2;
    *(undefined4 *)(puVar10 + 4) = 0;
    goto LAB_0001615c;
  }
  do {
    uVar8 = (uVar8 * 8 + iVar6) - 0x30;
    pcVar5 = pcVar5 + 1;
    if (0xfff < uVar8) goto LAB_00016044;
    iVar6 = (int)*pcVar5;
  } while ((iVar6 - 0x30U & 0xff) < 8);
  if ((uVar2 == 0) && ((iVar6 == 0 || (iVar6 == 0x2c)))) {
    *(char *)puVar10 = (char)iVar9;
    *(undefined1 *)((int)puVar10 + 1) = 1;
    *(undefined4 *)(puVar10 + 2) = 0xfff;
    uVar2 = 0xfff;
    *(uint *)(puVar10 + 4) = uVar8;
    uVar8 = 0xfff;
    iVar9 = iVar6;
    goto LAB_00016168;
  }
LAB_00016044:
  (*(code *)PTR_free_000323e8)(puVar4);
  return (undefined2 *)0x0;
}

