
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void chain_group(void)

{
  int *piVar1;
  uint32_t uVar2;
  uint uVar3;
  node_conflict *pnVar4;
  node_conflict *pnVar5;
  uint info;
  code *pcVar6;
  uint *puVar7;
  code *pcVar8;
  
  do {
    uVar2 = next_token(0x7c3bd425);
  } while ((uVar2 & 0x8000) != 0);
  if ((uVar2 & 0x1000) != 0) {
    pcVar8 = (code *)(PTR_LAB_00131bb8 + 0x40);
    pcVar6 = (code *)(PTR_LAB_00131bb8 + 0x371c);
    piVar1 = (int *)PTR_ptr_to_globals_00131330;
    while (uVar2 = next_token(0x7c3bf425), uVar2 != 0x2000) {
      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {
        (*pcVar8)();
        (*pcVar6)();
        piVar1 = (int *)PTR_ptr_to_globals_00131330;
      }
    }
    return;
  }
  if ((uVar2 & 0x7c38c425) != 0) {
    rollback_token();
    chain_expr(0x10200);
    return;
  }
  puVar7 = *(uint **)PTR_ptr_to_globals_00131330;
  info = *puVar7;
  uVar3 = info & 0xff00;
  if (uVar3 == 0x900) {
    pnVar4 = chain_node(0x200);
    pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x11);
    chain_expr(*puVar7);
    return;
  }
  if (uVar3 < 0x901) {
    if (uVar3 != 0x500) {
      if (uVar3 == 0x800) {
        pnVar4 = chain_node(0x200);
        pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x12);
        chain_expr(*puVar7);
        return;
      }
      if (uVar3 != 0x400) goto LAB_000d38a4;
    }
    pnVar4 = chain_node(info);
    pnVar5 = parse_expr(0xe008);
    (pnVar4->l).n = pnVar5;
    if ((puVar7[1] & 8) != 0) {
      pnVar4->info = pnVar4->info | *puVar7;
      pnVar5 = parse_expr(0xe000);
      (pnVar4->r).n = pnVar5;
    }
    if ((puVar7[1] & 0x2000) != 0) {
      rollback_token();
    }
  }
  else {
    if (uVar3 == 0x3100) {
      pnVar4 = chain_node(0x200);
      pnVar5 = chain_loop((node_conflict *)0x0);
      pnVar4->a = pnVar5->a;
      next_token(0x20000);
      pnVar4 = condition();
      (pnVar5->l).n = pnVar4;
      return;
    }
    if (uVar3 < 0x3101) {
      if (uVar3 == 0x3000) {
        pnVar4 = chain_node(0x10700);
        pnVar5 = condition();
        (pnVar4->l).n = pnVar5;
        chain_group();
        pnVar5 = chain_node(0x200);
        pnVar4->r = *(anon_union_4_3_984e6678_for_r *)(puVar7[-0x13] + 4);
        uVar2 = next_token(0x7c3ff425);
        if (uVar2 == 0x40000) {
          chain_group();
          pnVar5->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4);
          return;
        }
        rollback_token();
        return;
      }
    }
    else {
      if (uVar3 == 0x3200) {
        next_token(1);
        pnVar4 = parse_expr(0x4002);
        if ((puVar7[1] & 2) == 0) {
          pnVar5 = chain_node(0x10200);
          (pnVar5->l).n = pnVar4;
          pnVar4 = parse_expr(0x4000);
          pnVar5 = parse_expr(2);
          pnVar5 = chain_loop(pnVar5);
          (pnVar5->l).n = pnVar4;
          if (pnVar4 != (node_conflict *)0x0) {
            return;
          }
          pnVar5->info = 0x200;
          return;
        }
        if ((pnVar4 != (node_conflict *)0x0) && ((pnVar4->info & 0xff00) == 0x1b00)) {
          pnVar5 = chain_node(0x30600);
          pnVar5->l = pnVar4->l;
          pnVar5->r = pnVar4->r;
          pnVar5 = chain_loop((node_conflict *)0x0);
          pnVar5->info = 0x10e00;
          pnVar5->l = pnVar4->l;
          return;
        }
                    /* WARNING: Subroutine does not return */
        syntax_error(PTR_DAT_001311dc + -0xd9b);
      }
      if (uVar3 == 0x3300) {
        pnVar4 = condition();
        pnVar5 = chain_loop((node_conflict *)0x0);
        (pnVar5->l).n = pnVar4;
        return;
      }
    }
LAB_000d38a4:
    chain_expr(info);
  }
  return;
}



void FUN_000d371c(void)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  undefined4 *puVar6;
  uint *puVar7;
  undefined1 *puVar8;
  code *pcVar9;
  uint *puVar10;
  code *pcVar11;
  
  do {
    uVar2 = FUN_000d2920(0x7c3bd425);
  } while ((uVar2 & 0x8000) != 0);
  if ((uVar2 & 0x1000) != 0) {
    pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);
    pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);
    piVar1 = (int *)PTR_DAT_00131330;
    while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {
      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {
        (*pcVar11)();
        (*pcVar9)();
        piVar1 = (int *)PTR_DAT_00131330;
      }
    }
    return;
  }
  if ((uVar2 & 0x7c38c425) != 0) {
    FUN_000d0040();
    FUN_000d3694(0x10200);
    return;
  }
  puVar10 = *(uint **)PTR_DAT_00131330;
  uVar2 = *puVar10 & 0xff00;
  if (uVar2 == 0x900) {
    iVar3 = FUN_000d0664(0x200);
    *(uint *)(iVar3 + 0x10) = puVar10[-0x11];
    FUN_000d3694(*puVar10);
    return;
  }
  if (uVar2 < 0x901) {
    if (uVar2 != 0x500) {
      if (uVar2 == 0x800) {
        iVar3 = FUN_000d0664(0x200);
        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];
        FUN_000d3694(*puVar10);
        return;
      }
      if (uVar2 != 0x400) goto LAB_000d38a4;
    }
    puVar7 = (uint *)FUN_000d0664();
    uVar2 = FUN_000d309c(0xe008);
    puVar7[2] = uVar2;
    if ((puVar10[1] & 8) != 0) {
      *puVar7 = *puVar7 | *puVar10;
      uVar2 = FUN_000d309c(0xe000);
      puVar7[3] = uVar2;
    }
    if ((puVar10[1] & 0x2000) != 0) {
      FUN_000d0040();
    }
  }
  else {
    if (uVar2 == 0x3100) {
      iVar3 = FUN_000d0664(0x200);
      iVar5 = FUN_000d3cc8(0);
      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);
      FUN_000d2920(0x20000);
      uVar4 = FUN_000d3640();
      *(undefined4 *)(iVar5 + 8) = uVar4;
      return;
    }
    if (uVar2 < 0x3101) {
      if (uVar2 == 0x3000) {
        iVar3 = FUN_000d0664(0x10700);
        uVar4 = FUN_000d3640();
        *(undefined4 *)(iVar3 + 8) = uVar4;
        FUN_000d371c();
        iVar5 = FUN_000d0664(0x200);
        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);
        iVar3 = FUN_000d2920(0x7c3ff425);
        if (iVar3 == 0x40000) {
          FUN_000d371c();
          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);
          return;
        }
        FUN_000d0040();
        return;
      }
    }
    else {
      if (uVar2 == 0x3200) {
        FUN_000d2920(1);
        puVar7 = (uint *)FUN_000d309c(0x4002);
        if ((puVar10[1] & 2) != 0) {
          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {
            puVar8 = PTR_DAT_001311dc + -0xd9b;
            FUN_000d11cc(puVar8);
          }
          iVar3 = FUN_000d0664(puVar8 + 0x600);
          *(uint *)(iVar3 + 8) = puVar7[2];
          *(uint *)(iVar3 + 0xc) = puVar7[3];
          puVar6 = (undefined4 *)FUN_000d3cc8(0);
          *puVar6 = 0x10e00;
          puVar6[2] = puVar7[2];
          return;
        }
        iVar3 = FUN_000d0664(0x10200);
        *(uint **)(iVar3 + 8) = puVar7;
        iVar3 = FUN_000d309c(0x4000);
        uVar4 = FUN_000d309c(2);
        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);
        puVar6[2] = iVar3;
        if (iVar3 != 0) {
          return;
        }
        *puVar6 = 0x200;
        return;
      }
      if (uVar2 == 0x3300) {
        uVar4 = FUN_000d3640();
        iVar3 = FUN_000d3cc8(0);
        *(undefined4 *)(iVar3 + 8) = uVar4;
        return;
      }
    }
LAB_000d38a4:
    FUN_000d3694();
  }
  return;
}


lui gp,0x6
addiu gp,gp,0x5a34
addu gp,gp,t9
addiu sp,sp,-0x38
sw ra,0x34(sp)
sw s5,0x30(sp)
sw s4,0x2c(sp)
sw s3,0x28(sp)
sw s2,0x24(sp)
sw s1,0x20(sp)
sw s0,0x1c(sp)
sw gp,0x10(sp)
lui s1,0x7c3b
ori s1,s1,0xd425
lw s0,-0x7598(gp)
addiu s0,s0,0x2920
or a0,s1,zero
or t9,s0,zero
bal 0x000d2920
_nop
lw gp,0x10(sp)
andi v1,v0,0x8000
bne v1,zero,0x000d375c
_andi v1,v0,0x1000
beq v1,zero,0x000d3820
_lw s3,-0x7598(gp)
addiu s3,s3,0x2920
lw s2,-0x7598(gp)
addiu s2,s2,0x40
lw s0,-0x7598(gp)
addiu s0,s0,0x371c
lui s1,0x7c3b
ori s1,s1,0xf425
li s5,0x2000
lw s4,-0x7e20(gp)
or a0,s1,zero
or t9,s3,zero
bal 0x000d2920
_nop
lw gp,0x10(sp)
bne v0,s5,0x000d37e8
_nop
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
lw v0,0x0(s4)
lw v0,0x4(v0)
andi v0,v0,0x8000
bne v0,zero,0x000d37a8
_or t9,s2,zero
jalr t9
_nop
lw gp,0x10(sp)
or t9,s0,zero
jalr t9
_nop
lw gp,0x10(sp)
b 0x000d379c
_lui s1,0x7c3b
lui v1,0x7c38
ori v1,v1,0xc425
and v0,v0,v1
beq v0,zero,0x000d3868
_lw t9,-0x7598(gp)
addiu t9,t9,0x40
bal 0x000d0040
_nop
lw gp,0x10(sp)
lui a0,0x1
addiu a0,a0,0x200
lw t9,-0x7598(gp)
addiu t9,t9,0x3694
bal 0x000d3694
_nop
lw gp,0x10(sp)
b 0x000d37c8
_lw ra,0x34(sp)
lw v0,-0x7e20(gp)
lw s0,0x0(v0)
lw a0,0x0(s0)
andi v0,a0,0xff00
li v1,0x900
beq v0,v1,0x000d3c88
_sltiu v1,v0,0x901
beq v1,zero,0x000d38c0
_li v1,0x500
beq v0,v1,0x000d3bb4
_li v1,0x800
beq v0,v1,0x000d3c48
_li v1,0x400
beq v0,v1,0x000d3bb8
_lw t9,-0x7598(gp)
lw t9,-0x7598(gp)
addiu t9,t9,0x3694
bal 0x000d3694
_nop
lw gp,0x10(sp)
b 0x000d37c8
_lw ra,0x34(sp)
li v1,0x3100
beq v0,v1,0x000d39f8
_sltiu v1,v0,0x3101
beq v1,zero,0x000d3994
_li v1,0x3000
bne v0,v1,0x000d38a4
_lw s1,-0x7598(gp)
lui a0,0x1
addiu a0,a0,0x700
addiu s1,s1,0x664
or t9,s1,zero
bal 0x000d0664
_nop
lw gp,0x10(sp)
or s2,v0,zero
lw t9,-0x7598(gp)
addiu t9,t9,0x3640
bal 0x000d3640
_nop
lw gp,0x10(sp)
sw v0,0x8(s2)
lw t9,-0x7598(gp)
addiu t9,t9,0x371c
bal 0x000d371c
_nop
lw gp,0x10(sp)
li a0,0x200
or t9,s1,zero
bal 0x000d0664
_nop
lw gp,0x10(sp)
or s1,v0,zero
lw v0,-0x4c(s0)
lw v0,0x4(v0)
sw v0,0xc(s2)
lui a0,0x7c3f
ori a0,a0,0xf425
lw t9,-0x7598(gp)
addiu t9,t9,0x2920
bal 0x000d2920
_nop
lw gp,0x10(sp)
lui v1,0x4
bne v0,v1,0x000d39dc
_lw t9,-0x7598(gp)
addiu t9,t9,0x371c
bal 0x000d371c
_nop
lw gp,0x10(sp)
lw v0,-0x4c(s0)
lw v0,0x4(v0)
b 0x000d37c4
_sw v0,0x10(s1)
li v1,0x3200
beq v0,v1,0x000d3a6c
_li v1,0x3300
bne v0,v1,0x000d38a4
_lw t9,-0x7598(gp)
addiu t9,t9,0x3640
bal 0x000d3640
_nop
lw gp,0x10(sp)
or s0,v0,zero
or a0,zero,zero
lw t9,-0x7598(gp)
addiu t9,t9,0x3cc8
bal 0x000d3cc8
_nop
lw gp,0x10(sp)
b 0x000d37c4
_sw s0,0x8(v0)
lw t9,-0x7598(gp)
addiu t9,t9,0x40
bal 0x000d0040
_nop
lw gp,0x10(sp)
b 0x000d37c8
_lw ra,0x34(sp)
li a0,0x200
lw t9,-0x7598(gp)
addiu t9,t9,0x664
bal 0x000d0664
_nop
lw gp,0x10(sp)
or s1,v0,zero
or a0,zero,zero
lw t9,-0x7598(gp)
addiu t9,t9,0x3cc8
bal 0x000d3cc8
_nop
lw gp,0x10(sp)
or s0,v0,zero
lw v0,0x10(v0)
sw v0,0x10(s1)
lui a0,0x2
lw t9,-0x7598(gp)
addiu t9,t9,0x2920
bal 0x000d2920
_nop
lw gp,0x10(sp)
lw t9,-0x7598(gp)
addiu t9,t9,0x3640
bal 0x000d3640
_nop
lw gp,0x10(sp)
b 0x000d37c4
_sw v0,0x8(s0)
li a0,0x1
lw t9,-0x7598(gp)
addiu t9,t9,0x2920
bal 0x000d2920
_nop
lw gp,0x10(sp)
li a0,0x4002
lw t9,-0x7598(gp)
addiu t9,t9,0x309c
bal 0x000d309c
_nop
lw gp,0x10(sp)
or s1,v0,zero
lw v0,0x4(s0)
andi v0,v0,0x2
beq v0,zero,0x000d3b38
_lui a0,0x1
beq s1,zero,0x000d3ac8
_li v1,0x1b00
lw v0,0x0(s1)
andi v0,v0,0xff00
beq v0,v1,0x000d3ae0
_lui a0,0x3
lw a0,-0x7f74(gp)
addiu a0,a0,-0xd9b
lw t9,-0x7598(gp)
addiu t9,t9,0x11cc
bal 0x000d11cc
_nop
addiu a0,a0,0x600
lw t9,-0x7598(gp)
addiu t9,t9,0x664
bal 0x000d0664
_nop
lw gp,0x10(sp)
lw v1,0x8(s1)
sw v1,0x8(v0)
lw v1,0xc(s1)
sw v1,0xc(v0)
or a0,zero,zero
lw t9,-0x7598(gp)
addiu t9,t9,0x3cc8
bal 0x000d3cc8
_nop
lw gp,0x10(sp)
lui v1,0x1
addiu v1,v1,0xe00
sw v1,0x0(v0)
lw v1,0x8(s1)
b 0x000d37c4
_sw v1,0x8(v0)
addiu a0,a0,0x200
lw t9,-0x7598(gp)
addiu t9,t9,0x664
bal 0x000d0664
_nop
lw gp,0x10(sp)
sw s1,0x8(v0)
li a0,0x4000
lw s0,-0x7598(gp)
addiu s0,s0,0x309c
or t9,s0,zero
bal 0x000d309c
_nop
lw gp,0x10(sp)
or s1,v0,zero
li a0,0x2
or t9,s0,zero
bal 0x000d309c
_nop
lw gp,0x10(sp)
or a0,v0,zero
lw t9,-0x7598(gp)
addiu t9,t9,0x3cc8
bal 0x000d3cc8
_nop
lw gp,0x10(sp)
bne s1,zero,0x000d37c4
_sw s1,0x8(v0)
li v1,0x200
b 0x000d37c4
_sw v1,0x0(v0)
lw t9,-0x7598(gp)
addiu t9,t9,0x664
bal 0x000d0664
_nop
lw gp,0x10(sp)
or s1,v0,zero
ori a0,zero,0xe008
lw t9,-0x7598(gp)
addiu t9,t9,0x309c
bal 0x000d309c
_nop
lw gp,0x10(sp)
sw v0,0x8(s1)
lw v0,0x4(s0)
andi v0,v0,0x8
beq v0,zero,0x000d3c20
_ori a0,zero,0xe000
lw v0,0x0(s1)
lw v1,0x0(s0)
or v0,v0,v1
sw v0,0x0(s1)
lw t9,-0x7598(gp)
addiu t9,t9,0x309c
bal 0x000d309c
_nop
lw gp,0x10(sp)
sw v0,0xc(s1)
lw v0,0x4(s0)
andi v0,v0,0x2000
beq v0,zero,0x000d37c4
_lw t9,-0x7598(gp)
addiu t9,t9,0x40
bal 0x000d0040
_nop
lw gp,0x10(sp)
b 0x000d37c8
_lw ra,0x34(sp)
li a0,0x200
lw t9,-0x7598(gp)
addiu t9,t9,0x664
bal 0x000d0664
_nop
lw gp,0x10(sp)
lw v1,-0x48(s0)
sw v1,0x10(v0)
lw a0,0x0(s0)
lw t9,-0x7598(gp)
addiu t9,t9,0x3694
bal 0x000d3694
_nop
lw gp,0x10(sp)
b 0x000d37c8
_lw ra,0x34(sp)
li a0,0x200
lw t9,-0x7598(gp)
addiu t9,t9,0x664
bal 0x000d0664
_nop
lw gp,0x10(sp)
lw v1,-0x44(s0)
sw v1,0x10(v0)
lw a0,0x0(s0)
lw t9,-0x7598(gp)
addiu t9,t9,0x3694
bal 0x000d3694
_nop
lw gp,0x10(sp)
b 0x000d37c8
_lw ra,0x34(sp)
(translation_unit "void FUN_000d371c(void)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  undefined1 *puVar8;\n  code *pcVar9;\n  uint *puVar10;\n  code *pcVar11;\n  \n  do {\n    uVar2 = FUN_000d2920(0x7c3bd425);\n  } while ((uVar2 & 0x8000) != 0);\n  if ((uVar2 & 0x1000) != 0) {\n    pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_DAT_00131330;\n    while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }\n    return;\n  }\n  if ((uVar2 & 0x7c38c425) != 0) {\n    FUN_000d0040();\n    FUN_000d3694(0x10200);\n    return;\n  }\n  puVar10 = *(uint **)PTR_DAT_00131330;\n  uVar2 = *puVar10 & 0xff00;\n  if (uVar2 == 0x900) {\n    iVar3 = FUN_000d0664(0x200);\n    *(uint *)(iVar3 + 0x10) = puVar10[-0x11];\n    FUN_000d3694(*puVar10);\n    return;\n  }\n  if (uVar2 < 0x901) {\n    if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }\n    puVar7 = (uint *)FUN_000d0664();\n    uVar2 = FUN_000d309c(0xe008);\n    puVar7[2] = uVar2;\n    if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }\n    if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }\n  }\n  else {\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }\n  return;\n}\n\n" (function_definition "void FUN_000d371c(void)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  undefined1 *puVar8;\n  code *pcVar9;\n  uint *puVar10;\n  code *pcVar11;\n  \n  do {\n    uVar2 = FUN_000d2920(0x7c3bd425);\n  } while ((uVar2 & 0x8000) != 0);\n  if ((uVar2 & 0x1000) != 0) {\n    pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_DAT_00131330;\n    while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }\n    return;\n  }\n  if ((uVar2 & 0x7c38c425) != 0) {\n    FUN_000d0040();\n    FUN_000d3694(0x10200);\n    return;\n  }\n  puVar10 = *(uint **)PTR_DAT_00131330;\n  uVar2 = *puVar10 & 0xff00;\n  if (uVar2 == 0x900) {\n    iVar3 = FUN_000d0664(0x200);\n    *(uint *)(iVar3 + 0x10) = puVar10[-0x11];\n    FUN_000d3694(*puVar10);\n    return;\n  }\n  if (uVar2 < 0x901) {\n    if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }\n    puVar7 = (uint *)FUN_000d0664();\n    uVar2 = FUN_000d309c(0xe008);\n    puVar7[2] = uVar2;\n    if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }\n    if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }\n  }\n  else {\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000d371c(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  undefined1 *puVar8;\n  code *pcVar9;\n  uint *puVar10;\n  code *pcVar11;\n  \n  do {\n    uVar2 = FUN_000d2920(0x7c3bd425);\n  } while ((uVar2 & 0x8000) != 0);\n  if ((uVar2 & 0x1000) != 0) {\n    pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_DAT_00131330;\n    while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }\n    return;\n  }\n  if ((uVar2 & 0x7c38c425) != 0) {\n    FUN_000d0040();\n    FUN_000d3694(0x10200);\n    return;\n  }\n  puVar10 = *(uint **)PTR_DAT_00131330;\n  uVar2 = *puVar10 & 0xff00;\n  if (uVar2 == 0x900) {\n    iVar3 = FUN_000d0664(0x200);\n    *(uint *)(iVar3 + 0x10) = puVar10[-0x11];\n    FUN_000d3694(*puVar10);\n    return;\n  }\n  if (uVar2 < 0x901) {\n    if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }\n    puVar7 = (uint *)FUN_000d0664();\n    uVar2 = FUN_000d309c(0xe008);\n    puVar7[2] = uVar2;\n    if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }\n    if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }\n  }\n  else {\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "code *pcVar9;" type_identifier (pointer_declarator "*pcVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (do_statement "do {\n    uVar2 = FUN_000d2920(0x7c3bd425);\n  } while ((uVar2 & 0x8000) != 0);" do (compound_statement "{\n    uVar2 = FUN_000d2920(0x7c3bd425);\n  }" { (expression_statement "uVar2 = FUN_000d2920(0x7c3bd425);" (assignment_expression "uVar2 = FUN_000d2920(0x7c3bd425)" identifier = (call_expression "FUN_000d2920(0x7c3bd425)" identifier (argument_list "(0x7c3bd425)" ( number_literal )))) ;) }) while (parenthesized_expression "((uVar2 & 0x8000) != 0)" ( (binary_expression "(uVar2 & 0x8000) != 0" (parenthesized_expression "(uVar2 & 0x8000)" ( (binary_expression "uVar2 & 0x8000" identifier & number_literal) )) != number_literal) )) ;) (if_statement "if ((uVar2 & 0x1000) != 0) {\n    pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_DAT_00131330;\n    while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }\n    return;\n  }" if (parenthesized_expression "((uVar2 & 0x1000) != 0)" ( (binary_expression "(uVar2 & 0x1000) != 0" (parenthesized_expression "(uVar2 & 0x1000)" ( (binary_expression "uVar2 & 0x1000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_DAT_00131330;\n    while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }\n    return;\n  }" { (expression_statement "pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);" (assignment_expression "pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40)" identifier = (cast_expression "(code *)(PTR_LAB_00131bb8 + 0x40)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00131bb8 + 0x40)" ( (binary_expression "PTR_LAB_00131bb8 + 0x40" identifier + number_literal) )))) ;) (expression_statement "pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);" (assignment_expression "pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c)" identifier = (cast_expression "(code *)(PTR_LAB_00131bb8 + 0x371c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00131bb8 + 0x371c)" ( (binary_expression "PTR_LAB_00131bb8 + 0x371c" identifier + number_literal) )))) ;) (expression_statement "piVar1 = (int *)PTR_DAT_00131330;" (assignment_expression "piVar1 = (int *)PTR_DAT_00131330" identifier = (cast_expression "(int *)PTR_DAT_00131330" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (while_statement "while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }" while (parenthesized_expression "(iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000)" ( (comma_expression "iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000" (assignment_expression "iVar3 = FUN_000d2920(0x7c3bf425)" identifier = (call_expression "FUN_000d2920(0x7c3bf425)" identifier (argument_list "(0x7c3bf425)" ( number_literal )))) , (binary_expression "iVar3 != 0x2000" identifier != number_literal)) )) (compound_statement "{\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }" { (if_statement "if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }" if (parenthesized_expression "((*(uint *)(*piVar1 + 4) & 0x8000) == 0)" ( (binary_expression "(*(uint *)(*piVar1 + 4) & 0x8000) == 0" (parenthesized_expression "(*(uint *)(*piVar1 + 4) & 0x8000)" ( (binary_expression "*(uint *)(*piVar1 + 4) & 0x8000" (pointer_expression "*(uint *)(*piVar1 + 4)" * (cast_expression "(uint *)(*piVar1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar1 + 4)" ( (binary_expression "*piVar1 + 4" (pointer_expression "*piVar1" * identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }" { (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "(*pcVar9)();" (call_expression "(*pcVar9)()" (parenthesized_expression "(*pcVar9)" ( (pointer_expression "*pcVar9" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar1 = (int *)PTR_DAT_00131330;" (assignment_expression "piVar1 = (int *)PTR_DAT_00131330" identifier = (cast_expression "(int *)PTR_DAT_00131330" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) })) (return_statement "return;" return ;) })) (if_statement "if ((uVar2 & 0x7c38c425) != 0) {\n    FUN_000d0040();\n    FUN_000d3694(0x10200);\n    return;\n  }" if (parenthesized_expression "((uVar2 & 0x7c38c425) != 0)" ( (binary_expression "(uVar2 & 0x7c38c425) != 0" (parenthesized_expression "(uVar2 & 0x7c38c425)" ( (binary_expression "uVar2 & 0x7c38c425" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    FUN_000d0040();\n    FUN_000d3694(0x10200);\n    return;\n  }" { (expression_statement "FUN_000d0040();" (call_expression "FUN_000d0040()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_000d3694(0x10200);" (call_expression "FUN_000d3694(0x10200)" identifier (argument_list "(0x10200)" ( number_literal ))) ;) (return_statement "return;" return ;) })) (expression_statement "puVar10 = *(uint **)PTR_DAT_00131330;" (assignment_expression "puVar10 = *(uint **)PTR_DAT_00131330" identifier = (pointer_expression "*(uint **)PTR_DAT_00131330" * (cast_expression "(uint **)PTR_DAT_00131330" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "uVar2 = *puVar10 & 0xff00;" (assignment_expression "uVar2 = *puVar10 & 0xff00" identifier = (binary_expression "*puVar10 & 0xff00" (pointer_expression "*puVar10" * identifier) & number_literal)) ;) (if_statement "if (uVar2 == 0x900) {\n    iVar3 = FUN_000d0664(0x200);\n    *(uint *)(iVar3 + 0x10) = puVar10[-0x11];\n    FUN_000d3694(*puVar10);\n    return;\n  }" if (parenthesized_expression "(uVar2 == 0x900)" ( (binary_expression "uVar2 == 0x900" identifier == number_literal) )) (compound_statement "{\n    iVar3 = FUN_000d0664(0x200);\n    *(uint *)(iVar3 + 0x10) = puVar10[-0x11];\n    FUN_000d3694(*puVar10);\n    return;\n  }" { (expression_statement "iVar3 = FUN_000d0664(0x200);" (assignment_expression "iVar3 = FUN_000d0664(0x200)" identifier = (call_expression "FUN_000d0664(0x200)" identifier (argument_list "(0x200)" ( number_literal )))) ;) (expression_statement "*(uint *)(iVar3 + 0x10) = puVar10[-0x11];" (assignment_expression "*(uint *)(iVar3 + 0x10) = puVar10[-0x11]" (pointer_expression "*(uint *)(iVar3 + 0x10)" * (cast_expression "(uint *)(iVar3 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) )))) = (subscript_expression "puVar10[-0x11]" identifier [ number_literal ])) ;) (expression_statement "FUN_000d3694(*puVar10);" (call_expression "FUN_000d3694(*puVar10)" identifier (argument_list "(*puVar10)" ( (pointer_expression "*puVar10" * identifier) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar2 < 0x901) {\n    if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }\n    puVar7 = (uint *)FUN_000d0664();\n    uVar2 = FUN_000d309c(0xe008);\n    puVar7[2] = uVar2;\n    if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }\n    if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }\n  }\n  else {\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }" if (parenthesized_expression "(uVar2 < 0x901)" ( (binary_expression "uVar2 < 0x901" identifier < number_literal) )) (compound_statement "{\n    if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }\n    puVar7 = (uint *)FUN_000d0664();\n    uVar2 = FUN_000d309c(0xe008);\n    puVar7[2] = uVar2;\n    if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }\n    if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }\n  }" { (if_statement "if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }" if (parenthesized_expression "(uVar2 != 0x500)" ( (binary_expression "uVar2 != 0x500" identifier != number_literal) )) (compound_statement "{\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }" { (if_statement "if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }" if (parenthesized_expression "(uVar2 == 0x800)" ( (binary_expression "uVar2 == 0x800" identifier == number_literal) )) (compound_statement "{\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }" { (expression_statement "iVar3 = FUN_000d0664(0x200);" (assignment_expression "iVar3 = FUN_000d0664(0x200)" identifier = (call_expression "FUN_000d0664(0x200)" identifier (argument_list "(0x200)" ( number_literal )))) ;) (expression_statement "*(uint *)(iVar3 + 0x10) = puVar10[-0x12];" (assignment_expression "*(uint *)(iVar3 + 0x10) = puVar10[-0x12]" (pointer_expression "*(uint *)(iVar3 + 0x10)" * (cast_expression "(uint *)(iVar3 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) )))) = (subscript_expression "puVar10[-0x12]" identifier [ number_literal ])) ;) (expression_statement "FUN_000d3694(*puVar10);" (call_expression "FUN_000d3694(*puVar10)" identifier (argument_list "(*puVar10)" ( (pointer_expression "*puVar10" * identifier) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar2 != 0x400) goto LAB_000d38a4;" if (parenthesized_expression "(uVar2 != 0x400)" ( (binary_expression "uVar2 != 0x400" identifier != number_literal) )) (goto_statement "goto LAB_000d38a4;" goto statement_identifier ;)) })) (expression_statement "puVar7 = (uint *)FUN_000d0664();" (assignment_expression "puVar7 = (uint *)FUN_000d0664()" identifier = (cast_expression "(uint *)FUN_000d0664()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000d0664()" identifier (argument_list "()" ( ))))) ;) (expression_statement "uVar2 = FUN_000d309c(0xe008);" (assignment_expression "uVar2 = FUN_000d309c(0xe008)" identifier = (call_expression "FUN_000d309c(0xe008)" identifier (argument_list "(0xe008)" ( number_literal )))) ;) (expression_statement "puVar7[2] = uVar2;" (assignment_expression "puVar7[2] = uVar2" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }" if (parenthesized_expression "((puVar10[1] & 8) != 0)" ( (binary_expression "(puVar10[1] & 8) != 0" (parenthesized_expression "(puVar10[1] & 8)" ( (binary_expression "puVar10[1] & 8" (subscript_expression "puVar10[1]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }" { (expression_statement "*puVar7 = *puVar7 | *puVar10;" (assignment_expression "*puVar7 = *puVar7 | *puVar10" (pointer_expression "*puVar7" * identifier) = (binary_expression "*puVar7 | *puVar10" (pointer_expression "*puVar7" * identifier) | (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "uVar2 = FUN_000d309c(0xe000);" (assignment_expression "uVar2 = FUN_000d309c(0xe000)" identifier = (call_expression "FUN_000d309c(0xe000)" identifier (argument_list "(0xe000)" ( number_literal )))) ;) (expression_statement "puVar7[3] = uVar2;" (assignment_expression "puVar7[3] = uVar2" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = identifier) ;) })) (if_statement "if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }" if (parenthesized_expression "((puVar10[1] & 0x2000) != 0)" ( (binary_expression "(puVar10[1] & 0x2000) != 0" (parenthesized_expression "(puVar10[1] & 0x2000)" ( (binary_expression "puVar10[1] & 0x2000" (subscript_expression "puVar10[1]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      FUN_000d0040();\n    }" { (expression_statement "FUN_000d0040();" (call_expression "FUN_000d0040()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }" else (compound_statement "{\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }" { (if_statement "if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }" if (parenthesized_expression "(uVar2 == 0x3100)" ( (binary_expression "uVar2 == 0x3100" identifier == number_literal) )) (compound_statement "{\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }" { (expression_statement "iVar3 = FUN_000d0664(0x200);" (assignment_expression "iVar3 = FUN_000d0664(0x200)" identifier = (call_expression "FUN_000d0664(0x200)" identifier (argument_list "(0x200)" ( number_literal )))) ;) (expression_statement "iVar5 = FUN_000d3cc8(0);" (assignment_expression "iVar5 = FUN_000d3cc8(0)" identifier = (call_expression "FUN_000d3cc8(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "*(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);" (assignment_expression "*(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10)" (pointer_expression "*(undefined4 *)(iVar3 + 0x10)" * (cast_expression "(undefined4 *)(iVar3 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" * (cast_expression "(undefined4 *)(iVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "FUN_000d2920(0x20000);" (call_expression "FUN_000d2920(0x20000)" identifier (argument_list "(0x20000)" ( number_literal ))) ;) (expression_statement "uVar4 = FUN_000d3640();" (assignment_expression "uVar4 = FUN_000d3640()" identifier = (call_expression "FUN_000d3640()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(iVar5 + 8) = uVar4;" (assignment_expression "*(undefined4 *)(iVar5 + 8) = uVar4" (pointer_expression "*(undefined4 *)(iVar5 + 8)" * (cast_expression "(undefined4 *)(iVar5 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }" if (parenthesized_expression "(uVar2 < 0x3101)" ( (binary_expression "uVar2 < 0x3101" identifier < number_literal) )) (compound_statement "{\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }" { (if_statement "if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }" if (parenthesized_expression "(uVar2 == 0x3000)" ( (binary_expression "uVar2 == 0x3000" identifier == number_literal) )) (compound_statement "{\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }" { (expression_statement "iVar3 = FUN_000d0664(0x10700);" (assignment_expression "iVar3 = FUN_000d0664(0x10700)" identifier = (call_expression "FUN_000d0664(0x10700)" identifier (argument_list "(0x10700)" ( number_literal )))) ;) (expression_statement "uVar4 = FUN_000d3640();" (assignment_expression "uVar4 = FUN_000d3640()" identifier = (call_expression "FUN_000d3640()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(iVar3 + 8) = uVar4;" (assignment_expression "*(undefined4 *)(iVar3 + 8) = uVar4" (pointer_expression "*(undefined4 *)(iVar3 + 8)" * (cast_expression "(undefined4 *)(iVar3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_000d371c();" (call_expression "FUN_000d371c()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar5 = FUN_000d0664(0x200);" (assignment_expression "iVar5 = FUN_000d0664(0x200)" identifier = (call_expression "FUN_000d0664(0x200)" identifier (argument_list "(0x200)" ( number_literal )))) ;) (expression_statement "*(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);" (assignment_expression "*(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4)" (pointer_expression "*(undefined4 *)(iVar3 + 0xc)" * (cast_expression "(undefined4 *)(iVar3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar10[-0x13] + 4)" * (cast_expression "(undefined4 *)(puVar10[-0x13] + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10[-0x13] + 4)" ( (binary_expression "puVar10[-0x13] + 4" (subscript_expression "puVar10[-0x13]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "iVar3 = FUN_000d2920(0x7c3ff425);" (assignment_expression "iVar3 = FUN_000d2920(0x7c3ff425)" identifier = (call_expression "FUN_000d2920(0x7c3ff425)" identifier (argument_list "(0x7c3ff425)" ( number_literal )))) ;) (if_statement "if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }" if (parenthesized_expression "(iVar3 == 0x40000)" ( (binary_expression "iVar3 == 0x40000" identifier == number_literal) )) (compound_statement "{\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }" { (expression_statement "FUN_000d371c();" (call_expression "FUN_000d371c()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);" (assignment_expression "*(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4)" (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" * (cast_expression "(undefined4 *)(iVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar10[-0x13] + 4)" * (cast_expression "(undefined4 *)(puVar10[-0x13] + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10[-0x13] + 4)" ( (binary_expression "puVar10[-0x13] + 4" (subscript_expression "puVar10[-0x13]" identifier [ number_literal ]) + number_literal) ))))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_000d0040();" (call_expression "FUN_000d0040()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }" else (compound_statement "{\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }" { (if_statement "if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }" if (parenthesized_expression "(uVar2 == 0x3200)" ( (binary_expression "uVar2 == 0x3200" identifier == number_literal) )) (compound_statement "{\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }" { (expression_statement "FUN_000d2920(1);" (call_expression "FUN_000d2920(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "puVar7 = (uint *)FUN_000d309c(0x4002);" (assignment_expression "puVar7 = (uint *)FUN_000d309c(0x4002)" identifier = (cast_expression "(uint *)FUN_000d309c(0x4002)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000d309c(0x4002)" identifier (argument_list "(0x4002)" ( number_literal ))))) ;) (if_statement "if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }" if (parenthesized_expression "((puVar10[1] & 2) != 0)" ( (binary_expression "(puVar10[1] & 2) != 0" (parenthesized_expression "(puVar10[1] & 2)" ( (binary_expression "puVar10[1] & 2" (subscript_expression "puVar10[1]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }" { (if_statement "if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }" if (parenthesized_expression "((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00))" ( (binary_expression "(puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)" (parenthesized_expression "(puVar7 == (uint *)0x0)" ( (binary_expression "puVar7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)" ( (comma_expression "puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00" (assignment_expression "puVar8 = &LAB_00030000" identifier = (pointer_expression "&LAB_00030000" & identifier)) , (binary_expression "(*puVar7 & 0xff00) != 0x1b00" (parenthesized_expression "(*puVar7 & 0xff00)" ( (binary_expression "*puVar7 & 0xff00" (pointer_expression "*puVar7" * identifier) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }" { (expression_statement "puVar8 = PTR_DAT_001311dc + -0xd9b;" (assignment_expression "puVar8 = PTR_DAT_001311dc + -0xd9b" identifier = (binary_expression "PTR_DAT_001311dc + -0xd9b" identifier + number_literal)) ;) (expression_statement "FUN_000d11cc(puVar8);" (call_expression "FUN_000d11cc(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) ;) })) (expression_statement "iVar3 = FUN_000d0664(puVar8 + 0x600);" (assignment_expression "iVar3 = FUN_000d0664(puVar8 + 0x600)" identifier = (call_expression "FUN_000d0664(puVar8 + 0x600)" identifier (argument_list "(puVar8 + 0x600)" ( (binary_expression "puVar8 + 0x600" identifier + number_literal) )))) ;) (expression_statement "*(uint *)(iVar3 + 8) = puVar7[2];" (assignment_expression "*(uint *)(iVar3 + 8) = puVar7[2]" (pointer_expression "*(uint *)(iVar3 + 8)" * (cast_expression "(uint *)(iVar3 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) = (subscript_expression "puVar7[2]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(iVar3 + 0xc) = puVar7[3];" (assignment_expression "*(uint *)(iVar3 + 0xc) = puVar7[3]" (pointer_expression "*(uint *)(iVar3 + 0xc)" * (cast_expression "(uint *)(iVar3 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (subscript_expression "puVar7[3]" identifier [ number_literal ])) ;) (expression_statement "puVar6 = (undefined4 *)FUN_000d3cc8(0);" (assignment_expression "puVar6 = (undefined4 *)FUN_000d3cc8(0)" identifier = (cast_expression "(undefined4 *)FUN_000d3cc8(0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000d3cc8(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (expression_statement "*puVar6 = 0x10e00;" (assignment_expression "*puVar6 = 0x10e00" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6[2] = puVar7[2];" (assignment_expression "puVar6[2] = puVar7[2]" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = (subscript_expression "puVar7[2]" identifier [ number_literal ])) ;) (return_statement "return;" return ;) })) (expression_statement "iVar3 = FUN_000d0664(0x10200);" (assignment_expression "iVar3 = FUN_000d0664(0x10200)" identifier = (call_expression "FUN_000d0664(0x10200)" identifier (argument_list "(0x10200)" ( number_literal )))) ;) (expression_statement "*(uint **)(iVar3 + 8) = puVar7;" (assignment_expression "*(uint **)(iVar3 + 8) = puVar7" (pointer_expression "*(uint **)(iVar3 + 8)" * (cast_expression "(uint **)(iVar3 + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = FUN_000d309c(0x4000);" (assignment_expression "iVar3 = FUN_000d309c(0x4000)" identifier = (call_expression "FUN_000d309c(0x4000)" identifier (argument_list "(0x4000)" ( number_literal )))) ;) (expression_statement "uVar4 = FUN_000d309c(2);" (assignment_expression "uVar4 = FUN_000d309c(2)" identifier = (call_expression "FUN_000d309c(2)" identifier (argument_list "(2)" ( number_literal )))) ;) (expression_statement "puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);" (assignment_expression "puVar6 = (undefined4 *)FUN_000d3cc8(uVar4)" identifier = (cast_expression "(undefined4 *)FUN_000d3cc8(uVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000d3cc8(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))))) ;) (expression_statement "puVar6[2] = iVar3;" (assignment_expression "puVar6[2] = iVar3" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar3 != 0) {\n          return;\n        }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "*puVar6 = 0x200;" (assignment_expression "*puVar6 = 0x200" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }" if (parenthesized_expression "(uVar2 == 0x3300)" ( (binary_expression "uVar2 == 0x3300" identifier == number_literal) )) (compound_statement "{\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }" { (expression_statement "uVar4 = FUN_000d3640();" (assignment_expression "uVar4 = FUN_000d3640()" identifier = (call_expression "FUN_000d3640()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar3 = FUN_000d3cc8(0);" (assignment_expression "iVar3 = FUN_000d3cc8(0)" identifier = (call_expression "FUN_000d3cc8(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "*(undefined4 *)(iVar3 + 8) = uVar4;" (assignment_expression "*(undefined4 *)(iVar3 + 8) = uVar4" (pointer_expression "*(undefined4 *)(iVar3 + 8)" * (cast_expression "(undefined4 *)(iVar3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) }))) (labeled_statement "LAB_000d38a4:\n    FUN_000d3694();" statement_identifier : (expression_statement "FUN_000d3694();" (call_expression "FUN_000d3694()" identifier (argument_list "()" ( ))) ;)) }))) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n\nvoid chain_group(void)\n\n{\n  int *piVar1;\n  uint32_t uVar2;\n  uint uVar3;\n  node_conflict *pnVar4;\n  node_conflict *pnVar5;\n  uint info;\n  code *pcVar6;\n  uint *puVar7;\n  code *pcVar8;\n  \n  do {\n    uVar2 = next_token(0x7c3bd425);\n  } while ((uVar2 & 0x8000) != 0);\n  if ((uVar2 & 0x1000) != 0) {\n    pcVar8 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar6 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_ptr_to_globals_00131330;\n    while (uVar2 = next_token(0x7c3bf425), uVar2 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar8)();\n        (*pcVar6)();\n        piVar1 = (int *)PTR_ptr_to_globals_00131330;\n      }\n    }\n    return;\n  }\n  if ((uVar2 & 0x7c38c425) != 0) {\n    rollback_token();\n    chain_expr(0x10200);\n    return;\n  }\n  puVar7 = *(uint **)PTR_ptr_to_globals_00131330;\n  info = *puVar7;\n  uVar3 = info & 0xff00;\n  if (uVar3 == 0x900) {\n    pnVar4 = chain_node(0x200);\n    pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x11);\n    chain_expr(*puVar7);\n    return;\n  }\n  if (uVar3 < 0x901) {\n    if (uVar3 != 0x500) {\n      if (uVar3 == 0x800) {\n        pnVar4 = chain_node(0x200);\n        pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x12);\n        chain_expr(*puVar7);\n        return;\n      }\n      if (uVar3 != 0x400) goto LAB_000d38a4;\n    }\n    pnVar4 = chain_node(info);\n    pnVar5 = parse_expr(0xe008);\n    (pnVar4->l).n = pnVar5;\n    if ((puVar7[1] & 8) != 0) {\n      pnVar4->info = pnVar4->info | *puVar7;\n      pnVar5 = parse_expr(0xe000);\n      (pnVar4->r).n = pnVar5;\n    }\n    if ((puVar7[1] & 0x2000) != 0) {\n      rollback_token();\n    }\n  }\n  else {\n    if (uVar3 == 0x3100) {\n      pnVar4 = chain_node(0x200);\n      pnVar5 = chain_loop((node_conflict *)0x0);\n      pnVar4->a = pnVar5->a;\n      next_token(0x20000);\n      pnVar4 = condition();\n      (pnVar5->l).n = pnVar4;\n      return;\n    }\n    if (uVar3 < 0x3101) {\n      if (uVar3 == 0x3000) {\n        pnVar4 = chain_node(0x10700);\n        pnVar5 = condition();\n        (pnVar4->l).n = pnVar5;\n        chain_group();\n        pnVar5 = chain_node(0x200);\n        pnVar4->r = *(anon_union_4_3_984e6678_for_r *)(puVar7[-0x13] + 4);\n        uVar2 = next_token(0x7c3ff425);\n        if (uVar2 == 0x40000) {\n          chain_group();\n          pnVar5->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4);\n          return;\n        }\n        rollback_token();\n        return;\n      }\n    }\n    else {\n      if (uVar3 == 0x3200) {\n        next_token(1);\n        pnVar4 = parse_expr(0x4002);\n        if ((puVar7[1] & 2) == 0) {\n          pnVar5 = chain_node(0x10200);\n          (pnVar5->l).n = pnVar4;\n          pnVar4 = parse_expr(0x4000);\n          pnVar5 = parse_expr(2);\n          pnVar5 = chain_loop(pnVar5);\n          (pnVar5->l).n = pnVar4;\n          if (pnVar4 != (node_conflict *)0x0) {\n            return;\n          }\n          pnVar5->info = 0x200;\n          return;\n        }\n        if ((pnVar4 != (node_conflict *)0x0) && ((pnVar4->info & 0xff00) == 0x1b00)) {\n          pnVar5 = chain_node(0x30600);\n          pnVar5->l = pnVar4->l;\n          pnVar5->r = pnVar4->r;\n          pnVar5 = chain_loop((node_conflict *)0x0);\n          pnVar5->info = 0x10e00;\n          pnVar5->l = pnVar4->l;\n          return;\n        }\n                    /* WARNING: Subroutine does not return */\n        syntax_error(PTR_DAT_001311dc + -0xd9b);\n      }\n      if (uVar3 == 0x3300) {\n        pnVar4 = condition();\n        pnVar5 = chain_loop((node_conflict *)0x0);\n        (pnVar5->l).n = pnVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    chain_expr(info);\n  }\n  return;\n}\n\n" comment (function_definition "void chain_group(void)\n\n{\n  int *piVar1;\n  uint32_t uVar2;\n  uint uVar3;\n  node_conflict *pnVar4;\n  node_conflict *pnVar5;\n  uint info;\n  code *pcVar6;\n  uint *puVar7;\n  code *pcVar8;\n  \n  do {\n    uVar2 = next_token(0x7c3bd425);\n  } while ((uVar2 & 0x8000) != 0);\n  if ((uVar2 & 0x1000) != 0) {\n    pcVar8 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar6 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_ptr_to_globals_00131330;\n    while (uVar2 = next_token(0x7c3bf425), uVar2 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar8)();\n        (*pcVar6)();\n        piVar1 = (int *)PTR_ptr_to_globals_00131330;\n      }\n    }\n    return;\n  }\n  if ((uVar2 & 0x7c38c425) != 0) {\n    rollback_token();\n    chain_expr(0x10200);\n    return;\n  }\n  puVar7 = *(uint **)PTR_ptr_to_globals_00131330;\n  info = *puVar7;\n  uVar3 = info & 0xff00;\n  if (uVar3 == 0x900) {\n    pnVar4 = chain_node(0x200);\n    pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x11);\n    chain_expr(*puVar7);\n    return;\n  }\n  if (uVar3 < 0x901) {\n    if (uVar3 != 0x500) {\n      if (uVar3 == 0x800) {\n        pnVar4 = chain_node(0x200);\n        pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x12);\n        chain_expr(*puVar7);\n        return;\n      }\n      if (uVar3 != 0x400) goto LAB_000d38a4;\n    }\n    pnVar4 = chain_node(info);\n    pnVar5 = parse_expr(0xe008);\n    (pnVar4->l).n = pnVar5;\n    if ((puVar7[1] & 8) != 0) {\n      pnVar4->info = pnVar4->info | *puVar7;\n      pnVar5 = parse_expr(0xe000);\n      (pnVar4->r).n = pnVar5;\n    }\n    if ((puVar7[1] & 0x2000) != 0) {\n      rollback_token();\n    }\n  }\n  else {\n    if (uVar3 == 0x3100) {\n      pnVar4 = chain_node(0x200);\n      pnVar5 = chain_loop((node_conflict *)0x0);\n      pnVar4->a = pnVar5->a;\n      next_token(0x20000);\n      pnVar4 = condition();\n      (pnVar5->l).n = pnVar4;\n      return;\n    }\n    if (uVar3 < 0x3101) {\n      if (uVar3 == 0x3000) {\n        pnVar4 = chain_node(0x10700);\n        pnVar5 = condition();\n        (pnVar4->l).n = pnVar5;\n        chain_group();\n        pnVar5 = chain_node(0x200);\n        pnVar4->r = *(anon_union_4_3_984e6678_for_r *)(puVar7[-0x13] + 4);\n        uVar2 = next_token(0x7c3ff425);\n        if (uVar2 == 0x40000) {\n          chain_group();\n          pnVar5->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4);\n          return;\n        }\n        rollback_token();\n        return;\n      }\n    }\n    else {\n      if (uVar3 == 0x3200) {\n        next_token(1);\n        pnVar4 = parse_expr(0x4002);\n        if ((puVar7[1] & 2) == 0) {\n          pnVar5 = chain_node(0x10200);\n          (pnVar5->l).n = pnVar4;\n          pnVar4 = parse_expr(0x4000);\n          pnVar5 = parse_expr(2);\n          pnVar5 = chain_loop(pnVar5);\n          (pnVar5->l).n = pnVar4;\n          if (pnVar4 != (node_conflict *)0x0) {\n            return;\n          }\n          pnVar5->info = 0x200;\n          return;\n        }\n        if ((pnVar4 != (node_conflict *)0x0) && ((pnVar4->info & 0xff00) == 0x1b00)) {\n          pnVar5 = chain_node(0x30600);\n          pnVar5->l = pnVar4->l;\n          pnVar5->r = pnVar4->r;\n          pnVar5 = chain_loop((node_conflict *)0x0);\n          pnVar5->info = 0x10e00;\n          pnVar5->l = pnVar4->l;\n          return;\n        }\n                    /* WARNING: Subroutine does not return */\n        syntax_error(PTR_DAT_001311dc + -0xd9b);\n      }\n      if (uVar3 == 0x3300) {\n        pnVar4 = condition();\n        pnVar5 = chain_loop((node_conflict *)0x0);\n        (pnVar5->l).n = pnVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    chain_expr(info);\n  }\n  return;\n}" primitive_type (function_declarator "chain_group(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int *piVar1;\n  uint32_t uVar2;\n  uint uVar3;\n  node_conflict *pnVar4;\n  node_conflict *pnVar5;\n  uint info;\n  code *pcVar6;\n  uint *puVar7;\n  code *pcVar8;\n  \n  do {\n    uVar2 = next_token(0x7c3bd425);\n  } while ((uVar2 & 0x8000) != 0);\n  if ((uVar2 & 0x1000) != 0) {\n    pcVar8 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar6 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_ptr_to_globals_00131330;\n    while (uVar2 = next_token(0x7c3bf425), uVar2 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar8)();\n        (*pcVar6)();\n        piVar1 = (int *)PTR_ptr_to_globals_00131330;\n      }\n    }\n    return;\n  }\n  if ((uVar2 & 0x7c38c425) != 0) {\n    rollback_token();\n    chain_expr(0x10200);\n    return;\n  }\n  puVar7 = *(uint **)PTR_ptr_to_globals_00131330;\n  info = *puVar7;\n  uVar3 = info & 0xff00;\n  if (uVar3 == 0x900) {\n    pnVar4 = chain_node(0x200);\n    pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x11);\n    chain_expr(*puVar7);\n    return;\n  }\n  if (uVar3 < 0x901) {\n    if (uVar3 != 0x500) {\n      if (uVar3 == 0x800) {\n        pnVar4 = chain_node(0x200);\n        pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x12);\n        chain_expr(*puVar7);\n        return;\n      }\n      if (uVar3 != 0x400) goto LAB_000d38a4;\n    }\n    pnVar4 = chain_node(info);\n    pnVar5 = parse_expr(0xe008);\n    (pnVar4->l).n = pnVar5;\n    if ((puVar7[1] & 8) != 0) {\n      pnVar4->info = pnVar4->info | *puVar7;\n      pnVar5 = parse_expr(0xe000);\n      (pnVar4->r).n = pnVar5;\n    }\n    if ((puVar7[1] & 0x2000) != 0) {\n      rollback_token();\n    }\n  }\n  else {\n    if (uVar3 == 0x3100) {\n      pnVar4 = chain_node(0x200);\n      pnVar5 = chain_loop((node_conflict *)0x0);\n      pnVar4->a = pnVar5->a;\n      next_token(0x20000);\n      pnVar4 = condition();\n      (pnVar5->l).n = pnVar4;\n      return;\n    }\n    if (uVar3 < 0x3101) {\n      if (uVar3 == 0x3000) {\n        pnVar4 = chain_node(0x10700);\n        pnVar5 = condition();\n        (pnVar4->l).n = pnVar5;\n        chain_group();\n        pnVar5 = chain_node(0x200);\n        pnVar4->r = *(anon_union_4_3_984e6678_for_r *)(puVar7[-0x13] + 4);\n        uVar2 = next_token(0x7c3ff425);\n        if (uVar2 == 0x40000) {\n          chain_group();\n          pnVar5->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4);\n          return;\n        }\n        rollback_token();\n        return;\n      }\n    }\n    else {\n      if (uVar3 == 0x3200) {\n        next_token(1);\n        pnVar4 = parse_expr(0x4002);\n        if ((puVar7[1] & 2) == 0) {\n          pnVar5 = chain_node(0x10200);\n          (pnVar5->l).n = pnVar4;\n          pnVar4 = parse_expr(0x4000);\n          pnVar5 = parse_expr(2);\n          pnVar5 = chain_loop(pnVar5);\n          (pnVar5->l).n = pnVar4;\n          if (pnVar4 != (node_conflict *)0x0) {\n            return;\n          }\n          pnVar5->info = 0x200;\n          return;\n        }\n        if ((pnVar4 != (node_conflict *)0x0) && ((pnVar4->info & 0xff00) == 0x1b00)) {\n          pnVar5 = chain_node(0x30600);\n          pnVar5->l = pnVar4->l;\n          pnVar5->r = pnVar4->r;\n          pnVar5 = chain_loop((node_conflict *)0x0);\n          pnVar5->info = 0x10e00;\n          pnVar5->l = pnVar4->l;\n          return;\n        }\n                    /* WARNING: Subroutine does not return */\n        syntax_error(PTR_DAT_001311dc + -0xd9b);\n      }\n      if (uVar3 == 0x3300) {\n        pnVar4 = condition();\n        pnVar5 = chain_loop((node_conflict *)0x0);\n        (pnVar5->l).n = pnVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    chain_expr(info);\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint32_t uVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "node_conflict *pnVar4;" type_identifier (pointer_declarator "*pnVar4" * identifier) ;) (declaration "node_conflict *pnVar5;" type_identifier (pointer_declarator "*pnVar5" * identifier) ;) (declaration "uint info;" type_identifier identifier ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "code *pcVar8;" type_identifier (pointer_declarator "*pcVar8" * identifier) ;) (do_statement "do {\n    uVar2 = next_token(0x7c3bd425);\n  } while ((uVar2 & 0x8000) != 0);" do (compound_statement "{\n    uVar2 = next_token(0x7c3bd425);\n  }" { (expression_statement "uVar2 = next_token(0x7c3bd425);" (assignment_expression "uVar2 = next_token(0x7c3bd425)" identifier = (call_expression "next_token(0x7c3bd425)" identifier (argument_list "(0x7c3bd425)" ( number_literal )))) ;) }) while (parenthesized_expression "((uVar2 & 0x8000) != 0)" ( (binary_expression "(uVar2 & 0x8000) != 0" (parenthesized_expression "(uVar2 & 0x8000)" ( (binary_expression "uVar2 & 0x8000" identifier & number_literal) )) != number_literal) )) ;) (if_statement "if ((uVar2 & 0x1000) != 0) {\n    pcVar8 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar6 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_ptr_to_globals_00131330;\n    while (uVar2 = next_token(0x7c3bf425), uVar2 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar8)();\n        (*pcVar6)();\n        piVar1 = (int *)PTR_ptr_to_globals_00131330;\n      }\n    }\n    return;\n  }" if (parenthesized_expression "((uVar2 & 0x1000) != 0)" ( (binary_expression "(uVar2 & 0x1000) != 0" (parenthesized_expression "(uVar2 & 0x1000)" ( (binary_expression "uVar2 & 0x1000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    pcVar8 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar6 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_ptr_to_globals_00131330;\n    while (uVar2 = next_token(0x7c3bf425), uVar2 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar8)();\n        (*pcVar6)();\n        piVar1 = (int *)PTR_ptr_to_globals_00131330;\n      }\n    }\n    return;\n  }" { (expression_statement "pcVar8 = (code *)(PTR_LAB_00131bb8 + 0x40);" (assignment_expression "pcVar8 = (code *)(PTR_LAB_00131bb8 + 0x40)" identifier = (cast_expression "(code *)(PTR_LAB_00131bb8 + 0x40)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00131bb8 + 0x40)" ( (binary_expression "PTR_LAB_00131bb8 + 0x40" identifier + number_literal) )))) ;) (expression_statement "pcVar6 = (code *)(PTR_LAB_00131bb8 + 0x371c);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_00131bb8 + 0x371c)" identifier = (cast_expression "(code *)(PTR_LAB_00131bb8 + 0x371c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00131bb8 + 0x371c)" ( (binary_expression "PTR_LAB_00131bb8 + 0x371c" identifier + number_literal) )))) ;) (expression_statement "piVar1 = (int *)PTR_ptr_to_globals_00131330;" (assignment_expression "piVar1 = (int *)PTR_ptr_to_globals_00131330" identifier = (cast_expression "(int *)PTR_ptr_to_globals_00131330" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (while_statement "while (uVar2 = next_token(0x7c3bf425), uVar2 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar8)();\n        (*pcVar6)();\n        piVar1 = (int *)PTR_ptr_to_globals_00131330;\n      }\n    }" while (parenthesized_expression "(uVar2 = next_token(0x7c3bf425), uVar2 != 0x2000)" ( (comma_expression "uVar2 = next_token(0x7c3bf425), uVar2 != 0x2000" (assignment_expression "uVar2 = next_token(0x7c3bf425)" identifier = (call_expression "next_token(0x7c3bf425)" identifier (argument_list "(0x7c3bf425)" ( number_literal )))) , (binary_expression "uVar2 != 0x2000" identifier != number_literal)) )) (compound_statement "{\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar8)();\n        (*pcVar6)();\n        piVar1 = (int *)PTR_ptr_to_globals_00131330;\n      }\n    }" { (if_statement "if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar8)();\n        (*pcVar6)();\n        piVar1 = (int *)PTR_ptr_to_globals_00131330;\n      }" if (parenthesized_expression "((*(uint *)(*piVar1 + 4) & 0x8000) == 0)" ( (binary_expression "(*(uint *)(*piVar1 + 4) & 0x8000) == 0" (parenthesized_expression "(*(uint *)(*piVar1 + 4) & 0x8000)" ( (binary_expression "*(uint *)(*piVar1 + 4) & 0x8000" (pointer_expression "*(uint *)(*piVar1 + 4)" * (cast_expression "(uint *)(*piVar1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar1 + 4)" ( (binary_expression "*piVar1 + 4" (pointer_expression "*piVar1" * identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        (*pcVar8)();\n        (*pcVar6)();\n        piVar1 = (int *)PTR_ptr_to_globals_00131330;\n      }" { (expression_statement "(*pcVar8)();" (call_expression "(*pcVar8)()" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "(*pcVar6)();" (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar1 = (int *)PTR_ptr_to_globals_00131330;" (assignment_expression "piVar1 = (int *)PTR_ptr_to_globals_00131330" identifier = (cast_expression "(int *)PTR_ptr_to_globals_00131330" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) })) (return_statement "return;" return ;) })) (if_statement "if ((uVar2 & 0x7c38c425) != 0) {\n    rollback_token();\n    chain_expr(0x10200);\n    return;\n  }" if (parenthesized_expression "((uVar2 & 0x7c38c425) != 0)" ( (binary_expression "(uVar2 & 0x7c38c425) != 0" (parenthesized_expression "(uVar2 & 0x7c38c425)" ( (binary_expression "uVar2 & 0x7c38c425" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    rollback_token();\n    chain_expr(0x10200);\n    return;\n  }" { (expression_statement "rollback_token();" (call_expression "rollback_token()" identifier (argument_list "()" ( ))) ;) (expression_statement "chain_expr(0x10200);" (call_expression "chain_expr(0x10200)" identifier (argument_list "(0x10200)" ( number_literal ))) ;) (return_statement "return;" return ;) })) (expression_statement "puVar7 = *(uint **)PTR_ptr_to_globals_00131330;" (assignment_expression "puVar7 = *(uint **)PTR_ptr_to_globals_00131330" identifier = (pointer_expression "*(uint **)PTR_ptr_to_globals_00131330" * (cast_expression "(uint **)PTR_ptr_to_globals_00131330" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "info = *puVar7;" (assignment_expression "info = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "uVar3 = info & 0xff00;" (assignment_expression "uVar3 = info & 0xff00" identifier = (binary_expression "info & 0xff00" identifier & number_literal)) ;) (if_statement "if (uVar3 == 0x900) {\n    pnVar4 = chain_node(0x200);\n    pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x11);\n    chain_expr(*puVar7);\n    return;\n  }" if (parenthesized_expression "(uVar3 == 0x900)" ( (binary_expression "uVar3 == 0x900" identifier == number_literal) )) (compound_statement "{\n    pnVar4 = chain_node(0x200);\n    pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x11);\n    chain_expr(*puVar7);\n    return;\n  }" { (expression_statement "pnVar4 = chain_node(0x200);" (assignment_expression "pnVar4 = chain_node(0x200)" identifier = (call_expression "chain_node(0x200)" identifier (argument_list "(0x200)" ( number_literal )))) ;) (expression_statement "pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x11);" (assignment_expression "pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x11)" (field_expression "pnVar4->a" identifier -> field_identifier) = (pointer_expression "*(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x11)" * (cast_expression "(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x11)" ( (type_descriptor "anon_union_4_1_54a3980e_for_a *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x11)" ( (binary_expression "puVar7 + -0x11" identifier + number_literal) ))))) ;) (expression_statement "chain_expr(*puVar7);" (call_expression "chain_expr(*puVar7)" identifier (argument_list "(*puVar7)" ( (pointer_expression "*puVar7" * identifier) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar3 < 0x901) {\n    if (uVar3 != 0x500) {\n      if (uVar3 == 0x800) {\n        pnVar4 = chain_node(0x200);\n        pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x12);\n        chain_expr(*puVar7);\n        return;\n      }\n      if (uVar3 != 0x400) goto LAB_000d38a4;\n    }\n    pnVar4 = chain_node(info);\n    pnVar5 = parse_expr(0xe008);\n    (pnVar4->l).n = pnVar5;\n    if ((puVar7[1] & 8) != 0) {\n      pnVar4->info = pnVar4->info | *puVar7;\n      pnVar5 = parse_expr(0xe000);\n      (pnVar4->r).n = pnVar5;\n    }\n    if ((puVar7[1] & 0x2000) != 0) {\n      rollback_token();\n    }\n  }\n  else {\n    if (uVar3 == 0x3100) {\n      pnVar4 = chain_node(0x200);\n      pnVar5 = chain_loop((node_conflict *)0x0);\n      pnVar4->a = pnVar5->a;\n      next_token(0x20000);\n      pnVar4 = condition();\n      (pnVar5->l).n = pnVar4;\n      return;\n    }\n    if (uVar3 < 0x3101) {\n      if (uVar3 == 0x3000) {\n        pnVar4 = chain_node(0x10700);\n        pnVar5 = condition();\n        (pnVar4->l).n = pnVar5;\n        chain_group();\n        pnVar5 = chain_node(0x200);\n        pnVar4->r = *(anon_union_4_3_984e6678_for_r *)(puVar7[-0x13] + 4);\n        uVar2 = next_token(0x7c3ff425);\n        if (uVar2 == 0x40000) {\n          chain_group();\n          pnVar5->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4);\n          return;\n        }\n        rollback_token();\n        return;\n      }\n    }\n    else {\n      if (uVar3 == 0x3200) {\n        next_token(1);\n        pnVar4 = parse_expr(0x4002);\n        if ((puVar7[1] & 2) == 0) {\n          pnVar5 = chain_node(0x10200);\n          (pnVar5->l).n = pnVar4;\n          pnVar4 = parse_expr(0x4000);\n          pnVar5 = parse_expr(2);\n          pnVar5 = chain_loop(pnVar5);\n          (pnVar5->l).n = pnVar4;\n          if (pnVar4 != (node_conflict *)0x0) {\n            return;\n          }\n          pnVar5->info = 0x200;\n          return;\n        }\n        if ((pnVar4 != (node_conflict *)0x0) && ((pnVar4->info & 0xff00) == 0x1b00)) {\n          pnVar5 = chain_node(0x30600);\n          pnVar5->l = pnVar4->l;\n          pnVar5->r = pnVar4->r;\n          pnVar5 = chain_loop((node_conflict *)0x0);\n          pnVar5->info = 0x10e00;\n          pnVar5->l = pnVar4->l;\n          return;\n        }\n                    /* WARNING: Subroutine does not return */\n        syntax_error(PTR_DAT_001311dc + -0xd9b);\n      }\n      if (uVar3 == 0x3300) {\n        pnVar4 = condition();\n        pnVar5 = chain_loop((node_conflict *)0x0);\n        (pnVar5->l).n = pnVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    chain_expr(info);\n  }" if (parenthesized_expression "(uVar3 < 0x901)" ( (binary_expression "uVar3 < 0x901" identifier < number_literal) )) (compound_statement "{\n    if (uVar3 != 0x500) {\n      if (uVar3 == 0x800) {\n        pnVar4 = chain_node(0x200);\n        pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x12);\n        chain_expr(*puVar7);\n        return;\n      }\n      if (uVar3 != 0x400) goto LAB_000d38a4;\n    }\n    pnVar4 = chain_node(info);\n    pnVar5 = parse_expr(0xe008);\n    (pnVar4->l).n = pnVar5;\n    if ((puVar7[1] & 8) != 0) {\n      pnVar4->info = pnVar4->info | *puVar7;\n      pnVar5 = parse_expr(0xe000);\n      (pnVar4->r).n = pnVar5;\n    }\n    if ((puVar7[1] & 0x2000) != 0) {\n      rollback_token();\n    }\n  }" { (if_statement "if (uVar3 != 0x500) {\n      if (uVar3 == 0x800) {\n        pnVar4 = chain_node(0x200);\n        pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x12);\n        chain_expr(*puVar7);\n        return;\n      }\n      if (uVar3 != 0x400) goto LAB_000d38a4;\n    }" if (parenthesized_expression "(uVar3 != 0x500)" ( (binary_expression "uVar3 != 0x500" identifier != number_literal) )) (compound_statement "{\n      if (uVar3 == 0x800) {\n        pnVar4 = chain_node(0x200);\n        pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x12);\n        chain_expr(*puVar7);\n        return;\n      }\n      if (uVar3 != 0x400) goto LAB_000d38a4;\n    }" { (if_statement "if (uVar3 == 0x800) {\n        pnVar4 = chain_node(0x200);\n        pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x12);\n        chain_expr(*puVar7);\n        return;\n      }" if (parenthesized_expression "(uVar3 == 0x800)" ( (binary_expression "uVar3 == 0x800" identifier == number_literal) )) (compound_statement "{\n        pnVar4 = chain_node(0x200);\n        pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x12);\n        chain_expr(*puVar7);\n        return;\n      }" { (expression_statement "pnVar4 = chain_node(0x200);" (assignment_expression "pnVar4 = chain_node(0x200)" identifier = (call_expression "chain_node(0x200)" identifier (argument_list "(0x200)" ( number_literal )))) ;) (expression_statement "pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x12);" (assignment_expression "pnVar4->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x12)" (field_expression "pnVar4->a" identifier -> field_identifier) = (pointer_expression "*(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x12)" * (cast_expression "(anon_union_4_1_54a3980e_for_a *)(puVar7 + -0x12)" ( (type_descriptor "anon_union_4_1_54a3980e_for_a *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x12)" ( (binary_expression "puVar7 + -0x12" identifier + number_literal) ))))) ;) (expression_statement "chain_expr(*puVar7);" (call_expression "chain_expr(*puVar7)" identifier (argument_list "(*puVar7)" ( (pointer_expression "*puVar7" * identifier) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar3 != 0x400) goto LAB_000d38a4;" if (parenthesized_expression "(uVar3 != 0x400)" ( (binary_expression "uVar3 != 0x400" identifier != number_literal) )) (goto_statement "goto LAB_000d38a4;" goto statement_identifier ;)) })) (expression_statement "pnVar4 = chain_node(info);" (assignment_expression "pnVar4 = chain_node(info)" identifier = (call_expression "chain_node(info)" identifier (argument_list "(info)" ( identifier )))) ;) (expression_statement "pnVar5 = parse_expr(0xe008);" (assignment_expression "pnVar5 = parse_expr(0xe008)" identifier = (call_expression "parse_expr(0xe008)" identifier (argument_list "(0xe008)" ( number_literal )))) ;) (expression_statement "(pnVar4->l).n = pnVar5;" (assignment_expression "(pnVar4->l).n = pnVar5" (field_expression "(pnVar4->l).n" (parenthesized_expression "(pnVar4->l)" ( (field_expression "pnVar4->l" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if ((puVar7[1] & 8) != 0) {\n      pnVar4->info = pnVar4->info | *puVar7;\n      pnVar5 = parse_expr(0xe000);\n      (pnVar4->r).n = pnVar5;\n    }" if (parenthesized_expression "((puVar7[1] & 8) != 0)" ( (binary_expression "(puVar7[1] & 8) != 0" (parenthesized_expression "(puVar7[1] & 8)" ( (binary_expression "puVar7[1] & 8" (subscript_expression "puVar7[1]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      pnVar4->info = pnVar4->info | *puVar7;\n      pnVar5 = parse_expr(0xe000);\n      (pnVar4->r).n = pnVar5;\n    }" { (expression_statement "pnVar4->info = pnVar4->info | *puVar7;" (assignment_expression "pnVar4->info = pnVar4->info | *puVar7" (field_expression "pnVar4->info" identifier -> field_identifier) = (binary_expression "pnVar4->info | *puVar7" (field_expression "pnVar4->info" identifier -> field_identifier) | (pointer_expression "*puVar7" * identifier))) ;) (expression_statement "pnVar5 = parse_expr(0xe000);" (assignment_expression "pnVar5 = parse_expr(0xe000)" identifier = (call_expression "parse_expr(0xe000)" identifier (argument_list "(0xe000)" ( number_literal )))) ;) (expression_statement "(pnVar4->r).n = pnVar5;" (assignment_expression "(pnVar4->r).n = pnVar5" (field_expression "(pnVar4->r).n" (parenthesized_expression "(pnVar4->r)" ( (field_expression "pnVar4->r" identifier -> field_identifier) )) . field_identifier) = identifier) ;) })) (if_statement "if ((puVar7[1] & 0x2000) != 0) {\n      rollback_token();\n    }" if (parenthesized_expression "((puVar7[1] & 0x2000) != 0)" ( (binary_expression "(puVar7[1] & 0x2000) != 0" (parenthesized_expression "(puVar7[1] & 0x2000)" ( (binary_expression "puVar7[1] & 0x2000" (subscript_expression "puVar7[1]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      rollback_token();\n    }" { (expression_statement "rollback_token();" (call_expression "rollback_token()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n    if (uVar3 == 0x3100) {\n      pnVar4 = chain_node(0x200);\n      pnVar5 = chain_loop((node_conflict *)0x0);\n      pnVar4->a = pnVar5->a;\n      next_token(0x20000);\n      pnVar4 = condition();\n      (pnVar5->l).n = pnVar4;\n      return;\n    }\n    if (uVar3 < 0x3101) {\n      if (uVar3 == 0x3000) {\n        pnVar4 = chain_node(0x10700);\n        pnVar5 = condition();\n        (pnVar4->l).n = pnVar5;\n        chain_group();\n        pnVar5 = chain_node(0x200);\n        pnVar4->r = *(anon_union_4_3_984e6678_for_r *)(puVar7[-0x13] + 4);\n        uVar2 = next_token(0x7c3ff425);\n        if (uVar2 == 0x40000) {\n          chain_group();\n          pnVar5->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4);\n          return;\n        }\n        rollback_token();\n        return;\n      }\n    }\n    else {\n      if (uVar3 == 0x3200) {\n        next_token(1);\n        pnVar4 = parse_expr(0x4002);\n        if ((puVar7[1] & 2) == 0) {\n          pnVar5 = chain_node(0x10200);\n          (pnVar5->l).n = pnVar4;\n          pnVar4 = parse_expr(0x4000);\n          pnVar5 = parse_expr(2);\n          pnVar5 = chain_loop(pnVar5);\n          (pnVar5->l).n = pnVar4;\n          if (pnVar4 != (node_conflict *)0x0) {\n            return;\n          }\n          pnVar5->info = 0x200;\n          return;\n        }\n        if ((pnVar4 != (node_conflict *)0x0) && ((pnVar4->info & 0xff00) == 0x1b00)) {\n          pnVar5 = chain_node(0x30600);\n          pnVar5->l = pnVar4->l;\n          pnVar5->r = pnVar4->r;\n          pnVar5 = chain_loop((node_conflict *)0x0);\n          pnVar5->info = 0x10e00;\n          pnVar5->l = pnVar4->l;\n          return;\n        }\n                    /* WARNING: Subroutine does not return */\n        syntax_error(PTR_DAT_001311dc + -0xd9b);\n      }\n      if (uVar3 == 0x3300) {\n        pnVar4 = condition();\n        pnVar5 = chain_loop((node_conflict *)0x0);\n        (pnVar5->l).n = pnVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    chain_expr(info);\n  }" else (compound_statement "{\n    if (uVar3 == 0x3100) {\n      pnVar4 = chain_node(0x200);\n      pnVar5 = chain_loop((node_conflict *)0x0);\n      pnVar4->a = pnVar5->a;\n      next_token(0x20000);\n      pnVar4 = condition();\n      (pnVar5->l).n = pnVar4;\n      return;\n    }\n    if (uVar3 < 0x3101) {\n      if (uVar3 == 0x3000) {\n        pnVar4 = chain_node(0x10700);\n        pnVar5 = condition();\n        (pnVar4->l).n = pnVar5;\n        chain_group();\n        pnVar5 = chain_node(0x200);\n        pnVar4->r = *(anon_union_4_3_984e6678_for_r *)(puVar7[-0x13] + 4);\n        uVar2 = next_token(0x7c3ff425);\n        if (uVar2 == 0x40000) {\n          chain_group();\n          pnVar5->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4);\n          return;\n        }\n        rollback_token();\n        return;\n      }\n    }\n    else {\n      if (uVar3 == 0x3200) {\n        next_token(1);\n        pnVar4 = parse_expr(0x4002);\n        if ((puVar7[1] & 2) == 0) {\n          pnVar5 = chain_node(0x10200);\n          (pnVar5->l).n = pnVar4;\n          pnVar4 = parse_expr(0x4000);\n          pnVar5 = parse_expr(2);\n          pnVar5 = chain_loop(pnVar5);\n          (pnVar5->l).n = pnVar4;\n          if (pnVar4 != (node_conflict *)0x0) {\n            return;\n          }\n          pnVar5->info = 0x200;\n          return;\n        }\n        if ((pnVar4 != (node_conflict *)0x0) && ((pnVar4->info & 0xff00) == 0x1b00)) {\n          pnVar5 = chain_node(0x30600);\n          pnVar5->l = pnVar4->l;\n          pnVar5->r = pnVar4->r;\n          pnVar5 = chain_loop((node_conflict *)0x0);\n          pnVar5->info = 0x10e00;\n          pnVar5->l = pnVar4->l;\n          return;\n        }\n                    /* WARNING: Subroutine does not return */\n        syntax_error(PTR_DAT_001311dc + -0xd9b);\n      }\n      if (uVar3 == 0x3300) {\n        pnVar4 = condition();\n        pnVar5 = chain_loop((node_conflict *)0x0);\n        (pnVar5->l).n = pnVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    chain_expr(info);\n  }" { (if_statement "if (uVar3 == 0x3100) {\n      pnVar4 = chain_node(0x200);\n      pnVar5 = chain_loop((node_conflict *)0x0);\n      pnVar4->a = pnVar5->a;\n      next_token(0x20000);\n      pnVar4 = condition();\n      (pnVar5->l).n = pnVar4;\n      return;\n    }" if (parenthesized_expression "(uVar3 == 0x3100)" ( (binary_expression "uVar3 == 0x3100" identifier == number_literal) )) (compound_statement "{\n      pnVar4 = chain_node(0x200);\n      pnVar5 = chain_loop((node_conflict *)0x0);\n      pnVar4->a = pnVar5->a;\n      next_token(0x20000);\n      pnVar4 = condition();\n      (pnVar5->l).n = pnVar4;\n      return;\n    }" { (expression_statement "pnVar4 = chain_node(0x200);" (assignment_expression "pnVar4 = chain_node(0x200)" identifier = (call_expression "chain_node(0x200)" identifier (argument_list "(0x200)" ( number_literal )))) ;) (expression_statement "pnVar5 = chain_loop((node_conflict *)0x0);" (assignment_expression "pnVar5 = chain_loop((node_conflict *)0x0)" identifier = (call_expression "chain_loop((node_conflict *)0x0)" identifier (argument_list "((node_conflict *)0x0)" ( (cast_expression "(node_conflict *)0x0" ( (type_descriptor "node_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (expression_statement "pnVar4->a = pnVar5->a;" (assignment_expression "pnVar4->a = pnVar5->a" (field_expression "pnVar4->a" identifier -> field_identifier) = (field_expression "pnVar5->a" identifier -> field_identifier)) ;) (expression_statement "next_token(0x20000);" (call_expression "next_token(0x20000)" identifier (argument_list "(0x20000)" ( number_literal ))) ;) (expression_statement "pnVar4 = condition();" (assignment_expression "pnVar4 = condition()" identifier = (call_expression "condition()" identifier (argument_list "()" ( )))) ;) (expression_statement "(pnVar5->l).n = pnVar4;" (assignment_expression "(pnVar5->l).n = pnVar4" (field_expression "(pnVar5->l).n" (parenthesized_expression "(pnVar5->l)" ( (field_expression "pnVar5->l" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar3 < 0x3101) {\n      if (uVar3 == 0x3000) {\n        pnVar4 = chain_node(0x10700);\n        pnVar5 = condition();\n        (pnVar4->l).n = pnVar5;\n        chain_group();\n        pnVar5 = chain_node(0x200);\n        pnVar4->r = *(anon_union_4_3_984e6678_for_r *)(puVar7[-0x13] + 4);\n        uVar2 = next_token(0x7c3ff425);\n        if (uVar2 == 0x40000) {\n          chain_group();\n          pnVar5->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4);\n          return;\n        }\n        rollback_token();\n        return;\n      }\n    }\n    else {\n      if (uVar3 == 0x3200) {\n        next_token(1);\n        pnVar4 = parse_expr(0x4002);\n        if ((puVar7[1] & 2) == 0) {\n          pnVar5 = chain_node(0x10200);\n          (pnVar5->l).n = pnVar4;\n          pnVar4 = parse_expr(0x4000);\n          pnVar5 = parse_expr(2);\n          pnVar5 = chain_loop(pnVar5);\n          (pnVar5->l).n = pnVar4;\n          if (pnVar4 != (node_conflict *)0x0) {\n            return;\n          }\n          pnVar5->info = 0x200;\n          return;\n        }\n        if ((pnVar4 != (node_conflict *)0x0) && ((pnVar4->info & 0xff00) == 0x1b00)) {\n          pnVar5 = chain_node(0x30600);\n          pnVar5->l = pnVar4->l;\n          pnVar5->r = pnVar4->r;\n          pnVar5 = chain_loop((node_conflict *)0x0);\n          pnVar5->info = 0x10e00;\n          pnVar5->l = pnVar4->l;\n          return;\n        }\n                    /* WARNING: Subroutine does not return */\n        syntax_error(PTR_DAT_001311dc + -0xd9b);\n      }\n      if (uVar3 == 0x3300) {\n        pnVar4 = condition();\n        pnVar5 = chain_loop((node_conflict *)0x0);\n        (pnVar5->l).n = pnVar4;\n        return;\n      }\n    }" if (parenthesized_expression "(uVar3 < 0x3101)" ( (binary_expression "uVar3 < 0x3101" identifier < number_literal) )) (compound_statement "{\n      if (uVar3 == 0x3000) {\n        pnVar4 = chain_node(0x10700);\n        pnVar5 = condition();\n        (pnVar4->l).n = pnVar5;\n        chain_group();\n        pnVar5 = chain_node(0x200);\n        pnVar4->r = *(anon_union_4_3_984e6678_for_r *)(puVar7[-0x13] + 4);\n        uVar2 = next_token(0x7c3ff425);\n        if (uVar2 == 0x40000) {\n          chain_group();\n          pnVar5->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4);\n          return;\n        }\n        rollback_token();\n        return;\n      }\n    }" { (if_statement "if (uVar3 == 0x3000) {\n        pnVar4 = chain_node(0x10700);\n        pnVar5 = condition();\n        (pnVar4->l).n = pnVar5;\n        chain_group();\n        pnVar5 = chain_node(0x200);\n        pnVar4->r = *(anon_union_4_3_984e6678_for_r *)(puVar7[-0x13] + 4);\n        uVar2 = next_token(0x7c3ff425);\n        if (uVar2 == 0x40000) {\n          chain_group();\n          pnVar5->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4);\n          return;\n        }\n        rollback_token();\n        return;\n      }" if (parenthesized_expression "(uVar3 == 0x3000)" ( (binary_expression "uVar3 == 0x3000" identifier == number_literal) )) (compound_statement "{\n        pnVar4 = chain_node(0x10700);\n        pnVar5 = condition();\n        (pnVar4->l).n = pnVar5;\n        chain_group();\n        pnVar5 = chain_node(0x200);\n        pnVar4->r = *(anon_union_4_3_984e6678_for_r *)(puVar7[-0x13] + 4);\n        uVar2 = next_token(0x7c3ff425);\n        if (uVar2 == 0x40000) {\n          chain_group();\n          pnVar5->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4);\n          return;\n        }\n        rollback_token();\n        return;\n      }" { (expression_statement "pnVar4 = chain_node(0x10700);" (assignment_expression "pnVar4 = chain_node(0x10700)" identifier = (call_expression "chain_node(0x10700)" identifier (argument_list "(0x10700)" ( number_literal )))) ;) (expression_statement "pnVar5 = condition();" (assignment_expression "pnVar5 = condition()" identifier = (call_expression "condition()" identifier (argument_list "()" ( )))) ;) (expression_statement "(pnVar4->l).n = pnVar5;" (assignment_expression "(pnVar4->l).n = pnVar5" (field_expression "(pnVar4->l).n" (parenthesized_expression "(pnVar4->l)" ( (field_expression "pnVar4->l" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "chain_group();" (call_expression "chain_group()" identifier (argument_list "()" ( ))) ;) (expression_statement "pnVar5 = chain_node(0x200);" (assignment_expression "pnVar5 = chain_node(0x200)" identifier = (call_expression "chain_node(0x200)" identifier (argument_list "(0x200)" ( number_literal )))) ;) (expression_statement "pnVar4->r = *(anon_union_4_3_984e6678_for_r *)(puVar7[-0x13] + 4);" (assignment_expression "pnVar4->r = *(anon_union_4_3_984e6678_for_r *)(puVar7[-0x13] + 4)" (field_expression "pnVar4->r" identifier -> field_identifier) = (pointer_expression "*(anon_union_4_3_984e6678_for_r *)(puVar7[-0x13] + 4)" * (cast_expression "(anon_union_4_3_984e6678_for_r *)(puVar7[-0x13] + 4)" ( (type_descriptor "anon_union_4_3_984e6678_for_r *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7[-0x13] + 4)" ( (binary_expression "puVar7[-0x13] + 4" (subscript_expression "puVar7[-0x13]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "uVar2 = next_token(0x7c3ff425);" (assignment_expression "uVar2 = next_token(0x7c3ff425)" identifier = (call_expression "next_token(0x7c3ff425)" identifier (argument_list "(0x7c3ff425)" ( number_literal )))) ;) (if_statement "if (uVar2 == 0x40000) {\n          chain_group();\n          pnVar5->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4);\n          return;\n        }" if (parenthesized_expression "(uVar2 == 0x40000)" ( (binary_expression "uVar2 == 0x40000" identifier == number_literal) )) (compound_statement "{\n          chain_group();\n          pnVar5->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4);\n          return;\n        }" { (expression_statement "chain_group();" (call_expression "chain_group()" identifier (argument_list "()" ( ))) ;) (expression_statement "pnVar5->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4);" (assignment_expression "pnVar5->a = *(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4)" (field_expression "pnVar5->a" identifier -> field_identifier) = (pointer_expression "*(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4)" * (cast_expression "(anon_union_4_1_54a3980e_for_a *)(puVar7[-0x13] + 4)" ( (type_descriptor "anon_union_4_1_54a3980e_for_a *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7[-0x13] + 4)" ( (binary_expression "puVar7[-0x13] + 4" (subscript_expression "puVar7[-0x13]" identifier [ number_literal ]) + number_literal) ))))) ;) (return_statement "return;" return ;) })) (expression_statement "rollback_token();" (call_expression "rollback_token()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n      if (uVar3 == 0x3200) {\n        next_token(1);\n        pnVar4 = parse_expr(0x4002);\n        if ((puVar7[1] & 2) == 0) {\n          pnVar5 = chain_node(0x10200);\n          (pnVar5->l).n = pnVar4;\n          pnVar4 = parse_expr(0x4000);\n          pnVar5 = parse_expr(2);\n          pnVar5 = chain_loop(pnVar5);\n          (pnVar5->l).n = pnVar4;\n          if (pnVar4 != (node_conflict *)0x0) {\n            return;\n          }\n          pnVar5->info = 0x200;\n          return;\n        }\n        if ((pnVar4 != (node_conflict *)0x0) && ((pnVar4->info & 0xff00) == 0x1b00)) {\n          pnVar5 = chain_node(0x30600);\n          pnVar5->l = pnVar4->l;\n          pnVar5->r = pnVar4->r;\n          pnVar5 = chain_loop((node_conflict *)0x0);\n          pnVar5->info = 0x10e00;\n          pnVar5->l = pnVar4->l;\n          return;\n        }\n                    /* WARNING: Subroutine does not return */\n        syntax_error(PTR_DAT_001311dc + -0xd9b);\n      }\n      if (uVar3 == 0x3300) {\n        pnVar4 = condition();\n        pnVar5 = chain_loop((node_conflict *)0x0);\n        (pnVar5->l).n = pnVar4;\n        return;\n      }\n    }" else (compound_statement "{\n      if (uVar3 == 0x3200) {\n        next_token(1);\n        pnVar4 = parse_expr(0x4002);\n        if ((puVar7[1] & 2) == 0) {\n          pnVar5 = chain_node(0x10200);\n          (pnVar5->l).n = pnVar4;\n          pnVar4 = parse_expr(0x4000);\n          pnVar5 = parse_expr(2);\n          pnVar5 = chain_loop(pnVar5);\n          (pnVar5->l).n = pnVar4;\n          if (pnVar4 != (node_conflict *)0x0) {\n            return;\n          }\n          pnVar5->info = 0x200;\n          return;\n        }\n        if ((pnVar4 != (node_conflict *)0x0) && ((pnVar4->info & 0xff00) == 0x1b00)) {\n          pnVar5 = chain_node(0x30600);\n          pnVar5->l = pnVar4->l;\n          pnVar5->r = pnVar4->r;\n          pnVar5 = chain_loop((node_conflict *)0x0);\n          pnVar5->info = 0x10e00;\n          pnVar5->l = pnVar4->l;\n          return;\n        }\n                    /* WARNING: Subroutine does not return */\n        syntax_error(PTR_DAT_001311dc + -0xd9b);\n      }\n      if (uVar3 == 0x3300) {\n        pnVar4 = condition();\n        pnVar5 = chain_loop((node_conflict *)0x0);\n        (pnVar5->l).n = pnVar4;\n        return;\n      }\n    }" { (if_statement "if (uVar3 == 0x3200) {\n        next_token(1);\n        pnVar4 = parse_expr(0x4002);\n        if ((puVar7[1] & 2) == 0) {\n          pnVar5 = chain_node(0x10200);\n          (pnVar5->l).n = pnVar4;\n          pnVar4 = parse_expr(0x4000);\n          pnVar5 = parse_expr(2);\n          pnVar5 = chain_loop(pnVar5);\n          (pnVar5->l).n = pnVar4;\n          if (pnVar4 != (node_conflict *)0x0) {\n            return;\n          }\n          pnVar5->info = 0x200;\n          return;\n        }\n        if ((pnVar4 != (node_conflict *)0x0) && ((pnVar4->info & 0xff00) == 0x1b00)) {\n          pnVar5 = chain_node(0x30600);\n          pnVar5->l = pnVar4->l;\n          pnVar5->r = pnVar4->r;\n          pnVar5 = chain_loop((node_conflict *)0x0);\n          pnVar5->info = 0x10e00;\n          pnVar5->l = pnVar4->l;\n          return;\n        }\n                    /* WARNING: Subroutine does not return */\n        syntax_error(PTR_DAT_001311dc + -0xd9b);\n      }" if (parenthesized_expression "(uVar3 == 0x3200)" ( (binary_expression "uVar3 == 0x3200" identifier == number_literal) )) (compound_statement "{\n        next_token(1);\n        pnVar4 = parse_expr(0x4002);\n        if ((puVar7[1] & 2) == 0) {\n          pnVar5 = chain_node(0x10200);\n          (pnVar5->l).n = pnVar4;\n          pnVar4 = parse_expr(0x4000);\n          pnVar5 = parse_expr(2);\n          pnVar5 = chain_loop(pnVar5);\n          (pnVar5->l).n = pnVar4;\n          if (pnVar4 != (node_conflict *)0x0) {\n            return;\n          }\n          pnVar5->info = 0x200;\n          return;\n        }\n        if ((pnVar4 != (node_conflict *)0x0) && ((pnVar4->info & 0xff00) == 0x1b00)) {\n          pnVar5 = chain_node(0x30600);\n          pnVar5->l = pnVar4->l;\n          pnVar5->r = pnVar4->r;\n          pnVar5 = chain_loop((node_conflict *)0x0);\n          pnVar5->info = 0x10e00;\n          pnVar5->l = pnVar4->l;\n          return;\n        }\n                    /* WARNING: Subroutine does not return */\n        syntax_error(PTR_DAT_001311dc + -0xd9b);\n      }" { (expression_statement "next_token(1);" (call_expression "next_token(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "pnVar4 = parse_expr(0x4002);" (assignment_expression "pnVar4 = parse_expr(0x4002)" identifier = (call_expression "parse_expr(0x4002)" identifier (argument_list "(0x4002)" ( number_literal )))) ;) (if_statement "if ((puVar7[1] & 2) == 0) {\n          pnVar5 = chain_node(0x10200);\n          (pnVar5->l).n = pnVar4;\n          pnVar4 = parse_expr(0x4000);\n          pnVar5 = parse_expr(2);\n          pnVar5 = chain_loop(pnVar5);\n          (pnVar5->l).n = pnVar4;\n          if (pnVar4 != (node_conflict *)0x0) {\n            return;\n          }\n          pnVar5->info = 0x200;\n          return;\n        }" if (parenthesized_expression "((puVar7[1] & 2) == 0)" ( (binary_expression "(puVar7[1] & 2) == 0" (parenthesized_expression "(puVar7[1] & 2)" ( (binary_expression "puVar7[1] & 2" (subscript_expression "puVar7[1]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n          pnVar5 = chain_node(0x10200);\n          (pnVar5->l).n = pnVar4;\n          pnVar4 = parse_expr(0x4000);\n          pnVar5 = parse_expr(2);\n          pnVar5 = chain_loop(pnVar5);\n          (pnVar5->l).n = pnVar4;\n          if (pnVar4 != (node_conflict *)0x0) {\n            return;\n          }\n          pnVar5->info = 0x200;\n          return;\n        }" { (expression_statement "pnVar5 = chain_node(0x10200);" (assignment_expression "pnVar5 = chain_node(0x10200)" identifier = (call_expression "chain_node(0x10200)" identifier (argument_list "(0x10200)" ( number_literal )))) ;) (expression_statement "(pnVar5->l).n = pnVar4;" (assignment_expression "(pnVar5->l).n = pnVar4" (field_expression "(pnVar5->l).n" (parenthesized_expression "(pnVar5->l)" ( (field_expression "pnVar5->l" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "pnVar4 = parse_expr(0x4000);" (assignment_expression "pnVar4 = parse_expr(0x4000)" identifier = (call_expression "parse_expr(0x4000)" identifier (argument_list "(0x4000)" ( number_literal )))) ;) (expression_statement "pnVar5 = parse_expr(2);" (assignment_expression "pnVar5 = parse_expr(2)" identifier = (call_expression "parse_expr(2)" identifier (argument_list "(2)" ( number_literal )))) ;) (expression_statement "pnVar5 = chain_loop(pnVar5);" (assignment_expression "pnVar5 = chain_loop(pnVar5)" identifier = (call_expression "chain_loop(pnVar5)" identifier (argument_list "(pnVar5)" ( identifier )))) ;) (expression_statement "(pnVar5->l).n = pnVar4;" (assignment_expression "(pnVar5->l).n = pnVar4" (field_expression "(pnVar5->l).n" (parenthesized_expression "(pnVar5->l)" ( (field_expression "pnVar5->l" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (pnVar4 != (node_conflict *)0x0) {\n            return;\n          }" if (parenthesized_expression "(pnVar4 != (node_conflict *)0x0)" ( (binary_expression "pnVar4 != (node_conflict *)0x0" identifier != (cast_expression "(node_conflict *)0x0" ( (type_descriptor "node_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "pnVar5->info = 0x200;" (assignment_expression "pnVar5->info = 0x200" (field_expression "pnVar5->info" identifier -> field_identifier) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if ((pnVar4 != (node_conflict *)0x0) && ((pnVar4->info & 0xff00) == 0x1b00)) {\n          pnVar5 = chain_node(0x30600);\n          pnVar5->l = pnVar4->l;\n          pnVar5->r = pnVar4->r;\n          pnVar5 = chain_loop((node_conflict *)0x0);\n          pnVar5->info = 0x10e00;\n          pnVar5->l = pnVar4->l;\n          return;\n        }" if (parenthesized_expression "((pnVar4 != (node_conflict *)0x0) && ((pnVar4->info & 0xff00) == 0x1b00))" ( (binary_expression "(pnVar4 != (node_conflict *)0x0) && ((pnVar4->info & 0xff00) == 0x1b00)" (parenthesized_expression "(pnVar4 != (node_conflict *)0x0)" ( (binary_expression "pnVar4 != (node_conflict *)0x0" identifier != (cast_expression "(node_conflict *)0x0" ( (type_descriptor "node_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((pnVar4->info & 0xff00) == 0x1b00)" ( (binary_expression "(pnVar4->info & 0xff00) == 0x1b00" (parenthesized_expression "(pnVar4->info & 0xff00)" ( (binary_expression "pnVar4->info & 0xff00" (field_expression "pnVar4->info" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          pnVar5 = chain_node(0x30600);\n          pnVar5->l = pnVar4->l;\n          pnVar5->r = pnVar4->r;\n          pnVar5 = chain_loop((node_conflict *)0x0);\n          pnVar5->info = 0x10e00;\n          pnVar5->l = pnVar4->l;\n          return;\n        }" { (expression_statement "pnVar5 = chain_node(0x30600);" (assignment_expression "pnVar5 = chain_node(0x30600)" identifier = (call_expression "chain_node(0x30600)" identifier (argument_list "(0x30600)" ( number_literal )))) ;) (expression_statement "pnVar5->l = pnVar4->l;" (assignment_expression "pnVar5->l = pnVar4->l" (field_expression "pnVar5->l" identifier -> field_identifier) = (field_expression "pnVar4->l" identifier -> field_identifier)) ;) (expression_statement "pnVar5->r = pnVar4->r;" (assignment_expression "pnVar5->r = pnVar4->r" (field_expression "pnVar5->r" identifier -> field_identifier) = (field_expression "pnVar4->r" identifier -> field_identifier)) ;) (expression_statement "pnVar5 = chain_loop((node_conflict *)0x0);" (assignment_expression "pnVar5 = chain_loop((node_conflict *)0x0)" identifier = (call_expression "chain_loop((node_conflict *)0x0)" identifier (argument_list "((node_conflict *)0x0)" ( (cast_expression "(node_conflict *)0x0" ( (type_descriptor "node_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (expression_statement "pnVar5->info = 0x10e00;" (assignment_expression "pnVar5->info = 0x10e00" (field_expression "pnVar5->info" identifier -> field_identifier) = number_literal) ;) (expression_statement "pnVar5->l = pnVar4->l;" (assignment_expression "pnVar5->l = pnVar4->l" (field_expression "pnVar5->l" identifier -> field_identifier) = (field_expression "pnVar4->l" identifier -> field_identifier)) ;) (return_statement "return;" return ;) })) comment (expression_statement "syntax_error(PTR_DAT_001311dc + -0xd9b);" (call_expression "syntax_error(PTR_DAT_001311dc + -0xd9b)" identifier (argument_list "(PTR_DAT_001311dc + -0xd9b)" ( (binary_expression "PTR_DAT_001311dc + -0xd9b" identifier + number_literal) ))) ;) })) (if_statement "if (uVar3 == 0x3300) {\n        pnVar4 = condition();\n        pnVar5 = chain_loop((node_conflict *)0x0);\n        (pnVar5->l).n = pnVar4;\n        return;\n      }" if (parenthesized_expression "(uVar3 == 0x3300)" ( (binary_expression "uVar3 == 0x3300" identifier == number_literal) )) (compound_statement "{\n        pnVar4 = condition();\n        pnVar5 = chain_loop((node_conflict *)0x0);\n        (pnVar5->l).n = pnVar4;\n        return;\n      }" { (expression_statement "pnVar4 = condition();" (assignment_expression "pnVar4 = condition()" identifier = (call_expression "condition()" identifier (argument_list "()" ( )))) ;) (expression_statement "pnVar5 = chain_loop((node_conflict *)0x0);" (assignment_expression "pnVar5 = chain_loop((node_conflict *)0x0)" identifier = (call_expression "chain_loop((node_conflict *)0x0)" identifier (argument_list "((node_conflict *)0x0)" ( (cast_expression "(node_conflict *)0x0" ( (type_descriptor "node_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (expression_statement "(pnVar5->l).n = pnVar4;" (assignment_expression "(pnVar5->l).n = pnVar4" (field_expression "(pnVar5->l).n" (parenthesized_expression "(pnVar5->l)" ( (field_expression "pnVar5->l" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (return_statement "return;" return ;) })) }))) (labeled_statement "LAB_000d38a4:\n    chain_expr(info);" statement_identifier : (expression_statement "chain_expr(info);" (call_expression "chain_expr(info)" identifier (argument_list "(info)" ( identifier ))) ;)) }))) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000d371c(void)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  undefined1 *puVar8;\n  code *pcVar9;\n  uint *puVar10;\n  code *pcVar11;\n  \n  do {\n    uVar2 = FUN_000d2920(0x7c3bd425);\n  } while ((uVar2 & 0x8000) != 0);\n  if ((uVar2 & 0x1000) != 0) {\n    pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_DAT_00131330;\n    while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }\n    return;\n  }\n  if ((uVar2 & 0x7c38c425) != 0) {\n    FUN_000d0040();\n    FUN_000d3694(0x10200);\n    return;\n  }\n  puVar10 = *(uint **)PTR_DAT_00131330;\n  uVar2 = *puVar10 & 0xff00;\n  if (uVar2 == 0x900) {\n    iVar3 = FUN_000d0664(0x200);\n    *(uint *)(iVar3 + 0x10) = puVar10[-0x11];\n    FUN_000d3694(*puVar10);\n    return;\n  }\n  if (uVar2 < 0x901) {\n    if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }\n    puVar7 = (uint *)FUN_000d0664();\n    uVar2 = FUN_000d309c(0xe008);\n    puVar7[2] = uVar2;\n    if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }\n    if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }\n  }\n  else {\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }\n  return;\n}\n\n" (function_definition "void FUN_000d371c(void)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  undefined1 *puVar8;\n  code *pcVar9;\n  uint *puVar10;\n  code *pcVar11;\n  \n  do {\n    uVar2 = FUN_000d2920(0x7c3bd425);\n  } while ((uVar2 & 0x8000) != 0);\n  if ((uVar2 & 0x1000) != 0) {\n    pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_DAT_00131330;\n    while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }\n    return;\n  }\n  if ((uVar2 & 0x7c38c425) != 0) {\n    FUN_000d0040();\n    FUN_000d3694(0x10200);\n    return;\n  }\n  puVar10 = *(uint **)PTR_DAT_00131330;\n  uVar2 = *puVar10 & 0xff00;\n  if (uVar2 == 0x900) {\n    iVar3 = FUN_000d0664(0x200);\n    *(uint *)(iVar3 + 0x10) = puVar10[-0x11];\n    FUN_000d3694(*puVar10);\n    return;\n  }\n  if (uVar2 < 0x901) {\n    if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }\n    puVar7 = (uint *)FUN_000d0664();\n    uVar2 = FUN_000d309c(0xe008);\n    puVar7[2] = uVar2;\n    if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }\n    if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }\n  }\n  else {\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000d371c(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  undefined1 *puVar8;\n  code *pcVar9;\n  uint *puVar10;\n  code *pcVar11;\n  \n  do {\n    uVar2 = FUN_000d2920(0x7c3bd425);\n  } while ((uVar2 & 0x8000) != 0);\n  if ((uVar2 & 0x1000) != 0) {\n    pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_DAT_00131330;\n    while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }\n    return;\n  }\n  if ((uVar2 & 0x7c38c425) != 0) {\n    FUN_000d0040();\n    FUN_000d3694(0x10200);\n    return;\n  }\n  puVar10 = *(uint **)PTR_DAT_00131330;\n  uVar2 = *puVar10 & 0xff00;\n  if (uVar2 == 0x900) {\n    iVar3 = FUN_000d0664(0x200);\n    *(uint *)(iVar3 + 0x10) = puVar10[-0x11];\n    FUN_000d3694(*puVar10);\n    return;\n  }\n  if (uVar2 < 0x901) {\n    if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }\n    puVar7 = (uint *)FUN_000d0664();\n    uVar2 = FUN_000d309c(0xe008);\n    puVar7[2] = uVar2;\n    if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }\n    if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }\n  }\n  else {\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "code *pcVar9;" type_identifier (pointer_declarator "*pcVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (do_statement "do {\n    uVar2 = FUN_000d2920(0x7c3bd425);\n  } while ((uVar2 & 0x8000) != 0);" do (compound_statement "{\n    uVar2 = FUN_000d2920(0x7c3bd425);\n  }" { (expression_statement "uVar2 = FUN_000d2920(0x7c3bd425);" (assignment_expression "uVar2 = FUN_000d2920(0x7c3bd425)" identifier = (call_expression "FUN_000d2920(0x7c3bd425)" identifier (argument_list "(0x7c3bd425)" ( number_literal )))) ;) }) while (parenthesized_expression "((uVar2 & 0x8000) != 0)" ( (binary_expression "(uVar2 & 0x8000) != 0" (parenthesized_expression "(uVar2 & 0x8000)" ( (binary_expression "uVar2 & 0x8000" identifier & number_literal) )) != number_literal) )) ;) (if_statement "if ((uVar2 & 0x1000) != 0) {\n    pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_DAT_00131330;\n    while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }\n    return;\n  }" if (parenthesized_expression "((uVar2 & 0x1000) != 0)" ( (binary_expression "(uVar2 & 0x1000) != 0" (parenthesized_expression "(uVar2 & 0x1000)" ( (binary_expression "uVar2 & 0x1000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_DAT_00131330;\n    while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }\n    return;\n  }" { (expression_statement "pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);" (assignment_expression "pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40)" identifier = (cast_expression "(code *)(PTR_LAB_00131bb8 + 0x40)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00131bb8 + 0x40)" ( (binary_expression "PTR_LAB_00131bb8 + 0x40" identifier + number_literal) )))) ;) (expression_statement "pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);" (assignment_expression "pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c)" identifier = (cast_expression "(code *)(PTR_LAB_00131bb8 + 0x371c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00131bb8 + 0x371c)" ( (binary_expression "PTR_LAB_00131bb8 + 0x371c" identifier + number_literal) )))) ;) (expression_statement "piVar1 = (int *)PTR_DAT_00131330;" (assignment_expression "piVar1 = (int *)PTR_DAT_00131330" identifier = (cast_expression "(int *)PTR_DAT_00131330" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (while_statement "while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }" while (parenthesized_expression "(iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000)" ( (comma_expression "iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000" (assignment_expression "iVar3 = FUN_000d2920(0x7c3bf425)" identifier = (call_expression "FUN_000d2920(0x7c3bf425)" identifier (argument_list "(0x7c3bf425)" ( number_literal )))) , (binary_expression "iVar3 != 0x2000" identifier != number_literal)) )) (compound_statement "{\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }" { (if_statement "if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }" if (parenthesized_expression "((*(uint *)(*piVar1 + 4) & 0x8000) == 0)" ( (binary_expression "(*(uint *)(*piVar1 + 4) & 0x8000) == 0" (parenthesized_expression "(*(uint *)(*piVar1 + 4) & 0x8000)" ( (binary_expression "*(uint *)(*piVar1 + 4) & 0x8000" (pointer_expression "*(uint *)(*piVar1 + 4)" * (cast_expression "(uint *)(*piVar1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar1 + 4)" ( (binary_expression "*piVar1 + 4" (pointer_expression "*piVar1" * identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }" { (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "(*pcVar9)();" (call_expression "(*pcVar9)()" (parenthesized_expression "(*pcVar9)" ( (pointer_expression "*pcVar9" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar1 = (int *)PTR_DAT_00131330;" (assignment_expression "piVar1 = (int *)PTR_DAT_00131330" identifier = (cast_expression "(int *)PTR_DAT_00131330" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) })) (return_statement "return;" return ;) })) (if_statement "if ((uVar2 & 0x7c38c425) != 0) {\n    FUN_000d0040();\n    FUN_000d3694(0x10200);\n    return;\n  }" if (parenthesized_expression "((uVar2 & 0x7c38c425) != 0)" ( (binary_expression "(uVar2 & 0x7c38c425) != 0" (parenthesized_expression "(uVar2 & 0x7c38c425)" ( (binary_expression "uVar2 & 0x7c38c425" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    FUN_000d0040();\n    FUN_000d3694(0x10200);\n    return;\n  }" { (expression_statement "FUN_000d0040();" (call_expression "FUN_000d0040()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_000d3694(0x10200);" (call_expression "FUN_000d3694(0x10200)" identifier (argument_list "(0x10200)" ( number_literal ))) ;) (return_statement "return;" return ;) })) (expression_statement "puVar10 = *(uint **)PTR_DAT_00131330;" (assignment_expression "puVar10 = *(uint **)PTR_DAT_00131330" identifier = (pointer_expression "*(uint **)PTR_DAT_00131330" * (cast_expression "(uint **)PTR_DAT_00131330" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "uVar2 = *puVar10 & 0xff00;" (assignment_expression "uVar2 = *puVar10 & 0xff00" identifier = (binary_expression "*puVar10 & 0xff00" (pointer_expression "*puVar10" * identifier) & number_literal)) ;) (if_statement "if (uVar2 == 0x900) {\n    iVar3 = FUN_000d0664(0x200);\n    *(uint *)(iVar3 + 0x10) = puVar10[-0x11];\n    FUN_000d3694(*puVar10);\n    return;\n  }" if (parenthesized_expression "(uVar2 == 0x900)" ( (binary_expression "uVar2 == 0x900" identifier == number_literal) )) (compound_statement "{\n    iVar3 = FUN_000d0664(0x200);\n    *(uint *)(iVar3 + 0x10) = puVar10[-0x11];\n    FUN_000d3694(*puVar10);\n    return;\n  }" { (expression_statement "iVar3 = FUN_000d0664(0x200);" (assignment_expression "iVar3 = FUN_000d0664(0x200)" identifier = (call_expression "FUN_000d0664(0x200)" identifier (argument_list "(0x200)" ( number_literal )))) ;) (expression_statement "*(uint *)(iVar3 + 0x10) = puVar10[-0x11];" (assignment_expression "*(uint *)(iVar3 + 0x10) = puVar10[-0x11]" (pointer_expression "*(uint *)(iVar3 + 0x10)" * (cast_expression "(uint *)(iVar3 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) )))) = (subscript_expression "puVar10[-0x11]" identifier [ number_literal ])) ;) (expression_statement "FUN_000d3694(*puVar10);" (call_expression "FUN_000d3694(*puVar10)" identifier (argument_list "(*puVar10)" ( (pointer_expression "*puVar10" * identifier) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar2 < 0x901) {\n    if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }\n    puVar7 = (uint *)FUN_000d0664();\n    uVar2 = FUN_000d309c(0xe008);\n    puVar7[2] = uVar2;\n    if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }\n    if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }\n  }\n  else {\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }" if (parenthesized_expression "(uVar2 < 0x901)" ( (binary_expression "uVar2 < 0x901" identifier < number_literal) )) (compound_statement "{\n    if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }\n    puVar7 = (uint *)FUN_000d0664();\n    uVar2 = FUN_000d309c(0xe008);\n    puVar7[2] = uVar2;\n    if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }\n    if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }\n  }" { (if_statement "if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }" if (parenthesized_expression "(uVar2 != 0x500)" ( (binary_expression "uVar2 != 0x500" identifier != number_literal) )) (compound_statement "{\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }" { (if_statement "if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }" if (parenthesized_expression "(uVar2 == 0x800)" ( (binary_expression "uVar2 == 0x800" identifier == number_literal) )) (compound_statement "{\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }" { (expression_statement "iVar3 = FUN_000d0664(0x200);" (assignment_expression "iVar3 = FUN_000d0664(0x200)" identifier = (call_expression "FUN_000d0664(0x200)" identifier (argument_list "(0x200)" ( number_literal )))) ;) (expression_statement "*(uint *)(iVar3 + 0x10) = puVar10[-0x12];" (assignment_expression "*(uint *)(iVar3 + 0x10) = puVar10[-0x12]" (pointer_expression "*(uint *)(iVar3 + 0x10)" * (cast_expression "(uint *)(iVar3 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) )))) = (subscript_expression "puVar10[-0x12]" identifier [ number_literal ])) ;) (expression_statement "FUN_000d3694(*puVar10);" (call_expression "FUN_000d3694(*puVar10)" identifier (argument_list "(*puVar10)" ( (pointer_expression "*puVar10" * identifier) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar2 != 0x400) goto LAB_000d38a4;" if (parenthesized_expression "(uVar2 != 0x400)" ( (binary_expression "uVar2 != 0x400" identifier != number_literal) )) (goto_statement "goto LAB_000d38a4;" goto statement_identifier ;)) })) (expression_statement "puVar7 = (uint *)FUN_000d0664();" (assignment_expression "puVar7 = (uint *)FUN_000d0664()" identifier = (cast_expression "(uint *)FUN_000d0664()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000d0664()" identifier (argument_list "()" ( ))))) ;) (expression_statement "uVar2 = FUN_000d309c(0xe008);" (assignment_expression "uVar2 = FUN_000d309c(0xe008)" identifier = (call_expression "FUN_000d309c(0xe008)" identifier (argument_list "(0xe008)" ( number_literal )))) ;) (expression_statement "puVar7[2] = uVar2;" (assignment_expression "puVar7[2] = uVar2" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }" if (parenthesized_expression "((puVar10[1] & 8) != 0)" ( (binary_expression "(puVar10[1] & 8) != 0" (parenthesized_expression "(puVar10[1] & 8)" ( (binary_expression "puVar10[1] & 8" (subscript_expression "puVar10[1]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }" { (expression_statement "*puVar7 = *puVar7 | *puVar10;" (assignment_expression "*puVar7 = *puVar7 | *puVar10" (pointer_expression "*puVar7" * identifier) = (binary_expression "*puVar7 | *puVar10" (pointer_expression "*puVar7" * identifier) | (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "uVar2 = FUN_000d309c(0xe000);" (assignment_expression "uVar2 = FUN_000d309c(0xe000)" identifier = (call_expression "FUN_000d309c(0xe000)" identifier (argument_list "(0xe000)" ( number_literal )))) ;) (expression_statement "puVar7[3] = uVar2;" (assignment_expression "puVar7[3] = uVar2" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = identifier) ;) })) (if_statement "if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }" if (parenthesized_expression "((puVar10[1] & 0x2000) != 0)" ( (binary_expression "(puVar10[1] & 0x2000) != 0" (parenthesized_expression "(puVar10[1] & 0x2000)" ( (binary_expression "puVar10[1] & 0x2000" (subscript_expression "puVar10[1]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      FUN_000d0040();\n    }" { (expression_statement "FUN_000d0040();" (call_expression "FUN_000d0040()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }" else (compound_statement "{\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }" { (if_statement "if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }" if (parenthesized_expression "(uVar2 == 0x3100)" ( (binary_expression "uVar2 == 0x3100" identifier == number_literal) )) (compound_statement "{\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }" { (expression_statement "iVar3 = FUN_000d0664(0x200);" (assignment_expression "iVar3 = FUN_000d0664(0x200)" identifier = (call_expression "FUN_000d0664(0x200)" identifier (argument_list "(0x200)" ( number_literal )))) ;) (expression_statement "iVar5 = FUN_000d3cc8(0);" (assignment_expression "iVar5 = FUN_000d3cc8(0)" identifier = (call_expression "FUN_000d3cc8(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "*(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);" (assignment_expression "*(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10)" (pointer_expression "*(undefined4 *)(iVar3 + 0x10)" * (cast_expression "(undefined4 *)(iVar3 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" * (cast_expression "(undefined4 *)(iVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "FUN_000d2920(0x20000);" (call_expression "FUN_000d2920(0x20000)" identifier (argument_list "(0x20000)" ( number_literal ))) ;) (expression_statement "uVar4 = FUN_000d3640();" (assignment_expression "uVar4 = FUN_000d3640()" identifier = (call_expression "FUN_000d3640()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(iVar5 + 8) = uVar4;" (assignment_expression "*(undefined4 *)(iVar5 + 8) = uVar4" (pointer_expression "*(undefined4 *)(iVar5 + 8)" * (cast_expression "(undefined4 *)(iVar5 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }" if (parenthesized_expression "(uVar2 < 0x3101)" ( (binary_expression "uVar2 < 0x3101" identifier < number_literal) )) (compound_statement "{\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }" { (if_statement "if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }" if (parenthesized_expression "(uVar2 == 0x3000)" ( (binary_expression "uVar2 == 0x3000" identifier == number_literal) )) (compound_statement "{\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }" { (expression_statement "iVar3 = FUN_000d0664(0x10700);" (assignment_expression "iVar3 = FUN_000d0664(0x10700)" identifier = (call_expression "FUN_000d0664(0x10700)" identifier (argument_list "(0x10700)" ( number_literal )))) ;) (expression_statement "uVar4 = FUN_000d3640();" (assignment_expression "uVar4 = FUN_000d3640()" identifier = (call_expression "FUN_000d3640()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(iVar3 + 8) = uVar4;" (assignment_expression "*(undefined4 *)(iVar3 + 8) = uVar4" (pointer_expression "*(undefined4 *)(iVar3 + 8)" * (cast_expression "(undefined4 *)(iVar3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_000d371c();" (call_expression "FUN_000d371c()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar5 = FUN_000d0664(0x200);" (assignment_expression "iVar5 = FUN_000d0664(0x200)" identifier = (call_expression "FUN_000d0664(0x200)" identifier (argument_list "(0x200)" ( number_literal )))) ;) (expression_statement "*(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);" (assignment_expression "*(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4)" (pointer_expression "*(undefined4 *)(iVar3 + 0xc)" * (cast_expression "(undefined4 *)(iVar3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar10[-0x13] + 4)" * (cast_expression "(undefined4 *)(puVar10[-0x13] + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10[-0x13] + 4)" ( (binary_expression "puVar10[-0x13] + 4" (subscript_expression "puVar10[-0x13]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "iVar3 = FUN_000d2920(0x7c3ff425);" (assignment_expression "iVar3 = FUN_000d2920(0x7c3ff425)" identifier = (call_expression "FUN_000d2920(0x7c3ff425)" identifier (argument_list "(0x7c3ff425)" ( number_literal )))) ;) (if_statement "if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }" if (parenthesized_expression "(iVar3 == 0x40000)" ( (binary_expression "iVar3 == 0x40000" identifier == number_literal) )) (compound_statement "{\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }" { (expression_statement "FUN_000d371c();" (call_expression "FUN_000d371c()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);" (assignment_expression "*(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4)" (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" * (cast_expression "(undefined4 *)(iVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar10[-0x13] + 4)" * (cast_expression "(undefined4 *)(puVar10[-0x13] + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10[-0x13] + 4)" ( (binary_expression "puVar10[-0x13] + 4" (subscript_expression "puVar10[-0x13]" identifier [ number_literal ]) + number_literal) ))))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_000d0040();" (call_expression "FUN_000d0040()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }" else (compound_statement "{\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }" { (if_statement "if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }" if (parenthesized_expression "(uVar2 == 0x3200)" ( (binary_expression "uVar2 == 0x3200" identifier == number_literal) )) (compound_statement "{\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }" { (expression_statement "FUN_000d2920(1);" (call_expression "FUN_000d2920(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "puVar7 = (uint *)FUN_000d309c(0x4002);" (assignment_expression "puVar7 = (uint *)FUN_000d309c(0x4002)" identifier = (cast_expression "(uint *)FUN_000d309c(0x4002)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000d309c(0x4002)" identifier (argument_list "(0x4002)" ( number_literal ))))) ;) (if_statement "if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }" if (parenthesized_expression "((puVar10[1] & 2) != 0)" ( (binary_expression "(puVar10[1] & 2) != 0" (parenthesized_expression "(puVar10[1] & 2)" ( (binary_expression "puVar10[1] & 2" (subscript_expression "puVar10[1]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }" { (if_statement "if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }" if (parenthesized_expression "((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00))" ( (binary_expression "(puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)" (parenthesized_expression "(puVar7 == (uint *)0x0)" ( (binary_expression "puVar7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)" ( (comma_expression "puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00" (assignment_expression "puVar8 = &LAB_00030000" identifier = (pointer_expression "&LAB_00030000" & identifier)) , (binary_expression "(*puVar7 & 0xff00) != 0x1b00" (parenthesized_expression "(*puVar7 & 0xff00)" ( (binary_expression "*puVar7 & 0xff00" (pointer_expression "*puVar7" * identifier) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }" { (expression_statement "puVar8 = PTR_DAT_001311dc + -0xd9b;" (assignment_expression "puVar8 = PTR_DAT_001311dc + -0xd9b" identifier = (binary_expression "PTR_DAT_001311dc + -0xd9b" identifier + number_literal)) ;) (expression_statement "FUN_000d11cc(puVar8);" (call_expression "FUN_000d11cc(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) ;) })) (expression_statement "iVar3 = FUN_000d0664(puVar8 + 0x600);" (assignment_expression "iVar3 = FUN_000d0664(puVar8 + 0x600)" identifier = (call_expression "FUN_000d0664(puVar8 + 0x600)" identifier (argument_list "(puVar8 + 0x600)" ( (binary_expression "puVar8 + 0x600" identifier + number_literal) )))) ;) (expression_statement "*(uint *)(iVar3 + 8) = puVar7[2];" (assignment_expression "*(uint *)(iVar3 + 8) = puVar7[2]" (pointer_expression "*(uint *)(iVar3 + 8)" * (cast_expression "(uint *)(iVar3 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) = (subscript_expression "puVar7[2]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(iVar3 + 0xc) = puVar7[3];" (assignment_expression "*(uint *)(iVar3 + 0xc) = puVar7[3]" (pointer_expression "*(uint *)(iVar3 + 0xc)" * (cast_expression "(uint *)(iVar3 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (subscript_expression "puVar7[3]" identifier [ number_literal ])) ;) (expression_statement "puVar6 = (undefined4 *)FUN_000d3cc8(0);" (assignment_expression "puVar6 = (undefined4 *)FUN_000d3cc8(0)" identifier = (cast_expression "(undefined4 *)FUN_000d3cc8(0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000d3cc8(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (expression_statement "*puVar6 = 0x10e00;" (assignment_expression "*puVar6 = 0x10e00" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6[2] = puVar7[2];" (assignment_expression "puVar6[2] = puVar7[2]" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = (subscript_expression "puVar7[2]" identifier [ number_literal ])) ;) (return_statement "return;" return ;) })) (expression_statement "iVar3 = FUN_000d0664(0x10200);" (assignment_expression "iVar3 = FUN_000d0664(0x10200)" identifier = (call_expression "FUN_000d0664(0x10200)" identifier (argument_list "(0x10200)" ( number_literal )))) ;) (expression_statement "*(uint **)(iVar3 + 8) = puVar7;" (assignment_expression "*(uint **)(iVar3 + 8) = puVar7" (pointer_expression "*(uint **)(iVar3 + 8)" * (cast_expression "(uint **)(iVar3 + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = FUN_000d309c(0x4000);" (assignment_expression "iVar3 = FUN_000d309c(0x4000)" identifier = (call_expression "FUN_000d309c(0x4000)" identifier (argument_list "(0x4000)" ( number_literal )))) ;) (expression_statement "uVar4 = FUN_000d309c(2);" (assignment_expression "uVar4 = FUN_000d309c(2)" identifier = (call_expression "FUN_000d309c(2)" identifier (argument_list "(2)" ( number_literal )))) ;) (expression_statement "puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);" (assignment_expression "puVar6 = (undefined4 *)FUN_000d3cc8(uVar4)" identifier = (cast_expression "(undefined4 *)FUN_000d3cc8(uVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000d3cc8(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))))) ;) (expression_statement "puVar6[2] = iVar3;" (assignment_expression "puVar6[2] = iVar3" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar3 != 0) {\n          return;\n        }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "*puVar6 = 0x200;" (assignment_expression "*puVar6 = 0x200" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }" if (parenthesized_expression "(uVar2 == 0x3300)" ( (binary_expression "uVar2 == 0x3300" identifier == number_literal) )) (compound_statement "{\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }" { (expression_statement "uVar4 = FUN_000d3640();" (assignment_expression "uVar4 = FUN_000d3640()" identifier = (call_expression "FUN_000d3640()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar3 = FUN_000d3cc8(0);" (assignment_expression "iVar3 = FUN_000d3cc8(0)" identifier = (call_expression "FUN_000d3cc8(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "*(undefined4 *)(iVar3 + 8) = uVar4;" (assignment_expression "*(undefined4 *)(iVar3 + 8) = uVar4" (pointer_expression "*(undefined4 *)(iVar3 + 8)" * (cast_expression "(undefined4 *)(iVar3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) }))) (labeled_statement "LAB_000d38a4:\n    FUN_000d3694();" statement_identifier : (expression_statement "FUN_000d3694();" (call_expression "FUN_000d3694()" identifier (argument_list "()" ( ))) ;)) }))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) , (binary_expression IDENT != LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) })) })) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression & IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ 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 * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) }))) (return_statement return ;) })))
(function_definition "void FUN_000d371c(void)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  undefined1 *puVar8;\n  code *pcVar9;\n  uint *puVar10;\n  code *pcVar11;\n  \n  do {\n    uVar2 = FUN_000d2920(0x7c3bd425);\n  } while ((uVar2 & 0x8000) != 0);\n  if ((uVar2 & 0x1000) != 0) {\n    pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_DAT_00131330;\n    while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }\n    return;\n  }\n  if ((uVar2 & 0x7c38c425) != 0) {\n    FUN_000d0040();\n    FUN_000d3694(0x10200);\n    return;\n  }\n  puVar10 = *(uint **)PTR_DAT_00131330;\n  uVar2 = *puVar10 & 0xff00;\n  if (uVar2 == 0x900) {\n    iVar3 = FUN_000d0664(0x200);\n    *(uint *)(iVar3 + 0x10) = puVar10[-0x11];\n    FUN_000d3694(*puVar10);\n    return;\n  }\n  if (uVar2 < 0x901) {\n    if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }\n    puVar7 = (uint *)FUN_000d0664();\n    uVar2 = FUN_000d309c(0xe008);\n    puVar7[2] = uVar2;\n    if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }\n    if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }\n  }\n  else {\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000d371c(void)" (identifier "FUN_000d371c") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  undefined1 *puVar8;\n  code *pcVar9;\n  uint *puVar10;\n  code *pcVar11;\n  \n  do {\n    uVar2 = FUN_000d2920(0x7c3bd425);\n  } while ((uVar2 & 0x8000) != 0);\n  if ((uVar2 & 0x1000) != 0) {\n    pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_DAT_00131330;\n    while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }\n    return;\n  }\n  if ((uVar2 & 0x7c38c425) != 0) {\n    FUN_000d0040();\n    FUN_000d3694(0x10200);\n    return;\n  }\n  puVar10 = *(uint **)PTR_DAT_00131330;\n  uVar2 = *puVar10 & 0xff00;\n  if (uVar2 == 0x900) {\n    iVar3 = FUN_000d0664(0x200);\n    *(uint *)(iVar3 + 0x10) = puVar10[-0x11];\n    FUN_000d3694(*puVar10);\n    return;\n  }\n  if (uVar2 < 0x901) {\n    if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }\n    puVar7 = (uint *)FUN_000d0664();\n    uVar2 = FUN_000d309c(0xe008);\n    puVar7[2] = uVar2;\n    if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }\n    if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }\n  }\n  else {\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined1 *puVar8;" (type_identifier "undefined1") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "code *pcVar9;" (type_identifier "code") (pointer_declarator "*pcVar9" (* "*") (identifier "pcVar9")) (; ";")) (declaration "uint *puVar10;" (type_identifier "uint") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "code *pcVar11;" (type_identifier "code") (pointer_declarator "*pcVar11" (* "*") (identifier "pcVar11")) (; ";")) (do_statement "do {\n    uVar2 = FUN_000d2920(0x7c3bd425);\n  } while ((uVar2 & 0x8000) != 0);" (do "do") (compound_statement "{\n    uVar2 = FUN_000d2920(0x7c3bd425);\n  }" ({ "{") (expression_statement "uVar2 = FUN_000d2920(0x7c3bd425);" (assignment_expression "uVar2 = FUN_000d2920(0x7c3bd425)" (identifier "uVar2") (= "=") (call_expression "FUN_000d2920(0x7c3bd425)" (identifier "FUN_000d2920") (argument_list "(0x7c3bd425)" (( "(") (number_literal "0x7c3bd425") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((uVar2 & 0x8000) != 0)" (( "(") (binary_expression "(uVar2 & 0x8000) != 0" (parenthesized_expression "(uVar2 & 0x8000)" (( "(") (binary_expression "uVar2 & 0x8000" (identifier "uVar2") (& "&") (number_literal "0x8000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if ((uVar2 & 0x1000) != 0) {\n    pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_DAT_00131330;\n    while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }\n    return;\n  }" (if "if") (parenthesized_expression "((uVar2 & 0x1000) != 0)" (( "(") (binary_expression "(uVar2 & 0x1000) != 0" (parenthesized_expression "(uVar2 & 0x1000)" (( "(") (binary_expression "uVar2 & 0x1000" (identifier "uVar2") (& "&") (number_literal "0x1000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);\n    pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);\n    piVar1 = (int *)PTR_DAT_00131330;\n    while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }\n    return;\n  }" ({ "{") (expression_statement "pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);" (assignment_expression "pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40)" (identifier "pcVar11") (= "=") (cast_expression "(code *)(PTR_LAB_00131bb8 + 0x40)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00131bb8 + 0x40)" (( "(") (binary_expression "PTR_LAB_00131bb8 + 0x40" (identifier "PTR_LAB_00131bb8") (+ "+") (number_literal "0x40")) () ")")))) (; ";")) (expression_statement "pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);" (assignment_expression "pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c)" (identifier "pcVar9") (= "=") (cast_expression "(code *)(PTR_LAB_00131bb8 + 0x371c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00131bb8 + 0x371c)" (( "(") (binary_expression "PTR_LAB_00131bb8 + 0x371c" (identifier "PTR_LAB_00131bb8") (+ "+") (number_literal "0x371c")) () ")")))) (; ";")) (expression_statement "piVar1 = (int *)PTR_DAT_00131330;" (assignment_expression "piVar1 = (int *)PTR_DAT_00131330" (identifier "piVar1") (= "=") (cast_expression "(int *)PTR_DAT_00131330" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DAT_00131330"))) (; ";")) (while_statement "while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }" (while "while") (parenthesized_expression "(iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000)" (( "(") (comma_expression "iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000" (assignment_expression "iVar3 = FUN_000d2920(0x7c3bf425)" (identifier "iVar3") (= "=") (call_expression "FUN_000d2920(0x7c3bf425)" (identifier "FUN_000d2920") (argument_list "(0x7c3bf425)" (( "(") (number_literal "0x7c3bf425") () ")")))) (, ",") (binary_expression "iVar3 != 0x2000" (identifier "iVar3") (!= "!=") (number_literal "0x2000"))) () ")")) (compound_statement "{\n      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }\n    }" ({ "{") (if_statement "if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }" (if "if") (parenthesized_expression "((*(uint *)(*piVar1 + 4) & 0x8000) == 0)" (( "(") (binary_expression "(*(uint *)(*piVar1 + 4) & 0x8000) == 0" (parenthesized_expression "(*(uint *)(*piVar1 + 4) & 0x8000)" (( "(") (binary_expression "*(uint *)(*piVar1 + 4) & 0x8000" (pointer_expression "*(uint *)(*piVar1 + 4)" (* "*") (cast_expression "(uint *)(*piVar1 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar1 + 4)" (( "(") (binary_expression "*piVar1 + 4" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "0x8000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        (*pcVar11)();\n        (*pcVar9)();\n        piVar1 = (int *)PTR_DAT_00131330;\n      }" ({ "{") (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" (( "(") (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "(*pcVar9)();" (call_expression "(*pcVar9)()" (parenthesized_expression "(*pcVar9)" (( "(") (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar1 = (int *)PTR_DAT_00131330;" (assignment_expression "piVar1 = (int *)PTR_DAT_00131330" (identifier "piVar1") (= "=") (cast_expression "(int *)PTR_DAT_00131330" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DAT_00131330"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if ((uVar2 & 0x7c38c425) != 0) {\n    FUN_000d0040();\n    FUN_000d3694(0x10200);\n    return;\n  }" (if "if") (parenthesized_expression "((uVar2 & 0x7c38c425) != 0)" (( "(") (binary_expression "(uVar2 & 0x7c38c425) != 0" (parenthesized_expression "(uVar2 & 0x7c38c425)" (( "(") (binary_expression "uVar2 & 0x7c38c425" (identifier "uVar2") (& "&") (number_literal "0x7c38c425")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_000d0040();\n    FUN_000d3694(0x10200);\n    return;\n  }" ({ "{") (expression_statement "FUN_000d0040();" (call_expression "FUN_000d0040()" (identifier "FUN_000d0040") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_000d3694(0x10200);" (call_expression "FUN_000d3694(0x10200)" (identifier "FUN_000d3694") (argument_list "(0x10200)" (( "(") (number_literal "0x10200") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar10 = *(uint **)PTR_DAT_00131330;" (assignment_expression "puVar10 = *(uint **)PTR_DAT_00131330" (identifier "puVar10") (= "=") (pointer_expression "*(uint **)PTR_DAT_00131330" (* "*") (cast_expression "(uint **)PTR_DAT_00131330" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_DAT_00131330")))) (; ";")) (expression_statement "uVar2 = *puVar10 & 0xff00;" (assignment_expression "uVar2 = *puVar10 & 0xff00" (identifier "uVar2") (= "=") (binary_expression "*puVar10 & 0xff00" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (& "&") (number_literal "0xff00"))) (; ";")) (if_statement "if (uVar2 == 0x900) {\n    iVar3 = FUN_000d0664(0x200);\n    *(uint *)(iVar3 + 0x10) = puVar10[-0x11];\n    FUN_000d3694(*puVar10);\n    return;\n  }" (if "if") (parenthesized_expression "(uVar2 == 0x900)" (( "(") (binary_expression "uVar2 == 0x900" (identifier "uVar2") (== "==") (number_literal "0x900")) () ")")) (compound_statement "{\n    iVar3 = FUN_000d0664(0x200);\n    *(uint *)(iVar3 + 0x10) = puVar10[-0x11];\n    FUN_000d3694(*puVar10);\n    return;\n  }" ({ "{") (expression_statement "iVar3 = FUN_000d0664(0x200);" (assignment_expression "iVar3 = FUN_000d0664(0x200)" (identifier "iVar3") (= "=") (call_expression "FUN_000d0664(0x200)" (identifier "FUN_000d0664") (argument_list "(0x200)" (( "(") (number_literal "0x200") () ")")))) (; ";")) (expression_statement "*(uint *)(iVar3 + 0x10) = puVar10[-0x11];" (assignment_expression "*(uint *)(iVar3 + 0x10) = puVar10[-0x11]" (pointer_expression "*(uint *)(iVar3 + 0x10)" (* "*") (cast_expression "(uint *)(iVar3 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x10)" (( "(") (binary_expression "iVar3 + 0x10" (identifier "iVar3") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (subscript_expression "puVar10[-0x11]" (identifier "puVar10") ([ "[") (number_literal "-0x11") (] "]"))) (; ";")) (expression_statement "FUN_000d3694(*puVar10);" (call_expression "FUN_000d3694(*puVar10)" (identifier "FUN_000d3694") (argument_list "(*puVar10)" (( "(") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar2 < 0x901) {\n    if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }\n    puVar7 = (uint *)FUN_000d0664();\n    uVar2 = FUN_000d309c(0xe008);\n    puVar7[2] = uVar2;\n    if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }\n    if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }\n  }\n  else {\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }" (if "if") (parenthesized_expression "(uVar2 < 0x901)" (( "(") (binary_expression "uVar2 < 0x901" (identifier "uVar2") (< "<") (number_literal "0x901")) () ")")) (compound_statement "{\n    if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }\n    puVar7 = (uint *)FUN_000d0664();\n    uVar2 = FUN_000d309c(0xe008);\n    puVar7[2] = uVar2;\n    if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }\n    if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }\n  }" ({ "{") (if_statement "if (uVar2 != 0x500) {\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }" (if "if") (parenthesized_expression "(uVar2 != 0x500)" (( "(") (binary_expression "uVar2 != 0x500" (identifier "uVar2") (!= "!=") (number_literal "0x500")) () ")")) (compound_statement "{\n      if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }\n      if (uVar2 != 0x400) goto LAB_000d38a4;\n    }" ({ "{") (if_statement "if (uVar2 == 0x800) {\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }" (if "if") (parenthesized_expression "(uVar2 == 0x800)" (( "(") (binary_expression "uVar2 == 0x800" (identifier "uVar2") (== "==") (number_literal "0x800")) () ")")) (compound_statement "{\n        iVar3 = FUN_000d0664(0x200);\n        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];\n        FUN_000d3694(*puVar10);\n        return;\n      }" ({ "{") (expression_statement "iVar3 = FUN_000d0664(0x200);" (assignment_expression "iVar3 = FUN_000d0664(0x200)" (identifier "iVar3") (= "=") (call_expression "FUN_000d0664(0x200)" (identifier "FUN_000d0664") (argument_list "(0x200)" (( "(") (number_literal "0x200") () ")")))) (; ";")) (expression_statement "*(uint *)(iVar3 + 0x10) = puVar10[-0x12];" (assignment_expression "*(uint *)(iVar3 + 0x10) = puVar10[-0x12]" (pointer_expression "*(uint *)(iVar3 + 0x10)" (* "*") (cast_expression "(uint *)(iVar3 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x10)" (( "(") (binary_expression "iVar3 + 0x10" (identifier "iVar3") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (subscript_expression "puVar10[-0x12]" (identifier "puVar10") ([ "[") (number_literal "-0x12") (] "]"))) (; ";")) (expression_statement "FUN_000d3694(*puVar10);" (call_expression "FUN_000d3694(*puVar10)" (identifier "FUN_000d3694") (argument_list "(*puVar10)" (( "(") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar2 != 0x400) goto LAB_000d38a4;" (if "if") (parenthesized_expression "(uVar2 != 0x400)" (( "(") (binary_expression "uVar2 != 0x400" (identifier "uVar2") (!= "!=") (number_literal "0x400")) () ")")) (goto_statement "goto LAB_000d38a4;" (goto "goto") (statement_identifier "LAB_000d38a4") (; ";"))) (} "}"))) (expression_statement "puVar7 = (uint *)FUN_000d0664();" (assignment_expression "puVar7 = (uint *)FUN_000d0664()" (identifier "puVar7") (= "=") (cast_expression "(uint *)FUN_000d0664()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000d0664()" (identifier "FUN_000d0664") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "uVar2 = FUN_000d309c(0xe008);" (assignment_expression "uVar2 = FUN_000d309c(0xe008)" (identifier "uVar2") (= "=") (call_expression "FUN_000d309c(0xe008)" (identifier "FUN_000d309c") (argument_list "(0xe008)" (( "(") (number_literal "0xe008") () ")")))) (; ";")) (expression_statement "puVar7[2] = uVar2;" (assignment_expression "puVar7[2] = uVar2" (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (if_statement "if ((puVar10[1] & 8) != 0) {\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }" (if "if") (parenthesized_expression "((puVar10[1] & 8) != 0)" (( "(") (binary_expression "(puVar10[1] & 8) != 0" (parenthesized_expression "(puVar10[1] & 8)" (( "(") (binary_expression "puVar10[1] & 8" (subscript_expression "puVar10[1]" (identifier "puVar10") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *puVar7 = *puVar7 | *puVar10;\n      uVar2 = FUN_000d309c(0xe000);\n      puVar7[3] = uVar2;\n    }" ({ "{") (expression_statement "*puVar7 = *puVar7 | *puVar10;" (assignment_expression "*puVar7 = *puVar7 | *puVar10" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (binary_expression "*puVar7 | *puVar10" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (| "|") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) (; ";")) (expression_statement "uVar2 = FUN_000d309c(0xe000);" (assignment_expression "uVar2 = FUN_000d309c(0xe000)" (identifier "uVar2") (= "=") (call_expression "FUN_000d309c(0xe000)" (identifier "FUN_000d309c") (argument_list "(0xe000)" (( "(") (number_literal "0xe000") () ")")))) (; ";")) (expression_statement "puVar7[3] = uVar2;" (assignment_expression "puVar7[3] = uVar2" (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (} "}"))) (if_statement "if ((puVar10[1] & 0x2000) != 0) {\n      FUN_000d0040();\n    }" (if "if") (parenthesized_expression "((puVar10[1] & 0x2000) != 0)" (( "(") (binary_expression "(puVar10[1] & 0x2000) != 0" (parenthesized_expression "(puVar10[1] & 0x2000)" (( "(") (binary_expression "puVar10[1] & 0x2000" (subscript_expression "puVar10[1]" (identifier "puVar10") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0x2000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_000d0040();\n    }" ({ "{") (expression_statement "FUN_000d0040();" (call_expression "FUN_000d0040()" (identifier "FUN_000d0040") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }" (else "else") (compound_statement "{\n    if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }\n    if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }\nLAB_000d38a4:\n    FUN_000d3694();\n  }" ({ "{") (if_statement "if (uVar2 == 0x3100) {\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }" (if "if") (parenthesized_expression "(uVar2 == 0x3100)" (( "(") (binary_expression "uVar2 == 0x3100" (identifier "uVar2") (== "==") (number_literal "0x3100")) () ")")) (compound_statement "{\n      iVar3 = FUN_000d0664(0x200);\n      iVar5 = FUN_000d3cc8(0);\n      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);\n      FUN_000d2920(0x20000);\n      uVar4 = FUN_000d3640();\n      *(undefined4 *)(iVar5 + 8) = uVar4;\n      return;\n    }" ({ "{") (expression_statement "iVar3 = FUN_000d0664(0x200);" (assignment_expression "iVar3 = FUN_000d0664(0x200)" (identifier "iVar3") (= "=") (call_expression "FUN_000d0664(0x200)" (identifier "FUN_000d0664") (argument_list "(0x200)" (( "(") (number_literal "0x200") () ")")))) (; ";")) (expression_statement "iVar5 = FUN_000d3cc8(0);" (assignment_expression "iVar5 = FUN_000d3cc8(0)" (identifier "iVar5") (= "=") (call_expression "FUN_000d3cc8(0)" (identifier "FUN_000d3cc8") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);" (assignment_expression "*(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10)" (pointer_expression "*(undefined4 *)(iVar3 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar3 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x10)" (( "(") (binary_expression "iVar3 + 0x10" (identifier "iVar3") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "FUN_000d2920(0x20000);" (call_expression "FUN_000d2920(0x20000)" (identifier "FUN_000d2920") (argument_list "(0x20000)" (( "(") (number_literal "0x20000") () ")"))) (; ";")) (expression_statement "uVar4 = FUN_000d3640();" (assignment_expression "uVar4 = FUN_000d3640()" (identifier "uVar4") (= "=") (call_expression "FUN_000d3640()" (identifier "FUN_000d3640") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar5 + 8) = uVar4;" (assignment_expression "*(undefined4 *)(iVar5 + 8) = uVar4" (pointer_expression "*(undefined4 *)(iVar5 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 8)" (( "(") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar2 < 0x3101) {\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }\n    else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }" (if "if") (parenthesized_expression "(uVar2 < 0x3101)" (( "(") (binary_expression "uVar2 < 0x3101" (identifier "uVar2") (< "<") (number_literal "0x3101")) () ")")) (compound_statement "{\n      if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }\n    }" ({ "{") (if_statement "if (uVar2 == 0x3000) {\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }" (if "if") (parenthesized_expression "(uVar2 == 0x3000)" (( "(") (binary_expression "uVar2 == 0x3000" (identifier "uVar2") (== "==") (number_literal "0x3000")) () ")")) (compound_statement "{\n        iVar3 = FUN_000d0664(0x10700);\n        uVar4 = FUN_000d3640();\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        FUN_000d371c();\n        iVar5 = FUN_000d0664(0x200);\n        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);\n        iVar3 = FUN_000d2920(0x7c3ff425);\n        if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }\n        FUN_000d0040();\n        return;\n      }" ({ "{") (expression_statement "iVar3 = FUN_000d0664(0x10700);" (assignment_expression "iVar3 = FUN_000d0664(0x10700)" (identifier "iVar3") (= "=") (call_expression "FUN_000d0664(0x10700)" (identifier "FUN_000d0664") (argument_list "(0x10700)" (( "(") (number_literal "0x10700") () ")")))) (; ";")) (expression_statement "uVar4 = FUN_000d3640();" (assignment_expression "uVar4 = FUN_000d3640()" (identifier "uVar4") (= "=") (call_expression "FUN_000d3640()" (identifier "FUN_000d3640") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar3 + 8) = uVar4;" (assignment_expression "*(undefined4 *)(iVar3 + 8) = uVar4" (pointer_expression "*(undefined4 *)(iVar3 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar3 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "FUN_000d371c();" (call_expression "FUN_000d371c()" (identifier "FUN_000d371c") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar5 = FUN_000d0664(0x200);" (assignment_expression "iVar5 = FUN_000d0664(0x200)" (identifier "iVar5") (= "=") (call_expression "FUN_000d0664(0x200)" (identifier "FUN_000d0664") (argument_list "(0x200)" (( "(") (number_literal "0x200") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);" (assignment_expression "*(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4)" (pointer_expression "*(undefined4 *)(iVar3 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar3 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar10[-0x13] + 4)" (* "*") (cast_expression "(undefined4 *)(puVar10[-0x13] + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10[-0x13] + 4)" (( "(") (binary_expression "puVar10[-0x13] + 4" (subscript_expression "puVar10[-0x13]" (identifier "puVar10") ([ "[") (number_literal "-0x13") (] "]")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_000d2920(0x7c3ff425);" (assignment_expression "iVar3 = FUN_000d2920(0x7c3ff425)" (identifier "iVar3") (= "=") (call_expression "FUN_000d2920(0x7c3ff425)" (identifier "FUN_000d2920") (argument_list "(0x7c3ff425)" (( "(") (number_literal "0x7c3ff425") () ")")))) (; ";")) (if_statement "if (iVar3 == 0x40000) {\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }" (if "if") (parenthesized_expression "(iVar3 == 0x40000)" (( "(") (binary_expression "iVar3 == 0x40000" (identifier "iVar3") (== "==") (number_literal "0x40000")) () ")")) (compound_statement "{\n          FUN_000d371c();\n          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);\n          return;\n        }" ({ "{") (expression_statement "FUN_000d371c();" (call_expression "FUN_000d371c()" (identifier "FUN_000d371c") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);" (assignment_expression "*(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4)" (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar10[-0x13] + 4)" (* "*") (cast_expression "(undefined4 *)(puVar10[-0x13] + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10[-0x13] + 4)" (( "(") (binary_expression "puVar10[-0x13] + 4" (subscript_expression "puVar10[-0x13]" (identifier "puVar10") ([ "[") (number_literal "-0x13") (] "]")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_000d0040();" (call_expression "FUN_000d0040()" (identifier "FUN_000d0040") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }" (else "else") (compound_statement "{\n      if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }\n      if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }\n    }" ({ "{") (if_statement "if (uVar2 == 0x3200) {\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }" (if "if") (parenthesized_expression "(uVar2 == 0x3200)" (( "(") (binary_expression "uVar2 == 0x3200" (identifier "uVar2") (== "==") (number_literal "0x3200")) () ")")) (compound_statement "{\n        FUN_000d2920(1);\n        puVar7 = (uint *)FUN_000d309c(0x4002);\n        if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }\n        iVar3 = FUN_000d0664(0x10200);\n        *(uint **)(iVar3 + 8) = puVar7;\n        iVar3 = FUN_000d309c(0x4000);\n        uVar4 = FUN_000d309c(2);\n        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);\n        puVar6[2] = iVar3;\n        if (iVar3 != 0) {\n          return;\n        }\n        *puVar6 = 0x200;\n        return;\n      }" ({ "{") (expression_statement "FUN_000d2920(1);" (call_expression "FUN_000d2920(1)" (identifier "FUN_000d2920") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (expression_statement "puVar7 = (uint *)FUN_000d309c(0x4002);" (assignment_expression "puVar7 = (uint *)FUN_000d309c(0x4002)" (identifier "puVar7") (= "=") (cast_expression "(uint *)FUN_000d309c(0x4002)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000d309c(0x4002)" (identifier "FUN_000d309c") (argument_list "(0x4002)" (( "(") (number_literal "0x4002") () ")"))))) (; ";")) (if_statement "if ((puVar10[1] & 2) != 0) {\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }" (if "if") (parenthesized_expression "((puVar10[1] & 2) != 0)" (( "(") (binary_expression "(puVar10[1] & 2) != 0" (parenthesized_expression "(puVar10[1] & 2)" (( "(") (binary_expression "puVar10[1] & 2" (subscript_expression "puVar10[1]" (identifier "puVar10") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }\n          iVar3 = FUN_000d0664(puVar8 + 0x600);\n          *(uint *)(iVar3 + 8) = puVar7[2];\n          *(uint *)(iVar3 + 0xc) = puVar7[3];\n          puVar6 = (undefined4 *)FUN_000d3cc8(0);\n          *puVar6 = 0x10e00;\n          puVar6[2] = puVar7[2];\n          return;\n        }" ({ "{") (if_statement "if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }" (if "if") (parenthesized_expression "((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00))" (( "(") (binary_expression "(puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)" (parenthesized_expression "(puVar7 == (uint *)0x0)" (( "(") (binary_expression "puVar7 == (uint *)0x0" (identifier "puVar7") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)" (( "(") (comma_expression "puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00" (assignment_expression "puVar8 = &LAB_00030000" (identifier "puVar8") (= "=") (pointer_expression "&LAB_00030000" (& "&") (identifier "LAB_00030000"))) (, ",") (binary_expression "(*puVar7 & 0xff00) != 0x1b00" (parenthesized_expression "(*puVar7 & 0xff00)" (( "(") (binary_expression "*puVar7 & 0xff00" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (& "&") (number_literal "0xff00")) () ")")) (!= "!=") (number_literal "0x1b00"))) () ")"))) () ")")) (compound_statement "{\n            puVar8 = PTR_DAT_001311dc + -0xd9b;\n            FUN_000d11cc(puVar8);\n          }" ({ "{") (expression_statement "puVar8 = PTR_DAT_001311dc + -0xd9b;" (assignment_expression "puVar8 = PTR_DAT_001311dc + -0xd9b" (identifier "puVar8") (= "=") (binary_expression "PTR_DAT_001311dc + -0xd9b" (identifier "PTR_DAT_001311dc") (+ "+") (number_literal "-0xd9b"))) (; ";")) (expression_statement "FUN_000d11cc(puVar8);" (call_expression "FUN_000d11cc(puVar8)" (identifier "FUN_000d11cc") (argument_list "(puVar8)" (( "(") (identifier "puVar8") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_000d0664(puVar8 + 0x600);" (assignment_expression "iVar3 = FUN_000d0664(puVar8 + 0x600)" (identifier "iVar3") (= "=") (call_expression "FUN_000d0664(puVar8 + 0x600)" (identifier "FUN_000d0664") (argument_list "(puVar8 + 0x600)" (( "(") (binary_expression "puVar8 + 0x600" (identifier "puVar8") (+ "+") (number_literal "0x600")) () ")")))) (; ";")) (expression_statement "*(uint *)(iVar3 + 8) = puVar7[2];" (assignment_expression "*(uint *)(iVar3 + 8) = puVar7[2]" (pointer_expression "*(uint *)(iVar3 + 8)" (* "*") (cast_expression "(uint *)(iVar3 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")")))) (= "=") (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*(uint *)(iVar3 + 0xc) = puVar7[3];" (assignment_expression "*(uint *)(iVar3 + 0xc) = puVar7[3]" (pointer_expression "*(uint *)(iVar3 + 0xc)" (* "*") (cast_expression "(uint *)(iVar3 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar6 = (undefined4 *)FUN_000d3cc8(0);" (assignment_expression "puVar6 = (undefined4 *)FUN_000d3cc8(0)" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)FUN_000d3cc8(0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000d3cc8(0)" (identifier "FUN_000d3cc8") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (expression_statement "*puVar6 = 0x10e00;" (assignment_expression "*puVar6 = 0x10e00" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "0x10e00")) (; ";")) (expression_statement "puVar6[2] = puVar7[2];" (assignment_expression "puVar6[2] = puVar7[2]" (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_000d0664(0x10200);" (assignment_expression "iVar3 = FUN_000d0664(0x10200)" (identifier "iVar3") (= "=") (call_expression "FUN_000d0664(0x10200)" (identifier "FUN_000d0664") (argument_list "(0x10200)" (( "(") (number_literal "0x10200") () ")")))) (; ";")) (expression_statement "*(uint **)(iVar3 + 8) = puVar7;" (assignment_expression "*(uint **)(iVar3 + 8) = puVar7" (pointer_expression "*(uint **)(iVar3 + 8)" (* "*") (cast_expression "(uint **)(iVar3 + 8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "puVar7")) (; ";")) (expression_statement "iVar3 = FUN_000d309c(0x4000);" (assignment_expression "iVar3 = FUN_000d309c(0x4000)" (identifier "iVar3") (= "=") (call_expression "FUN_000d309c(0x4000)" (identifier "FUN_000d309c") (argument_list "(0x4000)" (( "(") (number_literal "0x4000") () ")")))) (; ";")) (expression_statement "uVar4 = FUN_000d309c(2);" (assignment_expression "uVar4 = FUN_000d309c(2)" (identifier "uVar4") (= "=") (call_expression "FUN_000d309c(2)" (identifier "FUN_000d309c") (argument_list "(2)" (( "(") (number_literal "2") () ")")))) (; ";")) (expression_statement "puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);" (assignment_expression "puVar6 = (undefined4 *)FUN_000d3cc8(uVar4)" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)FUN_000d3cc8(uVar4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000d3cc8(uVar4)" (identifier "FUN_000d3cc8") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))))) (; ";")) (expression_statement "puVar6[2] = iVar3;" (assignment_expression "puVar6[2] = iVar3" (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (iVar3 != 0) {\n          return;\n        }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*puVar6 = 0x200;" (assignment_expression "*puVar6 = 0x200" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "0x200")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar2 == 0x3300) {\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }" (if "if") (parenthesized_expression "(uVar2 == 0x3300)" (( "(") (binary_expression "uVar2 == 0x3300" (identifier "uVar2") (== "==") (number_literal "0x3300")) () ")")) (compound_statement "{\n        uVar4 = FUN_000d3640();\n        iVar3 = FUN_000d3cc8(0);\n        *(undefined4 *)(iVar3 + 8) = uVar4;\n        return;\n      }" ({ "{") (expression_statement "uVar4 = FUN_000d3640();" (assignment_expression "uVar4 = FUN_000d3640()" (identifier "uVar4") (= "=") (call_expression "FUN_000d3640()" (identifier "FUN_000d3640") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar3 = FUN_000d3cc8(0);" (assignment_expression "iVar3 = FUN_000d3cc8(0)" (identifier "iVar3") (= "=") (call_expression "FUN_000d3cc8(0)" (identifier "FUN_000d3cc8") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar3 + 8) = uVar4;" (assignment_expression "*(undefined4 *)(iVar3 + 8) = uVar4" (pointer_expression "*(undefined4 *)(iVar3 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar3 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_000d38a4:\n    FUN_000d3694();" (statement_identifier "LAB_000d38a4") (: ":") (expression_statement "FUN_000d3694();" (call_expression "FUN_000d3694()" (identifier "FUN_000d3694") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) 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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal)))) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))))))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (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: (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: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (return_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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier) right: (number_literal))))) right: (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))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (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))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (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 (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (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)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (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 (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_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: (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (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: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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 (identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier) right: (number_literal))))) right: (identifier))) (return_statement)))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))) (return_statement))))

void MASKED(void)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  undefined4 *puVar6;
  uint *puVar7;
  undefined1 *puVar8;
  code *pcVar9;
  uint *puVar10;
  code *pcVar11;
  
  do {
    uVar2 = FUN_000d2920(0x7c3bd425);
  } while ((uVar2 & 0x8000) != 0);
  if ((uVar2 & 0x1000) != 0) {
    pcVar11 = (code *)(PTR_LAB_00131bb8 + 0x40);
    pcVar9 = (code *)(PTR_LAB_00131bb8 + 0x371c);
    piVar1 = (int *)PTR_DAT_00131330;
    while (iVar3 = FUN_000d2920(0x7c3bf425), iVar3 != 0x2000) {
      if ((*(uint *)(*piVar1 + 4) & 0x8000) == 0) {
        (*pcVar11)();
        (*pcVar9)();
        piVar1 = (int *)PTR_DAT_00131330;
      }
    }
    return;
  }
  if ((uVar2 & 0x7c38c425) != 0) {
    FUN_000d0040();
    FUN_000d3694(0x10200);
    return;
  }
  puVar10 = *(uint **)PTR_DAT_00131330;
  uVar2 = *puVar10 & 0xff00;
  if (uVar2 == 0x900) {
    iVar3 = FUN_000d0664(0x200);
    *(uint *)(iVar3 + 0x10) = puVar10[-0x11];
    FUN_000d3694(*puVar10);
    return;
  }
  if (uVar2 < 0x901) {
    if (uVar2 != 0x500) {
      if (uVar2 == 0x800) {
        iVar3 = FUN_000d0664(0x200);
        *(uint *)(iVar3 + 0x10) = puVar10[-0x12];
        FUN_000d3694(*puVar10);
        return;
      }
      if (uVar2 != 0x400) goto LAB_000d38a4;
    }
    puVar7 = (uint *)FUN_000d0664();
    uVar2 = FUN_000d309c(0xe008);
    puVar7[2] = uVar2;
    if ((puVar10[1] & 8) != 0) {
      *puVar7 = *puVar7 | *puVar10;
      uVar2 = FUN_000d309c(0xe000);
      puVar7[3] = uVar2;
    }
    if ((puVar10[1] & 0x2000) != 0) {
      FUN_000d0040();
    }
  }
  else {
    if (uVar2 == 0x3100) {
      iVar3 = FUN_000d0664(0x200);
      iVar5 = FUN_000d3cc8(0);
      *(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(iVar5 + 0x10);
      FUN_000d2920(0x20000);
      uVar4 = FUN_000d3640();
      *(undefined4 *)(iVar5 + 8) = uVar4;
      return;
    }
    if (uVar2 < 0x3101) {
      if (uVar2 == 0x3000) {
        iVar3 = FUN_000d0664(0x10700);
        uVar4 = FUN_000d3640();
        *(undefined4 *)(iVar3 + 8) = uVar4;
        MASKED();
        iVar5 = FUN_000d0664(0x200);
        *(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(puVar10[-0x13] + 4);
        iVar3 = FUN_000d2920(0x7c3ff425);
        if (iVar3 == 0x40000) {
          MASKED();
          *(undefined4 *)(iVar5 + 0x10) = *(undefined4 *)(puVar10[-0x13] + 4);
          return;
        }
        FUN_000d0040();
        return;
      }
    }
    else {
      if (uVar2 == 0x3200) {
        FUN_000d2920(1);
        puVar7 = (uint *)FUN_000d309c(0x4002);
        if ((puVar10[1] & 2) != 0) {
          if ((puVar7 == (uint *)0x0) || (puVar8 = &LAB_00030000, (*puVar7 & 0xff00) != 0x1b00)) {
            puVar8 = PTR_DAT_001311dc + -0xd9b;
            FUN_000d11cc(puVar8);
          }
          iVar3 = FUN_000d0664(puVar8 + 0x600);
          *(uint *)(iVar3 + 8) = puVar7[2];
          *(uint *)(iVar3 + 0xc) = puVar7[3];
          puVar6 = (undefined4 *)FUN_000d3cc8(0);
          *puVar6 = 0x10e00;
          puVar6[2] = puVar7[2];
          return;
        }
        iVar3 = FUN_000d0664(0x10200);
        *(uint **)(iVar3 + 8) = puVar7;
        iVar3 = FUN_000d309c(0x4000);
        uVar4 = FUN_000d309c(2);
        puVar6 = (undefined4 *)FUN_000d3cc8(uVar4);
        puVar6[2] = iVar3;
        if (iVar3 != 0) {
          return;
        }
        *puVar6 = 0x200;
        return;
      }
      if (uVar2 == 0x3300) {
        uVar4 = FUN_000d3640();
        iVar3 = FUN_000d3cc8(0);
        *(undefined4 *)(iVar3 + 8) = uVar4;
        return;
      }
    }
LAB_000d38a4:
    FUN_000d3694();
  }
  return;
}

