
void ct_init(ush *attr,int *methodp)

{
  short sVar1;
  short sVar2;
  short sVar3;
  undefined *puVar4;
  undefined *puVar5;
  undefined1 *puVar6;
  undefined *puVar7;
  uint uVar8;
  undefined1 *puVar9;
  undefined *puVar10;
  undefined2 *puVar11;
  int iVar12;
  int iVar13;
  ct_data *tree;
  int iVar14;
  undefined2 *puVar15;
  uint *puVar16;
  int *piVar17;
  int *piVar18;
  uint uVar19;
  
  puVar4 = PTR_DAT_00036388;
  *(ush **)(PTR_DAT_00036388 + 0x6d50) = attr;
  puVar5 = PTR_DAT_000364c4;
  *(undefined4 *)(puVar4 + 0x6d5c) = 0;
  *(undefined4 *)(puVar4 + 0x6d58) = 0;
  puVar4 = PTR_DAT_00036388;
  sVar1 = *(short *)(puVar5 + -0x729a);
  *(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;
  *(undefined4 *)(puVar4 + 28000) = 0;
  puVar4 = PTR_DAT_000364c4;
  if (sVar1 == 0) {
    iVar14 = 0;
    iVar13 = 0;
    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);
    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);
    do {
      iVar12 = 1 << (*puVar16 & 0x1f);
      *piVar17 = iVar13;
      if (0 < iVar12) {
        puVar6 = puVar4 + iVar13 + -0x7f94;
        puVar9 = puVar6 + iVar12;
        do {
          *puVar6 = (char)iVar14;
          puVar6 = puVar6 + 1;
        } while (puVar6 != puVar9);
        iVar13 = iVar13 + iVar12;
      }
      puVar7 = PTR_DAT_00036388;
      iVar14 = iVar14 + 1;
      piVar17 = piVar17 + 1;
      puVar16 = puVar16 + 1;
    } while (iVar14 != 0x1c);
    iVar12 = 0;
    iVar14 = 0;
    puVar4[iVar13 + -0x7f95] = 0x1c;
    piVar17 = (int *)(puVar7 + 0x7d80);
    puVar16 = (uint *)(puVar7 + 0x61cc);
    do {
      iVar13 = 1 << (*puVar16 & 0x1f);
      *piVar17 = iVar12;
      if (0 < iVar13) {
        puVar6 = puVar7 + iVar12 + 0x7e6c;
        puVar9 = puVar6 + iVar13;
        do {
          *puVar6 = (char)iVar14;
          puVar6 = puVar6 + 1;
        } while (puVar6 != puVar9);
        iVar12 = iVar12 + iVar13;
      }
      puVar4 = PTR_DAT_00036388;
      iVar14 = iVar14 + 1;
      piVar17 = piVar17 + 1;
      puVar16 = puVar16 + 1;
    } while (iVar14 != 0x10);
    iVar12 = iVar12 >> 7;
    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);
    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);
    iVar13 = 0x10;
    do {
      iVar14 = 1 << (*piVar17 - 7U & 0x1f);
      *piVar18 = iVar12 << 7;
      if (0 < iVar14) {
        puVar7 = puVar4 + iVar12 + 0x7e6c;
        puVar10 = puVar7 + iVar14;
        do {
          puVar7[0x100] = (char)iVar13;
          puVar7 = puVar7 + 1;
        } while (puVar7 != puVar10);
        iVar12 = iVar12 + iVar14;
      }
      puVar7 = PTR_DAT_000364c4;
      iVar13 = iVar13 + 1;
      piVar18 = piVar18 + 1;
      piVar17 = piVar17 + 1;
    } while (iVar13 != 0x1e);
    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);
    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);
    do {
      *puVar15 = 0;
      puVar4 = PTR_DAT_000364c4;
      puVar15 = puVar15 + 1;
    } while (puVar15 != puVar11);
    sVar1 = *(short *)(puVar7 + -0x7348);
    tree = (ct_data *)(PTR_DAT_000364c4 + -0x7224);
    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);
    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);
    do {
      *puVar15 = 8;
      puVar15 = puVar15 + 2;
    } while (puVar15 != puVar11);
    sVar2 = *(short *)(puVar7 + -0x7346);
    puVar11 = (undefined2 *)(puVar4 + -0x6e22);
    do {
      *puVar15 = 9;
      puVar15 = puVar15 + 2;
    } while (puVar11 != puVar15);
    sVar3 = *(short *)(puVar7 + -0x734a);
    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;
    do {
      *puVar11 = 7;
      puVar11 = puVar11 + 2;
    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);
    *(undefined2 *)(puVar4 + -0x6dc2) = 8;
    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;
    *(undefined2 *)(puVar4 + -0x6dbe) = 8;
    *(undefined2 *)(puVar4 + -0x6dba) = 8;
    *(undefined2 *)(puVar4 + -0x6db6) = 8;
    *(undefined2 *)(puVar4 + -0x6db2) = 8;
    *(undefined2 *)(puVar4 + -0x6dae) = 8;
    *(undefined2 *)(puVar4 + -0x6daa) = 8;
    *(undefined2 *)(puVar4 + -0x6da6) = 8;
    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;
    gen_codes(tree,0x11f);
    puVar15 = (undefined2 *)(puVar5 + -0x729c);
    uVar8 = 0;
    do {
      puVar15[1] = 5;
      uVar19 = uVar8 + 1;
      uVar8 = bi_reverse(uVar8,5);
      *puVar15 = (short)uVar8;
      puVar15 = puVar15 + 2;
      uVar8 = uVar19;
    } while (uVar19 != 0x1e);
    init_block();
    return;
  }
  return;
}



void ct_init(undefined4 param_1)

{
  short sVar1;
  short sVar2;
  short sVar3;
  undefined *puVar4;
  undefined *puVar5;
  undefined1 *puVar6;
  undefined *puVar7;
  undefined2 uVar8;
  undefined1 *puVar9;
  undefined *puVar10;
  undefined2 *puVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  undefined2 *puVar15;
  uint *puVar16;
  int *piVar17;
  int *piVar18;
  
  puVar4 = PTR_DAT_00036388;
  *(undefined4 *)(PTR_DAT_00036388 + 0x6d50) = param_1;
  puVar5 = PTR_DAT_000364c4;
  *(undefined4 *)(puVar4 + 0x6d5c) = 0;
  *(undefined4 *)(puVar4 + 0x6d58) = 0;
  puVar4 = PTR_DAT_00036388;
  sVar1 = *(short *)(puVar5 + -0x729a);
  *(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;
  *(undefined4 *)(puVar4 + 28000) = 0;
  puVar4 = PTR_DAT_000364c4;
  if (sVar1 == 0) {
    iVar14 = 0;
    iVar13 = 0;
    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);
    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);
    do {
      iVar12 = 1 << (*puVar16 & 0x1f);
      *piVar17 = iVar13;
      if (0 < iVar12) {
        puVar6 = puVar4 + iVar13 + -0x7f94;
        puVar9 = puVar6 + iVar12;
        do {
          *puVar6 = (char)iVar14;
          puVar6 = puVar6 + 1;
        } while (puVar6 != puVar9);
        iVar13 = iVar13 + iVar12;
      }
      puVar7 = PTR_DAT_00036388;
      iVar14 = iVar14 + 1;
      piVar17 = piVar17 + 1;
      puVar16 = puVar16 + 1;
    } while (iVar14 != 0x1c);
    iVar12 = 0;
    iVar14 = 0;
    puVar4[iVar13 + -0x7f95] = 0x1c;
    piVar17 = (int *)(puVar7 + 0x7d80);
    puVar16 = (uint *)(puVar7 + 0x61cc);
    do {
      iVar13 = 1 << (*puVar16 & 0x1f);
      *piVar17 = iVar12;
      if (0 < iVar13) {
        puVar6 = puVar7 + iVar12 + 0x7e6c;
        puVar9 = puVar6 + iVar13;
        do {
          *puVar6 = (char)iVar14;
          puVar6 = puVar6 + 1;
        } while (puVar6 != puVar9);
        iVar12 = iVar12 + iVar13;
      }
      puVar4 = PTR_DAT_00036388;
      iVar14 = iVar14 + 1;
      piVar17 = piVar17 + 1;
      puVar16 = puVar16 + 1;
    } while (iVar14 != 0x10);
    iVar12 = iVar12 >> 7;
    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);
    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);
    iVar13 = 0x10;
    do {
      iVar14 = 1 << (*piVar17 - 7U & 0x1f);
      *piVar18 = iVar12 << 7;
      if (0 < iVar14) {
        puVar7 = puVar4 + iVar12 + 0x7e6c;
        puVar10 = puVar7 + iVar14;
        do {
          puVar7[0x100] = (char)iVar13;
          puVar7 = puVar7 + 1;
        } while (puVar7 != puVar10);
        iVar12 = iVar12 + iVar14;
      }
      puVar7 = PTR_DAT_000364c4;
      iVar13 = iVar13 + 1;
      piVar18 = piVar18 + 1;
      piVar17 = piVar17 + 1;
    } while (iVar13 != 0x1e);
    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);
    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);
    do {
      *puVar15 = 0;
      puVar4 = PTR_DAT_000364c4;
      puVar15 = puVar15 + 1;
    } while (puVar15 != puVar11);
    sVar1 = *(short *)(puVar7 + -0x7348);
    puVar10 = PTR_DAT_000364c4 + -0x7224;
    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);
    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);
    do {
      *puVar15 = 8;
      puVar15 = puVar15 + 2;
    } while (puVar15 != puVar11);
    sVar2 = *(short *)(puVar7 + -0x7346);
    puVar11 = (undefined2 *)(puVar4 + -0x6e22);
    do {
      *puVar15 = 9;
      puVar15 = puVar15 + 2;
    } while (puVar11 != puVar15);
    sVar3 = *(short *)(puVar7 + -0x734a);
    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;
    do {
      *puVar11 = 7;
      puVar11 = puVar11 + 2;
    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);
    *(undefined2 *)(puVar4 + -0x6dc2) = 8;
    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;
    *(undefined2 *)(puVar4 + -0x6dbe) = 8;
    *(undefined2 *)(puVar4 + -0x6dba) = 8;
    *(undefined2 *)(puVar4 + -0x6db6) = 8;
    *(undefined2 *)(puVar4 + -0x6db2) = 8;
    *(undefined2 *)(puVar4 + -0x6dae) = 8;
    *(undefined2 *)(puVar4 + -0x6daa) = 8;
    *(undefined2 *)(puVar4 + -0x6da6) = 8;
    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;
    FUN_0001a368(puVar10,0x11f);
    puVar15 = (undefined2 *)(puVar5 + -0x729c);
    iVar13 = 0;
    do {
      puVar15[1] = 5;
      iVar14 = iVar13 + 1;
      uVar8 = bi_reverse(iVar13,5);
      *puVar15 = uVar8;
      puVar15 = puVar15 + 2;
      iVar13 = iVar14;
    } while (iVar14 != 0x1e);
    FUN_0001a030();
    return;
  }
  return;
}


lui gp,0x2
addiu gp,gp,0x342c
addu gp,gp,t9
addiu sp,sp,-0x30
lw v0,-0x7fd8(gp)
lw v1,-0x7fd8(gp)
or a1,zero,zero
sw s0,0x1c(sp)
sw a0,0x6d50(v0)
or a0,zero,zero
lw s0,-0x7e9c(gp)
sw a1,0x6d5c(v1)
sw a0,0x6d58(v1)
addiu s0,s0,-0x729c
sw gp,0x10(sp)
sw ra,0x2c(sp)
sw s3,0x28(sp)
sw s2,0x24(sp)
sw s1,0x20(sp)
lw v1,-0x7fd8(gp)
lhu v0,0x2(s0)
sw a1,0x6d64(v1)
bne v0,zero,0x0001b204
_sw a0,0x6d60(v1)
lw t1,-0x7fd8(gp)
or a3,zero,zero
lw t0,-0x7fd8(gp)
or a2,zero,zero
lw t2,-0x7e9c(gp)
li t4,0x1
addiu t1,t1,0x7df8
addiu t0,t0,0x6244
addiu t2,t2,-0x7f94
li t3,0x1c
lw a1,0x0(t0)
sllv a1,t4,a1
blez a1,0x0001afec
_sw a2,0x0(t1)
addu v0,t2,a2
andi a0,a3,0xff
addu v1,v0,a1
sb a0,0x0(v0)
addiu v0,v0,0x1
bne v0,v1,0x0001afd8
_nop
addu a2,a2,a1
addiu a3,a3,0x1
addiu t1,t1,0x4
bne a3,t3,0x0001afbc
_addiu t0,t0,0x4
addu t2,t2,a2
lw t1,-0x7fd8(gp)
lw t0,-0x7fd8(gp)
or a2,zero,zero
lw t3,-0x7fd8(gp)
or a1,zero,zero
sb a3,-0x1(t2)
addiu t1,t1,0x7d80
addiu t0,t0,0x61cc
li t4,0x1
addiu t3,t3,0x7e6c
li t2,0x10
lw a3,0x0(t0)
sllv a3,t4,a3
blez a3,0x0001b05c
_sw a2,0x0(t1)
addu v0,t3,a2
andi a0,a1,0xff
addu v1,v0,a3
sb a0,0x0(v0)
addiu v0,v0,0x1
bne v0,v1,0x0001b048
_nop
addu a2,a2,a3
addiu a1,a1,0x1
addiu t1,t1,0x4
bne a1,t2,0x0001b02c
_addiu t0,t0,0x4
lw t1,-0x7fd8(gp)
sra a2,a2,0x7
lw t0,-0x7fd8(gp)
li t3,0x1
lw t4,-0x7fd8(gp)
li t2,0x1e
addiu t1,t1,0x7dc0
addiu t0,t0,0x620c
addiu t4,t4,0x7e6c
lw a3,0x0(t0)
sll v0,a2,0x7
addiu a3,a3,-0x7
sllv a3,t3,a3
blez a3,0x0001b0c8
_sw v0,0x0(t1)
addu v0,t4,a2
andi a0,a1,0xff
addu v1,v0,a3
sb a0,0x100(v0)
addiu v0,v0,0x1
bne v0,v1,0x0001b0b4
_nop
addu a2,a2,a3
addiu a1,a1,0x1
addiu t1,t1,0x4
bne a1,t2,0x0001b090
_addiu t0,t0,0x4
lw a3,-0x7e9c(gp)
addiu a3,a3,-0x7358
addiu v1,a3,0x20
or v0,a3,zero
sh zero,0x0(v0)
addiu v0,v0,0x2
bne v0,v1,0x0001b0e8
_nop
lw a2,-0x7e9c(gp)
li a0,0x8
lw v0,-0x7e9c(gp)
lhu a1,0x10(a3)
addiu a2,a2,-0x7224
addiu v0,v0,-0x7222
addiu v1,a2,0x242
sh a0,0x0(v0)
addiu v0,v0,0x4
bne v0,v1,0x0001b114
_nop
lhu t1,0x12(a3)
addiu v1,a2,0x402
li a0,0x9
sh a0,0x0(v0)
addiu v0,v0,0x4
bne v1,v0,0x0001b130
_nop
addiu t1,t1,0x70
lhu t0,0xe(a3)
addiu a0,a2,0x462
li v0,0x7
sh t1,0x12(a3)
sh v0,0x0(v1)
addiu v1,v1,0x4
bne a0,v1,0x0001b154
_lw t9,-0x7fc8(gp)
li v0,0x8
addiu a0,t0,0x18
addiu v1,a1,0x98
sh v0,0x462(a2)
li a1,0x11f
sh a0,0xe(a3)
addiu t9,t9,-0x5c98
sh v0,0x466(a2)
or a0,a2,zero
sh v0,0x46a(a2)
sh v0,0x46e(a2)
or s1,zero,zero
sh v0,0x472(a2)
li s3,0x5
sh v0,0x476(a2)
li s2,0x1e
sh v0,0x47a(a2)
sh v0,0x47e(a2)
bal 0x0001a368
_sh v1,0x10(a3)
lw gp,0x10(sp)
lw t9,-0x7e98(gp)
li a1,0x5
sh s3,0x2(s0)
addiu s0,s0,0x4
or a0,s1,zero
bal 0x000131b4
_addiu s1,s1,0x1
lw gp,0x10(sp)
bne s1,s2,0x0001b1b8
_sh v0,-0x4(s0)
lw t9,-0x7fc8(gp)
lw ra,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
addiu t9,t9,-0x5fd0
lw s1,0x20(sp)
lw s0,0x1c(sp)
b 0x0001a030
_addiu sp,sp,0x30
lw ra,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x30
(translation_unit "void ct_init(undefined4 param_1)\n\n{\n  short sVar1;\n  short sVar2;\n  short sVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined1 *puVar6;\n  undefined *puVar7;\n  undefined2 uVar8;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  undefined2 *puVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  undefined2 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  int *piVar18;\n  \n  puVar4 = PTR_DAT_00036388;\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d50) = param_1;\n  puVar5 = PTR_DAT_000364c4;\n  *(undefined4 *)(puVar4 + 0x6d5c) = 0;\n  *(undefined4 *)(puVar4 + 0x6d58) = 0;\n  puVar4 = PTR_DAT_00036388;\n  sVar1 = *(short *)(puVar5 + -0x729a);\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;\n  *(undefined4 *)(puVar4 + 28000) = 0;\n  puVar4 = PTR_DAT_000364c4;\n  if (sVar1 == 0) {\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    puVar10 = PTR_DAT_000364c4 + -0x7224;\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    FUN_0001a368(puVar10,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    iVar13 = 0;\n    do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);\n    FUN_0001a030();\n    return;\n  }\n  return;\n}\n\n" (function_definition "void ct_init(undefined4 param_1)\n\n{\n  short sVar1;\n  short sVar2;\n  short sVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined1 *puVar6;\n  undefined *puVar7;\n  undefined2 uVar8;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  undefined2 *puVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  undefined2 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  int *piVar18;\n  \n  puVar4 = PTR_DAT_00036388;\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d50) = param_1;\n  puVar5 = PTR_DAT_000364c4;\n  *(undefined4 *)(puVar4 + 0x6d5c) = 0;\n  *(undefined4 *)(puVar4 + 0x6d58) = 0;\n  puVar4 = PTR_DAT_00036388;\n  sVar1 = *(short *)(puVar5 + -0x729a);\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;\n  *(undefined4 *)(puVar4 + 28000) = 0;\n  puVar4 = PTR_DAT_000364c4;\n  if (sVar1 == 0) {\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    puVar10 = PTR_DAT_000364c4 + -0x7224;\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    FUN_0001a368(puVar10,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    iVar13 = 0;\n    do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);\n    FUN_0001a030();\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "ct_init(undefined4 param_1)" identifier (parameter_list "(undefined4 param_1)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) ))) (compound_statement "{\n  short sVar1;\n  short sVar2;\n  short sVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined1 *puVar6;\n  undefined *puVar7;\n  undefined2 uVar8;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  undefined2 *puVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  undefined2 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  int *piVar18;\n  \n  puVar4 = PTR_DAT_00036388;\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d50) = param_1;\n  puVar5 = PTR_DAT_000364c4;\n  *(undefined4 *)(puVar4 + 0x6d5c) = 0;\n  *(undefined4 *)(puVar4 + 0x6d58) = 0;\n  puVar4 = PTR_DAT_00036388;\n  sVar1 = *(short *)(puVar5 + -0x729a);\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;\n  *(undefined4 *)(puVar4 + 28000) = 0;\n  puVar4 = PTR_DAT_000364c4;\n  if (sVar1 == 0) {\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    puVar10 = PTR_DAT_000364c4 + -0x7224;\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    FUN_0001a368(puVar10,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    iVar13 = 0;\n    do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);\n    FUN_0001a030();\n    return;\n  }\n  return;\n}" { (declaration "short sVar1;" (sized_type_specifier "short" short) identifier ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "short sVar3;" (sized_type_specifier "short" short) identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined2 uVar8;" type_identifier identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined2 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined2 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (expression_statement "puVar4 = PTR_DAT_00036388;" (assignment_expression "puVar4 = PTR_DAT_00036388" identifier = identifier) ;) (expression_statement "*(undefined4 *)(PTR_DAT_00036388 + 0x6d50) = param_1;" (assignment_expression "*(undefined4 *)(PTR_DAT_00036388 + 0x6d50) = param_1" (pointer_expression "*(undefined4 *)(PTR_DAT_00036388 + 0x6d50)" * (cast_expression "(undefined4 *)(PTR_DAT_00036388 + 0x6d50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x6d50)" ( (binary_expression "PTR_DAT_00036388 + 0x6d50" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar5 = PTR_DAT_000364c4;" (assignment_expression "puVar5 = PTR_DAT_000364c4" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + 0x6d5c) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 0x6d5c) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 0x6d5c)" * (cast_expression "(undefined4 *)(puVar4 + 0x6d5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x6d5c)" ( (binary_expression "puVar4 + 0x6d5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + 0x6d58) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 0x6d58) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 0x6d58)" * (cast_expression "(undefined4 *)(puVar4 + 0x6d58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x6d58)" ( (binary_expression "puVar4 + 0x6d58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = PTR_DAT_00036388;" (assignment_expression "puVar4 = PTR_DAT_00036388" identifier = identifier) ;) (expression_statement "sVar1 = *(short *)(puVar5 + -0x729a);" (assignment_expression "sVar1 = *(short *)(puVar5 + -0x729a)" identifier = (pointer_expression "*(short *)(puVar5 + -0x729a)" * (cast_expression "(short *)(puVar5 + -0x729a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x729a)" ( (binary_expression "puVar5 + -0x729a" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;" (assignment_expression "*(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0" (pointer_expression "*(undefined4 *)(PTR_DAT_00036388 + 0x6d64)" * (cast_expression "(undefined4 *)(PTR_DAT_00036388 + 0x6d64)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x6d64)" ( (binary_expression "PTR_DAT_00036388 + 0x6d64" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + 28000) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 28000) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 28000)" * (cast_expression "(undefined4 *)(puVar4 + 28000)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 28000)" ( (binary_expression "puVar4 + 28000" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = PTR_DAT_000364c4;" (assignment_expression "puVar4 = PTR_DAT_000364c4" identifier = identifier) ;) (if_statement "if (sVar1 == 0) {\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    puVar10 = PTR_DAT_000364c4 + -0x7224;\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    FUN_0001a368(puVar10,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    iVar13 = 0;\n    do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);\n    FUN_0001a030();\n    return;\n  }" if (parenthesized_expression "(sVar1 == 0)" ( (binary_expression "sVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    puVar10 = PTR_DAT_000364c4 + -0x7224;\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    FUN_0001a368(puVar10,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    iVar13 = 0;\n    do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);\n    FUN_0001a030();\n    return;\n  }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);" (assignment_expression "piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8)" identifier = (cast_expression "(int *)(PTR_DAT_00036388 + 0x7df8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x7df8)" ( (binary_expression "PTR_DAT_00036388 + 0x7df8" identifier + number_literal) )))) ;) (expression_statement "puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);" (assignment_expression "puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244)" identifier = (cast_expression "(uint *)(PTR_DAT_00036388 + 0x6244)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x6244)" ( (binary_expression "PTR_DAT_00036388 + 0x6244" identifier + number_literal) )))) ;) (do_statement "do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);" do (compound_statement "{\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    }" { (expression_statement "iVar12 = 1 << (*puVar16 & 0x1f);" (assignment_expression "iVar12 = 1 << (*puVar16 & 0x1f)" identifier = (binary_expression "1 << (*puVar16 & 0x1f)" number_literal << (parenthesized_expression "(*puVar16 & 0x1f)" ( (binary_expression "*puVar16 & 0x1f" (pointer_expression "*puVar16" * identifier) & number_literal) )))) ;) (expression_statement "*piVar17 = iVar13;" (assignment_expression "*piVar17 = iVar13" (pointer_expression "*piVar17" * identifier) = identifier) ;) (if_statement "if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }" if (parenthesized_expression "(0 < iVar12)" ( (binary_expression "0 < iVar12" number_literal < identifier) )) (compound_statement "{\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }" { (expression_statement "puVar6 = puVar4 + iVar13 + -0x7f94;" (assignment_expression "puVar6 = puVar4 + iVar13 + -0x7f94" identifier = (binary_expression "puVar4 + iVar13 + -0x7f94" (binary_expression "puVar4 + iVar13" identifier + identifier) + number_literal)) ;) (expression_statement "puVar9 = puVar6 + iVar12;" (assignment_expression "puVar9 = puVar6 + iVar12" identifier = (binary_expression "puVar6 + iVar12" identifier + identifier)) ;) (do_statement "do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);" do (compound_statement "{\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        }" { (expression_statement "*puVar6 = (char)iVar14;" (assignment_expression "*puVar6 = (char)iVar14" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)iVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != puVar9)" ( (binary_expression "puVar6 != puVar9" identifier != identifier) )) ;) (expression_statement "iVar13 = iVar13 + iVar12;" (assignment_expression "iVar13 = iVar13 + iVar12" identifier = (binary_expression "iVar13 + iVar12" identifier + identifier)) ;) })) (expression_statement "puVar7 = PTR_DAT_00036388;" (assignment_expression "puVar7 = PTR_DAT_00036388" identifier = identifier) ;) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "piVar17 = piVar17 + 1;" (assignment_expression "piVar17 = piVar17 + 1" identifier = (binary_expression "piVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar14 != 0x1c)" ( (binary_expression "iVar14 != 0x1c" identifier != number_literal) )) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "puVar4[iVar13 + -0x7f95] = 0x1c;" (assignment_expression "puVar4[iVar13 + -0x7f95] = 0x1c" (subscript_expression "puVar4[iVar13 + -0x7f95]" identifier [ (binary_expression "iVar13 + -0x7f95" identifier + number_literal) ]) = number_literal) ;) (expression_statement "piVar17 = (int *)(puVar7 + 0x7d80);" (assignment_expression "piVar17 = (int *)(puVar7 + 0x7d80)" identifier = (cast_expression "(int *)(puVar7 + 0x7d80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x7d80)" ( (binary_expression "puVar7 + 0x7d80" identifier + number_literal) )))) ;) (expression_statement "puVar16 = (uint *)(puVar7 + 0x61cc);" (assignment_expression "puVar16 = (uint *)(puVar7 + 0x61cc)" identifier = (cast_expression "(uint *)(puVar7 + 0x61cc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x61cc)" ( (binary_expression "puVar7 + 0x61cc" identifier + number_literal) )))) ;) (do_statement "do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);" do (compound_statement "{\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    }" { (expression_statement "iVar13 = 1 << (*puVar16 & 0x1f);" (assignment_expression "iVar13 = 1 << (*puVar16 & 0x1f)" identifier = (binary_expression "1 << (*puVar16 & 0x1f)" number_literal << (parenthesized_expression "(*puVar16 & 0x1f)" ( (binary_expression "*puVar16 & 0x1f" (pointer_expression "*puVar16" * identifier) & number_literal) )))) ;) (expression_statement "*piVar17 = iVar12;" (assignment_expression "*piVar17 = iVar12" (pointer_expression "*piVar17" * identifier) = identifier) ;) (if_statement "if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }" if (parenthesized_expression "(0 < iVar13)" ( (binary_expression "0 < iVar13" number_literal < identifier) )) (compound_statement "{\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }" { (expression_statement "puVar6 = puVar7 + iVar12 + 0x7e6c;" (assignment_expression "puVar6 = puVar7 + iVar12 + 0x7e6c" identifier = (binary_expression "puVar7 + iVar12 + 0x7e6c" (binary_expression "puVar7 + iVar12" identifier + identifier) + number_literal)) ;) (expression_statement "puVar9 = puVar6 + iVar13;" (assignment_expression "puVar9 = puVar6 + iVar13" identifier = (binary_expression "puVar6 + iVar13" identifier + identifier)) ;) (do_statement "do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);" do (compound_statement "{\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        }" { (expression_statement "*puVar6 = (char)iVar14;" (assignment_expression "*puVar6 = (char)iVar14" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)iVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != puVar9)" ( (binary_expression "puVar6 != puVar9" identifier != identifier) )) ;) (expression_statement "iVar12 = iVar12 + iVar13;" (assignment_expression "iVar12 = iVar12 + iVar13" identifier = (binary_expression "iVar12 + iVar13" identifier + identifier)) ;) })) (expression_statement "puVar4 = PTR_DAT_00036388;" (assignment_expression "puVar4 = PTR_DAT_00036388" identifier = identifier) ;) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "piVar17 = piVar17 + 1;" (assignment_expression "piVar17 = piVar17 + 1" identifier = (binary_expression "piVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar14 != 0x10)" ( (binary_expression "iVar14 != 0x10" identifier != number_literal) )) ;) (expression_statement "iVar12 = iVar12 >> 7;" (assignment_expression "iVar12 = iVar12 >> 7" identifier = (binary_expression "iVar12 >> 7" identifier >> number_literal)) ;) (expression_statement "piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);" (assignment_expression "piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0)" identifier = (cast_expression "(int *)(PTR_DAT_00036388 + 0x7dc0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x7dc0)" ( (binary_expression "PTR_DAT_00036388 + 0x7dc0" identifier + number_literal) )))) ;) (expression_statement "piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);" (assignment_expression "piVar17 = (int *)(PTR_DAT_00036388 + 0x620c)" identifier = (cast_expression "(int *)(PTR_DAT_00036388 + 0x620c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x620c)" ( (binary_expression "PTR_DAT_00036388 + 0x620c" identifier + number_literal) )))) ;) (expression_statement "iVar13 = 0x10;" (assignment_expression "iVar13 = 0x10" identifier = number_literal) ;) (do_statement "do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);" do (compound_statement "{\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    }" { (expression_statement "iVar14 = 1 << (*piVar17 - 7U & 0x1f);" (assignment_expression "iVar14 = 1 << (*piVar17 - 7U & 0x1f)" identifier = (binary_expression "1 << (*piVar17 - 7U & 0x1f)" number_literal << (parenthesized_expression "(*piVar17 - 7U & 0x1f)" ( (binary_expression "*piVar17 - 7U & 0x1f" (binary_expression "*piVar17 - 7U" (pointer_expression "*piVar17" * identifier) - number_literal) & number_literal) )))) ;) (expression_statement "*piVar18 = iVar12 << 7;" (assignment_expression "*piVar18 = iVar12 << 7" (pointer_expression "*piVar18" * identifier) = (binary_expression "iVar12 << 7" identifier << number_literal)) ;) (if_statement "if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }" if (parenthesized_expression "(0 < iVar14)" ( (binary_expression "0 < iVar14" number_literal < identifier) )) (compound_statement "{\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }" { (expression_statement "puVar7 = puVar4 + iVar12 + 0x7e6c;" (assignment_expression "puVar7 = puVar4 + iVar12 + 0x7e6c" identifier = (binary_expression "puVar4 + iVar12 + 0x7e6c" (binary_expression "puVar4 + iVar12" identifier + identifier) + number_literal)) ;) (expression_statement "puVar10 = puVar7 + iVar14;" (assignment_expression "puVar10 = puVar7 + iVar14" identifier = (binary_expression "puVar7 + iVar14" identifier + identifier)) ;) (do_statement "do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);" do (compound_statement "{\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        }" { (expression_statement "puVar7[0x100] = (char)iVar13;" (assignment_expression "puVar7[0x100] = (char)iVar13" (subscript_expression "puVar7[0x100]" identifier [ number_literal ]) = (cast_expression "(char)iVar13" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar7 != puVar10)" ( (binary_expression "puVar7 != puVar10" identifier != identifier) )) ;) (expression_statement "iVar12 = iVar12 + iVar14;" (assignment_expression "iVar12 = iVar12 + iVar14" identifier = (binary_expression "iVar12 + iVar14" identifier + identifier)) ;) })) (expression_statement "puVar7 = PTR_DAT_000364c4;" (assignment_expression "puVar7 = PTR_DAT_000364c4" identifier = identifier) ;) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "piVar18 = piVar18 + 1;" (assignment_expression "piVar18 = piVar18 + 1" identifier = (binary_expression "piVar18 + 1" identifier + number_literal)) ;) (expression_statement "piVar17 = piVar17 + 1;" (assignment_expression "piVar17 = piVar17 + 1" identifier = (binary_expression "piVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 != 0x1e)" ( (binary_expression "iVar13 != 0x1e" identifier != number_literal) )) ;) (expression_statement "puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);" (assignment_expression "puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000364c4 + -0x7358)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000364c4 + -0x7358)" ( (binary_expression "PTR_DAT_000364c4 + -0x7358" identifier + number_literal) )))) ;) (expression_statement "puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);" (assignment_expression "puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000364c4 + -0x7338)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000364c4 + -0x7338)" ( (binary_expression "PTR_DAT_000364c4 + -0x7338" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);" do (compound_statement "{\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    }" { (expression_statement "*puVar15 = 0;" (assignment_expression "*puVar15 = 0" (pointer_expression "*puVar15" * identifier) = number_literal) ;) (expression_statement "puVar4 = PTR_DAT_000364c4;" (assignment_expression "puVar4 = PTR_DAT_000364c4" identifier = identifier) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar15 != puVar11)" ( (binary_expression "puVar15 != puVar11" identifier != identifier) )) ;) (expression_statement "sVar1 = *(short *)(puVar7 + -0x7348);" (assignment_expression "sVar1 = *(short *)(puVar7 + -0x7348)" identifier = (pointer_expression "*(short *)(puVar7 + -0x7348)" * (cast_expression "(short *)(puVar7 + -0x7348)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x7348)" ( (binary_expression "puVar7 + -0x7348" identifier + number_literal) ))))) ;) (expression_statement "puVar10 = PTR_DAT_000364c4 + -0x7224;" (assignment_expression "puVar10 = PTR_DAT_000364c4 + -0x7224" identifier = (binary_expression "PTR_DAT_000364c4 + -0x7224" identifier + number_literal)) ;) (expression_statement "puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);" (assignment_expression "puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000364c4 + -0x7222)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000364c4 + -0x7222)" ( (binary_expression "PTR_DAT_000364c4 + -0x7222" identifier + number_literal) )))) ;) (expression_statement "puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);" (assignment_expression "puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000364c4 + -0x6fe2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000364c4 + -0x6fe2)" ( (binary_expression "PTR_DAT_000364c4 + -0x6fe2" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);" do (compound_statement "{\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    }" { (expression_statement "*puVar15 = 8;" (assignment_expression "*puVar15 = 8" (pointer_expression "*puVar15" * identifier) = number_literal) ;) (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" identifier = (binary_expression "puVar15 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar15 != puVar11)" ( (binary_expression "puVar15 != puVar11" identifier != identifier) )) ;) (expression_statement "sVar2 = *(short *)(puVar7 + -0x7346);" (assignment_expression "sVar2 = *(short *)(puVar7 + -0x7346)" identifier = (pointer_expression "*(short *)(puVar7 + -0x7346)" * (cast_expression "(short *)(puVar7 + -0x7346)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x7346)" ( (binary_expression "puVar7 + -0x7346" identifier + number_literal) ))))) ;) (expression_statement "puVar11 = (undefined2 *)(puVar4 + -0x6e22);" (assignment_expression "puVar11 = (undefined2 *)(puVar4 + -0x6e22)" identifier = (cast_expression "(undefined2 *)(puVar4 + -0x6e22)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6e22)" ( (binary_expression "puVar4 + -0x6e22" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);" do (compound_statement "{\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    }" { (expression_statement "*puVar15 = 9;" (assignment_expression "*puVar15 = 9" (pointer_expression "*puVar15" * identifier) = number_literal) ;) (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" identifier = (binary_expression "puVar15 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar11 != puVar15)" ( (binary_expression "puVar11 != puVar15" identifier != identifier) )) ;) (expression_statement "sVar3 = *(short *)(puVar7 + -0x734a);" (assignment_expression "sVar3 = *(short *)(puVar7 + -0x734a)" identifier = (pointer_expression "*(short *)(puVar7 + -0x734a)" * (cast_expression "(short *)(puVar7 + -0x734a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x734a)" ( (binary_expression "puVar7 + -0x734a" identifier + number_literal) ))))) ;) (expression_statement "*(short *)(puVar7 + -0x7346) = sVar2 + 0x70;" (assignment_expression "*(short *)(puVar7 + -0x7346) = sVar2 + 0x70" (pointer_expression "*(short *)(puVar7 + -0x7346)" * (cast_expression "(short *)(puVar7 + -0x7346)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x7346)" ( (binary_expression "puVar7 + -0x7346" identifier + number_literal) )))) = (binary_expression "sVar2 + 0x70" identifier + number_literal)) ;) (do_statement "do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);" do (compound_statement "{\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    }" { (expression_statement "*puVar11 = 7;" (assignment_expression "*puVar11 = 7" (pointer_expression "*puVar11" * identifier) = number_literal) ;) (expression_statement "puVar11 = puVar11 + 2;" (assignment_expression "puVar11 = puVar11 + 2" identifier = (binary_expression "puVar11 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "((undefined2 *)(puVar4 + -0x6dc2) != puVar11)" ( (binary_expression "(undefined2 *)(puVar4 + -0x6dc2) != puVar11" (cast_expression "(undefined2 *)(puVar4 + -0x6dc2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6dc2)" ( (binary_expression "puVar4 + -0x6dc2" identifier + number_literal) ))) != identifier) )) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6dc2) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6dc2) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6dc2)" * (cast_expression "(undefined2 *)(puVar4 + -0x6dc2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6dc2)" ( (binary_expression "puVar4 + -0x6dc2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(short *)(puVar7 + -0x734a) = sVar3 + 0x18;" (assignment_expression "*(short *)(puVar7 + -0x734a) = sVar3 + 0x18" (pointer_expression "*(short *)(puVar7 + -0x734a)" * (cast_expression "(short *)(puVar7 + -0x734a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x734a)" ( (binary_expression "puVar7 + -0x734a" identifier + number_literal) )))) = (binary_expression "sVar3 + 0x18" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6dbe) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6dbe) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6dbe)" * (cast_expression "(undefined2 *)(puVar4 + -0x6dbe)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6dbe)" ( (binary_expression "puVar4 + -0x6dbe" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6dba) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6dba) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6dba)" * (cast_expression "(undefined2 *)(puVar4 + -0x6dba)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6dba)" ( (binary_expression "puVar4 + -0x6dba" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6db6) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6db6) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6db6)" * (cast_expression "(undefined2 *)(puVar4 + -0x6db6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6db6)" ( (binary_expression "puVar4 + -0x6db6" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6db2) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6db2) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6db2)" * (cast_expression "(undefined2 *)(puVar4 + -0x6db2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6db2)" ( (binary_expression "puVar4 + -0x6db2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6dae) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6dae) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6dae)" * (cast_expression "(undefined2 *)(puVar4 + -0x6dae)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6dae)" ( (binary_expression "puVar4 + -0x6dae" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6daa) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6daa) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6daa)" * (cast_expression "(undefined2 *)(puVar4 + -0x6daa)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6daa)" ( (binary_expression "puVar4 + -0x6daa" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6da6) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6da6) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6da6)" * (cast_expression "(undefined2 *)(puVar4 + -0x6da6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6da6)" ( (binary_expression "puVar4 + -0x6da6" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(short *)(puVar7 + -0x7348) = sVar1 + 0x98;" (assignment_expression "*(short *)(puVar7 + -0x7348) = sVar1 + 0x98" (pointer_expression "*(short *)(puVar7 + -0x7348)" * (cast_expression "(short *)(puVar7 + -0x7348)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x7348)" ( (binary_expression "puVar7 + -0x7348" identifier + number_literal) )))) = (binary_expression "sVar1 + 0x98" identifier + number_literal)) ;) (expression_statement "FUN_0001a368(puVar10,0x11f);" (call_expression "FUN_0001a368(puVar10,0x11f)" identifier (argument_list "(puVar10,0x11f)" ( identifier , number_literal ))) ;) (expression_statement "puVar15 = (undefined2 *)(puVar5 + -0x729c);" (assignment_expression "puVar15 = (undefined2 *)(puVar5 + -0x729c)" identifier = (cast_expression "(undefined2 *)(puVar5 + -0x729c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x729c)" ( (binary_expression "puVar5 + -0x729c" identifier + number_literal) )))) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);" do (compound_statement "{\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    }" { (expression_statement "puVar15[1] = 5;" (assignment_expression "puVar15[1] = 5" (subscript_expression "puVar15[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar14 = iVar13 + 1;" (assignment_expression "iVar14 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = bi_reverse(iVar13,5);" (assignment_expression "uVar8 = bi_reverse(iVar13,5)" identifier = (call_expression "bi_reverse(iVar13,5)" identifier (argument_list "(iVar13,5)" ( identifier , number_literal )))) ;) (expression_statement "*puVar15 = uVar8;" (assignment_expression "*puVar15 = uVar8" (pointer_expression "*puVar15" * identifier) = identifier) ;) (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" identifier = (binary_expression "puVar15 + 2" identifier + number_literal)) ;) (expression_statement "iVar13 = iVar14;" (assignment_expression "iVar13 = iVar14" identifier = identifier) ;) }) while (parenthesized_expression "(iVar14 != 0x1e)" ( (binary_expression "iVar14 != 0x1e" identifier != number_literal) )) ;) (expression_statement "FUN_0001a030();" (call_expression "FUN_0001a030()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "void ct_init(ush *attr,int *methodp)\n\n{\n  short sVar1;\n  short sVar2;\n  short sVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined1 *puVar6;\n  undefined *puVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  undefined2 *puVar11;\n  int iVar12;\n  int iVar13;\n  ct_data *tree;\n  int iVar14;\n  undefined2 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  int *piVar18;\n  uint uVar19;\n  \n  puVar4 = PTR_DAT_00036388;\n  *(ush **)(PTR_DAT_00036388 + 0x6d50) = attr;\n  puVar5 = PTR_DAT_000364c4;\n  *(undefined4 *)(puVar4 + 0x6d5c) = 0;\n  *(undefined4 *)(puVar4 + 0x6d58) = 0;\n  puVar4 = PTR_DAT_00036388;\n  sVar1 = *(short *)(puVar5 + -0x729a);\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;\n  *(undefined4 *)(puVar4 + 28000) = 0;\n  puVar4 = PTR_DAT_000364c4;\n  if (sVar1 == 0) {\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    tree = (ct_data *)(PTR_DAT_000364c4 + -0x7224);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    gen_codes(tree,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    uVar8 = 0;\n    do {\n      puVar15[1] = 5;\n      uVar19 = uVar8 + 1;\n      uVar8 = bi_reverse(uVar8,5);\n      *puVar15 = (short)uVar8;\n      puVar15 = puVar15 + 2;\n      uVar8 = uVar19;\n    } while (uVar19 != 0x1e);\n    init_block();\n    return;\n  }\n  return;\n}\n\n" (function_definition "void ct_init(ush *attr,int *methodp)\n\n{\n  short sVar1;\n  short sVar2;\n  short sVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined1 *puVar6;\n  undefined *puVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  undefined2 *puVar11;\n  int iVar12;\n  int iVar13;\n  ct_data *tree;\n  int iVar14;\n  undefined2 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  int *piVar18;\n  uint uVar19;\n  \n  puVar4 = PTR_DAT_00036388;\n  *(ush **)(PTR_DAT_00036388 + 0x6d50) = attr;\n  puVar5 = PTR_DAT_000364c4;\n  *(undefined4 *)(puVar4 + 0x6d5c) = 0;\n  *(undefined4 *)(puVar4 + 0x6d58) = 0;\n  puVar4 = PTR_DAT_00036388;\n  sVar1 = *(short *)(puVar5 + -0x729a);\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;\n  *(undefined4 *)(puVar4 + 28000) = 0;\n  puVar4 = PTR_DAT_000364c4;\n  if (sVar1 == 0) {\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    tree = (ct_data *)(PTR_DAT_000364c4 + -0x7224);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    gen_codes(tree,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    uVar8 = 0;\n    do {\n      puVar15[1] = 5;\n      uVar19 = uVar8 + 1;\n      uVar8 = bi_reverse(uVar8,5);\n      *puVar15 = (short)uVar8;\n      puVar15 = puVar15 + 2;\n      uVar8 = uVar19;\n    } while (uVar19 != 0x1e);\n    init_block();\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "ct_init(ush *attr,int *methodp)" identifier (parameter_list "(ush *attr,int *methodp)" ( (parameter_declaration "ush *attr" type_identifier (pointer_declarator "*attr" * identifier)) , (parameter_declaration "int *methodp" primitive_type (pointer_declarator "*methodp" * identifier)) ))) (compound_statement "{\n  short sVar1;\n  short sVar2;\n  short sVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined1 *puVar6;\n  undefined *puVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  undefined2 *puVar11;\n  int iVar12;\n  int iVar13;\n  ct_data *tree;\n  int iVar14;\n  undefined2 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  int *piVar18;\n  uint uVar19;\n  \n  puVar4 = PTR_DAT_00036388;\n  *(ush **)(PTR_DAT_00036388 + 0x6d50) = attr;\n  puVar5 = PTR_DAT_000364c4;\n  *(undefined4 *)(puVar4 + 0x6d5c) = 0;\n  *(undefined4 *)(puVar4 + 0x6d58) = 0;\n  puVar4 = PTR_DAT_00036388;\n  sVar1 = *(short *)(puVar5 + -0x729a);\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;\n  *(undefined4 *)(puVar4 + 28000) = 0;\n  puVar4 = PTR_DAT_000364c4;\n  if (sVar1 == 0) {\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    tree = (ct_data *)(PTR_DAT_000364c4 + -0x7224);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    gen_codes(tree,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    uVar8 = 0;\n    do {\n      puVar15[1] = 5;\n      uVar19 = uVar8 + 1;\n      uVar8 = bi_reverse(uVar8,5);\n      *puVar15 = (short)uVar8;\n      puVar15 = puVar15 + 2;\n      uVar8 = uVar19;\n    } while (uVar19 != 0x1e);\n    init_block();\n    return;\n  }\n  return;\n}" { (declaration "short sVar1;" (sized_type_specifier "short" short) identifier ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "short sVar3;" (sized_type_specifier "short" short) identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined2 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "ct_data *tree;" type_identifier (pointer_declarator "*tree" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined2 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "uint uVar19;" type_identifier identifier ;) (expression_statement "puVar4 = PTR_DAT_00036388;" (assignment_expression "puVar4 = PTR_DAT_00036388" identifier = identifier) ;) (expression_statement "*(ush **)(PTR_DAT_00036388 + 0x6d50) = attr;" (assignment_expression "*(ush **)(PTR_DAT_00036388 + 0x6d50) = attr" (pointer_expression "*(ush **)(PTR_DAT_00036388 + 0x6d50)" * (cast_expression "(ush **)(PTR_DAT_00036388 + 0x6d50)" ( (type_descriptor "ush **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x6d50)" ( (binary_expression "PTR_DAT_00036388 + 0x6d50" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar5 = PTR_DAT_000364c4;" (assignment_expression "puVar5 = PTR_DAT_000364c4" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + 0x6d5c) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 0x6d5c) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 0x6d5c)" * (cast_expression "(undefined4 *)(puVar4 + 0x6d5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x6d5c)" ( (binary_expression "puVar4 + 0x6d5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + 0x6d58) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 0x6d58) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 0x6d58)" * (cast_expression "(undefined4 *)(puVar4 + 0x6d58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x6d58)" ( (binary_expression "puVar4 + 0x6d58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = PTR_DAT_00036388;" (assignment_expression "puVar4 = PTR_DAT_00036388" identifier = identifier) ;) (expression_statement "sVar1 = *(short *)(puVar5 + -0x729a);" (assignment_expression "sVar1 = *(short *)(puVar5 + -0x729a)" identifier = (pointer_expression "*(short *)(puVar5 + -0x729a)" * (cast_expression "(short *)(puVar5 + -0x729a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x729a)" ( (binary_expression "puVar5 + -0x729a" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;" (assignment_expression "*(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0" (pointer_expression "*(undefined4 *)(PTR_DAT_00036388 + 0x6d64)" * (cast_expression "(undefined4 *)(PTR_DAT_00036388 + 0x6d64)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x6d64)" ( (binary_expression "PTR_DAT_00036388 + 0x6d64" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + 28000) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 28000) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 28000)" * (cast_expression "(undefined4 *)(puVar4 + 28000)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 28000)" ( (binary_expression "puVar4 + 28000" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = PTR_DAT_000364c4;" (assignment_expression "puVar4 = PTR_DAT_000364c4" identifier = identifier) ;) (if_statement "if (sVar1 == 0) {\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    tree = (ct_data *)(PTR_DAT_000364c4 + -0x7224);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    gen_codes(tree,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    uVar8 = 0;\n    do {\n      puVar15[1] = 5;\n      uVar19 = uVar8 + 1;\n      uVar8 = bi_reverse(uVar8,5);\n      *puVar15 = (short)uVar8;\n      puVar15 = puVar15 + 2;\n      uVar8 = uVar19;\n    } while (uVar19 != 0x1e);\n    init_block();\n    return;\n  }" if (parenthesized_expression "(sVar1 == 0)" ( (binary_expression "sVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    tree = (ct_data *)(PTR_DAT_000364c4 + -0x7224);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    gen_codes(tree,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    uVar8 = 0;\n    do {\n      puVar15[1] = 5;\n      uVar19 = uVar8 + 1;\n      uVar8 = bi_reverse(uVar8,5);\n      *puVar15 = (short)uVar8;\n      puVar15 = puVar15 + 2;\n      uVar8 = uVar19;\n    } while (uVar19 != 0x1e);\n    init_block();\n    return;\n  }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);" (assignment_expression "piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8)" identifier = (cast_expression "(int *)(PTR_DAT_00036388 + 0x7df8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x7df8)" ( (binary_expression "PTR_DAT_00036388 + 0x7df8" identifier + number_literal) )))) ;) (expression_statement "puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);" (assignment_expression "puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244)" identifier = (cast_expression "(uint *)(PTR_DAT_00036388 + 0x6244)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x6244)" ( (binary_expression "PTR_DAT_00036388 + 0x6244" identifier + number_literal) )))) ;) (do_statement "do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);" do (compound_statement "{\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    }" { (expression_statement "iVar12 = 1 << (*puVar16 & 0x1f);" (assignment_expression "iVar12 = 1 << (*puVar16 & 0x1f)" identifier = (binary_expression "1 << (*puVar16 & 0x1f)" number_literal << (parenthesized_expression "(*puVar16 & 0x1f)" ( (binary_expression "*puVar16 & 0x1f" (pointer_expression "*puVar16" * identifier) & number_literal) )))) ;) (expression_statement "*piVar17 = iVar13;" (assignment_expression "*piVar17 = iVar13" (pointer_expression "*piVar17" * identifier) = identifier) ;) (if_statement "if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }" if (parenthesized_expression "(0 < iVar12)" ( (binary_expression "0 < iVar12" number_literal < identifier) )) (compound_statement "{\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }" { (expression_statement "puVar6 = puVar4 + iVar13 + -0x7f94;" (assignment_expression "puVar6 = puVar4 + iVar13 + -0x7f94" identifier = (binary_expression "puVar4 + iVar13 + -0x7f94" (binary_expression "puVar4 + iVar13" identifier + identifier) + number_literal)) ;) (expression_statement "puVar9 = puVar6 + iVar12;" (assignment_expression "puVar9 = puVar6 + iVar12" identifier = (binary_expression "puVar6 + iVar12" identifier + identifier)) ;) (do_statement "do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);" do (compound_statement "{\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        }" { (expression_statement "*puVar6 = (char)iVar14;" (assignment_expression "*puVar6 = (char)iVar14" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)iVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != puVar9)" ( (binary_expression "puVar6 != puVar9" identifier != identifier) )) ;) (expression_statement "iVar13 = iVar13 + iVar12;" (assignment_expression "iVar13 = iVar13 + iVar12" identifier = (binary_expression "iVar13 + iVar12" identifier + identifier)) ;) })) (expression_statement "puVar7 = PTR_DAT_00036388;" (assignment_expression "puVar7 = PTR_DAT_00036388" identifier = identifier) ;) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "piVar17 = piVar17 + 1;" (assignment_expression "piVar17 = piVar17 + 1" identifier = (binary_expression "piVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar14 != 0x1c)" ( (binary_expression "iVar14 != 0x1c" identifier != number_literal) )) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "puVar4[iVar13 + -0x7f95] = 0x1c;" (assignment_expression "puVar4[iVar13 + -0x7f95] = 0x1c" (subscript_expression "puVar4[iVar13 + -0x7f95]" identifier [ (binary_expression "iVar13 + -0x7f95" identifier + number_literal) ]) = number_literal) ;) (expression_statement "piVar17 = (int *)(puVar7 + 0x7d80);" (assignment_expression "piVar17 = (int *)(puVar7 + 0x7d80)" identifier = (cast_expression "(int *)(puVar7 + 0x7d80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x7d80)" ( (binary_expression "puVar7 + 0x7d80" identifier + number_literal) )))) ;) (expression_statement "puVar16 = (uint *)(puVar7 + 0x61cc);" (assignment_expression "puVar16 = (uint *)(puVar7 + 0x61cc)" identifier = (cast_expression "(uint *)(puVar7 + 0x61cc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x61cc)" ( (binary_expression "puVar7 + 0x61cc" identifier + number_literal) )))) ;) (do_statement "do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);" do (compound_statement "{\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    }" { (expression_statement "iVar13 = 1 << (*puVar16 & 0x1f);" (assignment_expression "iVar13 = 1 << (*puVar16 & 0x1f)" identifier = (binary_expression "1 << (*puVar16 & 0x1f)" number_literal << (parenthesized_expression "(*puVar16 & 0x1f)" ( (binary_expression "*puVar16 & 0x1f" (pointer_expression "*puVar16" * identifier) & number_literal) )))) ;) (expression_statement "*piVar17 = iVar12;" (assignment_expression "*piVar17 = iVar12" (pointer_expression "*piVar17" * identifier) = identifier) ;) (if_statement "if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }" if (parenthesized_expression "(0 < iVar13)" ( (binary_expression "0 < iVar13" number_literal < identifier) )) (compound_statement "{\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }" { (expression_statement "puVar6 = puVar7 + iVar12 + 0x7e6c;" (assignment_expression "puVar6 = puVar7 + iVar12 + 0x7e6c" identifier = (binary_expression "puVar7 + iVar12 + 0x7e6c" (binary_expression "puVar7 + iVar12" identifier + identifier) + number_literal)) ;) (expression_statement "puVar9 = puVar6 + iVar13;" (assignment_expression "puVar9 = puVar6 + iVar13" identifier = (binary_expression "puVar6 + iVar13" identifier + identifier)) ;) (do_statement "do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);" do (compound_statement "{\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        }" { (expression_statement "*puVar6 = (char)iVar14;" (assignment_expression "*puVar6 = (char)iVar14" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)iVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != puVar9)" ( (binary_expression "puVar6 != puVar9" identifier != identifier) )) ;) (expression_statement "iVar12 = iVar12 + iVar13;" (assignment_expression "iVar12 = iVar12 + iVar13" identifier = (binary_expression "iVar12 + iVar13" identifier + identifier)) ;) })) (expression_statement "puVar4 = PTR_DAT_00036388;" (assignment_expression "puVar4 = PTR_DAT_00036388" identifier = identifier) ;) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "piVar17 = piVar17 + 1;" (assignment_expression "piVar17 = piVar17 + 1" identifier = (binary_expression "piVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar14 != 0x10)" ( (binary_expression "iVar14 != 0x10" identifier != number_literal) )) ;) (expression_statement "iVar12 = iVar12 >> 7;" (assignment_expression "iVar12 = iVar12 >> 7" identifier = (binary_expression "iVar12 >> 7" identifier >> number_literal)) ;) (expression_statement "piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);" (assignment_expression "piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0)" identifier = (cast_expression "(int *)(PTR_DAT_00036388 + 0x7dc0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x7dc0)" ( (binary_expression "PTR_DAT_00036388 + 0x7dc0" identifier + number_literal) )))) ;) (expression_statement "piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);" (assignment_expression "piVar17 = (int *)(PTR_DAT_00036388 + 0x620c)" identifier = (cast_expression "(int *)(PTR_DAT_00036388 + 0x620c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x620c)" ( (binary_expression "PTR_DAT_00036388 + 0x620c" identifier + number_literal) )))) ;) (expression_statement "iVar13 = 0x10;" (assignment_expression "iVar13 = 0x10" identifier = number_literal) ;) (do_statement "do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);" do (compound_statement "{\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    }" { (expression_statement "iVar14 = 1 << (*piVar17 - 7U & 0x1f);" (assignment_expression "iVar14 = 1 << (*piVar17 - 7U & 0x1f)" identifier = (binary_expression "1 << (*piVar17 - 7U & 0x1f)" number_literal << (parenthesized_expression "(*piVar17 - 7U & 0x1f)" ( (binary_expression "*piVar17 - 7U & 0x1f" (binary_expression "*piVar17 - 7U" (pointer_expression "*piVar17" * identifier) - number_literal) & number_literal) )))) ;) (expression_statement "*piVar18 = iVar12 << 7;" (assignment_expression "*piVar18 = iVar12 << 7" (pointer_expression "*piVar18" * identifier) = (binary_expression "iVar12 << 7" identifier << number_literal)) ;) (if_statement "if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }" if (parenthesized_expression "(0 < iVar14)" ( (binary_expression "0 < iVar14" number_literal < identifier) )) (compound_statement "{\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }" { (expression_statement "puVar7 = puVar4 + iVar12 + 0x7e6c;" (assignment_expression "puVar7 = puVar4 + iVar12 + 0x7e6c" identifier = (binary_expression "puVar4 + iVar12 + 0x7e6c" (binary_expression "puVar4 + iVar12" identifier + identifier) + number_literal)) ;) (expression_statement "puVar10 = puVar7 + iVar14;" (assignment_expression "puVar10 = puVar7 + iVar14" identifier = (binary_expression "puVar7 + iVar14" identifier + identifier)) ;) (do_statement "do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);" do (compound_statement "{\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        }" { (expression_statement "puVar7[0x100] = (char)iVar13;" (assignment_expression "puVar7[0x100] = (char)iVar13" (subscript_expression "puVar7[0x100]" identifier [ number_literal ]) = (cast_expression "(char)iVar13" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar7 != puVar10)" ( (binary_expression "puVar7 != puVar10" identifier != identifier) )) ;) (expression_statement "iVar12 = iVar12 + iVar14;" (assignment_expression "iVar12 = iVar12 + iVar14" identifier = (binary_expression "iVar12 + iVar14" identifier + identifier)) ;) })) (expression_statement "puVar7 = PTR_DAT_000364c4;" (assignment_expression "puVar7 = PTR_DAT_000364c4" identifier = identifier) ;) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "piVar18 = piVar18 + 1;" (assignment_expression "piVar18 = piVar18 + 1" identifier = (binary_expression "piVar18 + 1" identifier + number_literal)) ;) (expression_statement "piVar17 = piVar17 + 1;" (assignment_expression "piVar17 = piVar17 + 1" identifier = (binary_expression "piVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 != 0x1e)" ( (binary_expression "iVar13 != 0x1e" identifier != number_literal) )) ;) (expression_statement "puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);" (assignment_expression "puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000364c4 + -0x7358)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000364c4 + -0x7358)" ( (binary_expression "PTR_DAT_000364c4 + -0x7358" identifier + number_literal) )))) ;) (expression_statement "puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);" (assignment_expression "puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000364c4 + -0x7338)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000364c4 + -0x7338)" ( (binary_expression "PTR_DAT_000364c4 + -0x7338" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);" do (compound_statement "{\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    }" { (expression_statement "*puVar15 = 0;" (assignment_expression "*puVar15 = 0" (pointer_expression "*puVar15" * identifier) = number_literal) ;) (expression_statement "puVar4 = PTR_DAT_000364c4;" (assignment_expression "puVar4 = PTR_DAT_000364c4" identifier = identifier) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar15 != puVar11)" ( (binary_expression "puVar15 != puVar11" identifier != identifier) )) ;) (expression_statement "sVar1 = *(short *)(puVar7 + -0x7348);" (assignment_expression "sVar1 = *(short *)(puVar7 + -0x7348)" identifier = (pointer_expression "*(short *)(puVar7 + -0x7348)" * (cast_expression "(short *)(puVar7 + -0x7348)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x7348)" ( (binary_expression "puVar7 + -0x7348" identifier + number_literal) ))))) ;) (expression_statement "tree = (ct_data *)(PTR_DAT_000364c4 + -0x7224);" (assignment_expression "tree = (ct_data *)(PTR_DAT_000364c4 + -0x7224)" identifier = (cast_expression "(ct_data *)(PTR_DAT_000364c4 + -0x7224)" ( (type_descriptor "ct_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000364c4 + -0x7224)" ( (binary_expression "PTR_DAT_000364c4 + -0x7224" identifier + number_literal) )))) ;) (expression_statement "puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);" (assignment_expression "puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000364c4 + -0x7222)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000364c4 + -0x7222)" ( (binary_expression "PTR_DAT_000364c4 + -0x7222" identifier + number_literal) )))) ;) (expression_statement "puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);" (assignment_expression "puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000364c4 + -0x6fe2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000364c4 + -0x6fe2)" ( (binary_expression "PTR_DAT_000364c4 + -0x6fe2" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);" do (compound_statement "{\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    }" { (expression_statement "*puVar15 = 8;" (assignment_expression "*puVar15 = 8" (pointer_expression "*puVar15" * identifier) = number_literal) ;) (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" identifier = (binary_expression "puVar15 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar15 != puVar11)" ( (binary_expression "puVar15 != puVar11" identifier != identifier) )) ;) (expression_statement "sVar2 = *(short *)(puVar7 + -0x7346);" (assignment_expression "sVar2 = *(short *)(puVar7 + -0x7346)" identifier = (pointer_expression "*(short *)(puVar7 + -0x7346)" * (cast_expression "(short *)(puVar7 + -0x7346)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x7346)" ( (binary_expression "puVar7 + -0x7346" identifier + number_literal) ))))) ;) (expression_statement "puVar11 = (undefined2 *)(puVar4 + -0x6e22);" (assignment_expression "puVar11 = (undefined2 *)(puVar4 + -0x6e22)" identifier = (cast_expression "(undefined2 *)(puVar4 + -0x6e22)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6e22)" ( (binary_expression "puVar4 + -0x6e22" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);" do (compound_statement "{\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    }" { (expression_statement "*puVar15 = 9;" (assignment_expression "*puVar15 = 9" (pointer_expression "*puVar15" * identifier) = number_literal) ;) (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" identifier = (binary_expression "puVar15 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar11 != puVar15)" ( (binary_expression "puVar11 != puVar15" identifier != identifier) )) ;) (expression_statement "sVar3 = *(short *)(puVar7 + -0x734a);" (assignment_expression "sVar3 = *(short *)(puVar7 + -0x734a)" identifier = (pointer_expression "*(short *)(puVar7 + -0x734a)" * (cast_expression "(short *)(puVar7 + -0x734a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x734a)" ( (binary_expression "puVar7 + -0x734a" identifier + number_literal) ))))) ;) (expression_statement "*(short *)(puVar7 + -0x7346) = sVar2 + 0x70;" (assignment_expression "*(short *)(puVar7 + -0x7346) = sVar2 + 0x70" (pointer_expression "*(short *)(puVar7 + -0x7346)" * (cast_expression "(short *)(puVar7 + -0x7346)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x7346)" ( (binary_expression "puVar7 + -0x7346" identifier + number_literal) )))) = (binary_expression "sVar2 + 0x70" identifier + number_literal)) ;) (do_statement "do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);" do (compound_statement "{\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    }" { (expression_statement "*puVar11 = 7;" (assignment_expression "*puVar11 = 7" (pointer_expression "*puVar11" * identifier) = number_literal) ;) (expression_statement "puVar11 = puVar11 + 2;" (assignment_expression "puVar11 = puVar11 + 2" identifier = (binary_expression "puVar11 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "((undefined2 *)(puVar4 + -0x6dc2) != puVar11)" ( (binary_expression "(undefined2 *)(puVar4 + -0x6dc2) != puVar11" (cast_expression "(undefined2 *)(puVar4 + -0x6dc2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6dc2)" ( (binary_expression "puVar4 + -0x6dc2" identifier + number_literal) ))) != identifier) )) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6dc2) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6dc2) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6dc2)" * (cast_expression "(undefined2 *)(puVar4 + -0x6dc2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6dc2)" ( (binary_expression "puVar4 + -0x6dc2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(short *)(puVar7 + -0x734a) = sVar3 + 0x18;" (assignment_expression "*(short *)(puVar7 + -0x734a) = sVar3 + 0x18" (pointer_expression "*(short *)(puVar7 + -0x734a)" * (cast_expression "(short *)(puVar7 + -0x734a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x734a)" ( (binary_expression "puVar7 + -0x734a" identifier + number_literal) )))) = (binary_expression "sVar3 + 0x18" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6dbe) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6dbe) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6dbe)" * (cast_expression "(undefined2 *)(puVar4 + -0x6dbe)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6dbe)" ( (binary_expression "puVar4 + -0x6dbe" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6dba) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6dba) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6dba)" * (cast_expression "(undefined2 *)(puVar4 + -0x6dba)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6dba)" ( (binary_expression "puVar4 + -0x6dba" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6db6) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6db6) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6db6)" * (cast_expression "(undefined2 *)(puVar4 + -0x6db6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6db6)" ( (binary_expression "puVar4 + -0x6db6" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6db2) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6db2) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6db2)" * (cast_expression "(undefined2 *)(puVar4 + -0x6db2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6db2)" ( (binary_expression "puVar4 + -0x6db2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6dae) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6dae) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6dae)" * (cast_expression "(undefined2 *)(puVar4 + -0x6dae)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6dae)" ( (binary_expression "puVar4 + -0x6dae" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6daa) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6daa) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6daa)" * (cast_expression "(undefined2 *)(puVar4 + -0x6daa)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6daa)" ( (binary_expression "puVar4 + -0x6daa" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6da6) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6da6) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6da6)" * (cast_expression "(undefined2 *)(puVar4 + -0x6da6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6da6)" ( (binary_expression "puVar4 + -0x6da6" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(short *)(puVar7 + -0x7348) = sVar1 + 0x98;" (assignment_expression "*(short *)(puVar7 + -0x7348) = sVar1 + 0x98" (pointer_expression "*(short *)(puVar7 + -0x7348)" * (cast_expression "(short *)(puVar7 + -0x7348)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x7348)" ( (binary_expression "puVar7 + -0x7348" identifier + number_literal) )))) = (binary_expression "sVar1 + 0x98" identifier + number_literal)) ;) (expression_statement "gen_codes(tree,0x11f);" (call_expression "gen_codes(tree,0x11f)" identifier (argument_list "(tree,0x11f)" ( identifier , number_literal ))) ;) (expression_statement "puVar15 = (undefined2 *)(puVar5 + -0x729c);" (assignment_expression "puVar15 = (undefined2 *)(puVar5 + -0x729c)" identifier = (cast_expression "(undefined2 *)(puVar5 + -0x729c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x729c)" ( (binary_expression "puVar5 + -0x729c" identifier + number_literal) )))) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n      puVar15[1] = 5;\n      uVar19 = uVar8 + 1;\n      uVar8 = bi_reverse(uVar8,5);\n      *puVar15 = (short)uVar8;\n      puVar15 = puVar15 + 2;\n      uVar8 = uVar19;\n    } while (uVar19 != 0x1e);" do (compound_statement "{\n      puVar15[1] = 5;\n      uVar19 = uVar8 + 1;\n      uVar8 = bi_reverse(uVar8,5);\n      *puVar15 = (short)uVar8;\n      puVar15 = puVar15 + 2;\n      uVar8 = uVar19;\n    }" { (expression_statement "puVar15[1] = 5;" (assignment_expression "puVar15[1] = 5" (subscript_expression "puVar15[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar19 = uVar8 + 1;" (assignment_expression "uVar19 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = bi_reverse(uVar8,5);" (assignment_expression "uVar8 = bi_reverse(uVar8,5)" identifier = (call_expression "bi_reverse(uVar8,5)" identifier (argument_list "(uVar8,5)" ( identifier , number_literal )))) ;) (expression_statement "*puVar15 = (short)uVar8;" (assignment_expression "*puVar15 = (short)uVar8" (pointer_expression "*puVar15" * identifier) = (cast_expression "(short)uVar8" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" identifier = (binary_expression "puVar15 + 2" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar19;" (assignment_expression "uVar8 = uVar19" identifier = identifier) ;) }) while (parenthesized_expression "(uVar19 != 0x1e)" ( (binary_expression "uVar19 != 0x1e" identifier != number_literal) )) ;) (expression_statement "init_block();" (call_expression "init_block()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "void ct_init(undefined4 param_1)\n\n{\n  short sVar1;\n  short sVar2;\n  short sVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined1 *puVar6;\n  undefined *puVar7;\n  undefined2 uVar8;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  undefined2 *puVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  undefined2 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  int *piVar18;\n  \n  puVar4 = PTR_DAT_00036388;\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d50) = param_1;\n  puVar5 = PTR_DAT_000364c4;\n  *(undefined4 *)(puVar4 + 0x6d5c) = 0;\n  *(undefined4 *)(puVar4 + 0x6d58) = 0;\n  puVar4 = PTR_DAT_00036388;\n  sVar1 = *(short *)(puVar5 + -0x729a);\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;\n  *(undefined4 *)(puVar4 + 28000) = 0;\n  puVar4 = PTR_DAT_000364c4;\n  if (sVar1 == 0) {\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    puVar10 = PTR_DAT_000364c4 + -0x7224;\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    FUN_0001a368(puVar10,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    iVar13 = 0;\n    do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);\n    FUN_0001a030();\n    return;\n  }\n  return;\n}\n\n" (function_definition "void ct_init(undefined4 param_1)\n\n{\n  short sVar1;\n  short sVar2;\n  short sVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined1 *puVar6;\n  undefined *puVar7;\n  undefined2 uVar8;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  undefined2 *puVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  undefined2 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  int *piVar18;\n  \n  puVar4 = PTR_DAT_00036388;\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d50) = param_1;\n  puVar5 = PTR_DAT_000364c4;\n  *(undefined4 *)(puVar4 + 0x6d5c) = 0;\n  *(undefined4 *)(puVar4 + 0x6d58) = 0;\n  puVar4 = PTR_DAT_00036388;\n  sVar1 = *(short *)(puVar5 + -0x729a);\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;\n  *(undefined4 *)(puVar4 + 28000) = 0;\n  puVar4 = PTR_DAT_000364c4;\n  if (sVar1 == 0) {\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    puVar10 = PTR_DAT_000364c4 + -0x7224;\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    FUN_0001a368(puVar10,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    iVar13 = 0;\n    do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);\n    FUN_0001a030();\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "ct_init(undefined4 param_1)" identifier (parameter_list "(undefined4 param_1)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) ))) (compound_statement "{\n  short sVar1;\n  short sVar2;\n  short sVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined1 *puVar6;\n  undefined *puVar7;\n  undefined2 uVar8;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  undefined2 *puVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  undefined2 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  int *piVar18;\n  \n  puVar4 = PTR_DAT_00036388;\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d50) = param_1;\n  puVar5 = PTR_DAT_000364c4;\n  *(undefined4 *)(puVar4 + 0x6d5c) = 0;\n  *(undefined4 *)(puVar4 + 0x6d58) = 0;\n  puVar4 = PTR_DAT_00036388;\n  sVar1 = *(short *)(puVar5 + -0x729a);\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;\n  *(undefined4 *)(puVar4 + 28000) = 0;\n  puVar4 = PTR_DAT_000364c4;\n  if (sVar1 == 0) {\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    puVar10 = PTR_DAT_000364c4 + -0x7224;\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    FUN_0001a368(puVar10,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    iVar13 = 0;\n    do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);\n    FUN_0001a030();\n    return;\n  }\n  return;\n}" { (declaration "short sVar1;" (sized_type_specifier "short" short) identifier ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "short sVar3;" (sized_type_specifier "short" short) identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined2 uVar8;" type_identifier identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined2 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined2 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (expression_statement "puVar4 = PTR_DAT_00036388;" (assignment_expression "puVar4 = PTR_DAT_00036388" identifier = identifier) ;) (expression_statement "*(undefined4 *)(PTR_DAT_00036388 + 0x6d50) = param_1;" (assignment_expression "*(undefined4 *)(PTR_DAT_00036388 + 0x6d50) = param_1" (pointer_expression "*(undefined4 *)(PTR_DAT_00036388 + 0x6d50)" * (cast_expression "(undefined4 *)(PTR_DAT_00036388 + 0x6d50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x6d50)" ( (binary_expression "PTR_DAT_00036388 + 0x6d50" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar5 = PTR_DAT_000364c4;" (assignment_expression "puVar5 = PTR_DAT_000364c4" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + 0x6d5c) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 0x6d5c) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 0x6d5c)" * (cast_expression "(undefined4 *)(puVar4 + 0x6d5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x6d5c)" ( (binary_expression "puVar4 + 0x6d5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + 0x6d58) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 0x6d58) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 0x6d58)" * (cast_expression "(undefined4 *)(puVar4 + 0x6d58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x6d58)" ( (binary_expression "puVar4 + 0x6d58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = PTR_DAT_00036388;" (assignment_expression "puVar4 = PTR_DAT_00036388" identifier = identifier) ;) (expression_statement "sVar1 = *(short *)(puVar5 + -0x729a);" (assignment_expression "sVar1 = *(short *)(puVar5 + -0x729a)" identifier = (pointer_expression "*(short *)(puVar5 + -0x729a)" * (cast_expression "(short *)(puVar5 + -0x729a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x729a)" ( (binary_expression "puVar5 + -0x729a" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;" (assignment_expression "*(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0" (pointer_expression "*(undefined4 *)(PTR_DAT_00036388 + 0x6d64)" * (cast_expression "(undefined4 *)(PTR_DAT_00036388 + 0x6d64)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x6d64)" ( (binary_expression "PTR_DAT_00036388 + 0x6d64" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + 28000) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 28000) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 28000)" * (cast_expression "(undefined4 *)(puVar4 + 28000)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 28000)" ( (binary_expression "puVar4 + 28000" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = PTR_DAT_000364c4;" (assignment_expression "puVar4 = PTR_DAT_000364c4" identifier = identifier) ;) (if_statement "if (sVar1 == 0) {\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    puVar10 = PTR_DAT_000364c4 + -0x7224;\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    FUN_0001a368(puVar10,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    iVar13 = 0;\n    do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);\n    FUN_0001a030();\n    return;\n  }" if (parenthesized_expression "(sVar1 == 0)" ( (binary_expression "sVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    puVar10 = PTR_DAT_000364c4 + -0x7224;\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    FUN_0001a368(puVar10,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    iVar13 = 0;\n    do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);\n    FUN_0001a030();\n    return;\n  }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);" (assignment_expression "piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8)" identifier = (cast_expression "(int *)(PTR_DAT_00036388 + 0x7df8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x7df8)" ( (binary_expression "PTR_DAT_00036388 + 0x7df8" identifier + number_literal) )))) ;) (expression_statement "puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);" (assignment_expression "puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244)" identifier = (cast_expression "(uint *)(PTR_DAT_00036388 + 0x6244)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x6244)" ( (binary_expression "PTR_DAT_00036388 + 0x6244" identifier + number_literal) )))) ;) (do_statement "do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);" do (compound_statement "{\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    }" { (expression_statement "iVar12 = 1 << (*puVar16 & 0x1f);" (assignment_expression "iVar12 = 1 << (*puVar16 & 0x1f)" identifier = (binary_expression "1 << (*puVar16 & 0x1f)" number_literal << (parenthesized_expression "(*puVar16 & 0x1f)" ( (binary_expression "*puVar16 & 0x1f" (pointer_expression "*puVar16" * identifier) & number_literal) )))) ;) (expression_statement "*piVar17 = iVar13;" (assignment_expression "*piVar17 = iVar13" (pointer_expression "*piVar17" * identifier) = identifier) ;) (if_statement "if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }" if (parenthesized_expression "(0 < iVar12)" ( (binary_expression "0 < iVar12" number_literal < identifier) )) (compound_statement "{\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }" { (expression_statement "puVar6 = puVar4 + iVar13 + -0x7f94;" (assignment_expression "puVar6 = puVar4 + iVar13 + -0x7f94" identifier = (binary_expression "puVar4 + iVar13 + -0x7f94" (binary_expression "puVar4 + iVar13" identifier + identifier) + number_literal)) ;) (expression_statement "puVar9 = puVar6 + iVar12;" (assignment_expression "puVar9 = puVar6 + iVar12" identifier = (binary_expression "puVar6 + iVar12" identifier + identifier)) ;) (do_statement "do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);" do (compound_statement "{\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        }" { (expression_statement "*puVar6 = (char)iVar14;" (assignment_expression "*puVar6 = (char)iVar14" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)iVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != puVar9)" ( (binary_expression "puVar6 != puVar9" identifier != identifier) )) ;) (expression_statement "iVar13 = iVar13 + iVar12;" (assignment_expression "iVar13 = iVar13 + iVar12" identifier = (binary_expression "iVar13 + iVar12" identifier + identifier)) ;) })) (expression_statement "puVar7 = PTR_DAT_00036388;" (assignment_expression "puVar7 = PTR_DAT_00036388" identifier = identifier) ;) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "piVar17 = piVar17 + 1;" (assignment_expression "piVar17 = piVar17 + 1" identifier = (binary_expression "piVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar14 != 0x1c)" ( (binary_expression "iVar14 != 0x1c" identifier != number_literal) )) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "puVar4[iVar13 + -0x7f95] = 0x1c;" (assignment_expression "puVar4[iVar13 + -0x7f95] = 0x1c" (subscript_expression "puVar4[iVar13 + -0x7f95]" identifier [ (binary_expression "iVar13 + -0x7f95" identifier + number_literal) ]) = number_literal) ;) (expression_statement "piVar17 = (int *)(puVar7 + 0x7d80);" (assignment_expression "piVar17 = (int *)(puVar7 + 0x7d80)" identifier = (cast_expression "(int *)(puVar7 + 0x7d80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x7d80)" ( (binary_expression "puVar7 + 0x7d80" identifier + number_literal) )))) ;) (expression_statement "puVar16 = (uint *)(puVar7 + 0x61cc);" (assignment_expression "puVar16 = (uint *)(puVar7 + 0x61cc)" identifier = (cast_expression "(uint *)(puVar7 + 0x61cc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x61cc)" ( (binary_expression "puVar7 + 0x61cc" identifier + number_literal) )))) ;) (do_statement "do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);" do (compound_statement "{\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    }" { (expression_statement "iVar13 = 1 << (*puVar16 & 0x1f);" (assignment_expression "iVar13 = 1 << (*puVar16 & 0x1f)" identifier = (binary_expression "1 << (*puVar16 & 0x1f)" number_literal << (parenthesized_expression "(*puVar16 & 0x1f)" ( (binary_expression "*puVar16 & 0x1f" (pointer_expression "*puVar16" * identifier) & number_literal) )))) ;) (expression_statement "*piVar17 = iVar12;" (assignment_expression "*piVar17 = iVar12" (pointer_expression "*piVar17" * identifier) = identifier) ;) (if_statement "if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }" if (parenthesized_expression "(0 < iVar13)" ( (binary_expression "0 < iVar13" number_literal < identifier) )) (compound_statement "{\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }" { (expression_statement "puVar6 = puVar7 + iVar12 + 0x7e6c;" (assignment_expression "puVar6 = puVar7 + iVar12 + 0x7e6c" identifier = (binary_expression "puVar7 + iVar12 + 0x7e6c" (binary_expression "puVar7 + iVar12" identifier + identifier) + number_literal)) ;) (expression_statement "puVar9 = puVar6 + iVar13;" (assignment_expression "puVar9 = puVar6 + iVar13" identifier = (binary_expression "puVar6 + iVar13" identifier + identifier)) ;) (do_statement "do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);" do (compound_statement "{\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        }" { (expression_statement "*puVar6 = (char)iVar14;" (assignment_expression "*puVar6 = (char)iVar14" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)iVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != puVar9)" ( (binary_expression "puVar6 != puVar9" identifier != identifier) )) ;) (expression_statement "iVar12 = iVar12 + iVar13;" (assignment_expression "iVar12 = iVar12 + iVar13" identifier = (binary_expression "iVar12 + iVar13" identifier + identifier)) ;) })) (expression_statement "puVar4 = PTR_DAT_00036388;" (assignment_expression "puVar4 = PTR_DAT_00036388" identifier = identifier) ;) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "piVar17 = piVar17 + 1;" (assignment_expression "piVar17 = piVar17 + 1" identifier = (binary_expression "piVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar14 != 0x10)" ( (binary_expression "iVar14 != 0x10" identifier != number_literal) )) ;) (expression_statement "iVar12 = iVar12 >> 7;" (assignment_expression "iVar12 = iVar12 >> 7" identifier = (binary_expression "iVar12 >> 7" identifier >> number_literal)) ;) (expression_statement "piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);" (assignment_expression "piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0)" identifier = (cast_expression "(int *)(PTR_DAT_00036388 + 0x7dc0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x7dc0)" ( (binary_expression "PTR_DAT_00036388 + 0x7dc0" identifier + number_literal) )))) ;) (expression_statement "piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);" (assignment_expression "piVar17 = (int *)(PTR_DAT_00036388 + 0x620c)" identifier = (cast_expression "(int *)(PTR_DAT_00036388 + 0x620c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + 0x620c)" ( (binary_expression "PTR_DAT_00036388 + 0x620c" identifier + number_literal) )))) ;) (expression_statement "iVar13 = 0x10;" (assignment_expression "iVar13 = 0x10" identifier = number_literal) ;) (do_statement "do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);" do (compound_statement "{\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    }" { (expression_statement "iVar14 = 1 << (*piVar17 - 7U & 0x1f);" (assignment_expression "iVar14 = 1 << (*piVar17 - 7U & 0x1f)" identifier = (binary_expression "1 << (*piVar17 - 7U & 0x1f)" number_literal << (parenthesized_expression "(*piVar17 - 7U & 0x1f)" ( (binary_expression "*piVar17 - 7U & 0x1f" (binary_expression "*piVar17 - 7U" (pointer_expression "*piVar17" * identifier) - number_literal) & number_literal) )))) ;) (expression_statement "*piVar18 = iVar12 << 7;" (assignment_expression "*piVar18 = iVar12 << 7" (pointer_expression "*piVar18" * identifier) = (binary_expression "iVar12 << 7" identifier << number_literal)) ;) (if_statement "if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }" if (parenthesized_expression "(0 < iVar14)" ( (binary_expression "0 < iVar14" number_literal < identifier) )) (compound_statement "{\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }" { (expression_statement "puVar7 = puVar4 + iVar12 + 0x7e6c;" (assignment_expression "puVar7 = puVar4 + iVar12 + 0x7e6c" identifier = (binary_expression "puVar4 + iVar12 + 0x7e6c" (binary_expression "puVar4 + iVar12" identifier + identifier) + number_literal)) ;) (expression_statement "puVar10 = puVar7 + iVar14;" (assignment_expression "puVar10 = puVar7 + iVar14" identifier = (binary_expression "puVar7 + iVar14" identifier + identifier)) ;) (do_statement "do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);" do (compound_statement "{\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        }" { (expression_statement "puVar7[0x100] = (char)iVar13;" (assignment_expression "puVar7[0x100] = (char)iVar13" (subscript_expression "puVar7[0x100]" identifier [ number_literal ]) = (cast_expression "(char)iVar13" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar7 != puVar10)" ( (binary_expression "puVar7 != puVar10" identifier != identifier) )) ;) (expression_statement "iVar12 = iVar12 + iVar14;" (assignment_expression "iVar12 = iVar12 + iVar14" identifier = (binary_expression "iVar12 + iVar14" identifier + identifier)) ;) })) (expression_statement "puVar7 = PTR_DAT_000364c4;" (assignment_expression "puVar7 = PTR_DAT_000364c4" identifier = identifier) ;) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "piVar18 = piVar18 + 1;" (assignment_expression "piVar18 = piVar18 + 1" identifier = (binary_expression "piVar18 + 1" identifier + number_literal)) ;) (expression_statement "piVar17 = piVar17 + 1;" (assignment_expression "piVar17 = piVar17 + 1" identifier = (binary_expression "piVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 != 0x1e)" ( (binary_expression "iVar13 != 0x1e" identifier != number_literal) )) ;) (expression_statement "puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);" (assignment_expression "puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000364c4 + -0x7358)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000364c4 + -0x7358)" ( (binary_expression "PTR_DAT_000364c4 + -0x7358" identifier + number_literal) )))) ;) (expression_statement "puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);" (assignment_expression "puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000364c4 + -0x7338)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000364c4 + -0x7338)" ( (binary_expression "PTR_DAT_000364c4 + -0x7338" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);" do (compound_statement "{\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    }" { (expression_statement "*puVar15 = 0;" (assignment_expression "*puVar15 = 0" (pointer_expression "*puVar15" * identifier) = number_literal) ;) (expression_statement "puVar4 = PTR_DAT_000364c4;" (assignment_expression "puVar4 = PTR_DAT_000364c4" identifier = identifier) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar15 != puVar11)" ( (binary_expression "puVar15 != puVar11" identifier != identifier) )) ;) (expression_statement "sVar1 = *(short *)(puVar7 + -0x7348);" (assignment_expression "sVar1 = *(short *)(puVar7 + -0x7348)" identifier = (pointer_expression "*(short *)(puVar7 + -0x7348)" * (cast_expression "(short *)(puVar7 + -0x7348)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x7348)" ( (binary_expression "puVar7 + -0x7348" identifier + number_literal) ))))) ;) (expression_statement "puVar10 = PTR_DAT_000364c4 + -0x7224;" (assignment_expression "puVar10 = PTR_DAT_000364c4 + -0x7224" identifier = (binary_expression "PTR_DAT_000364c4 + -0x7224" identifier + number_literal)) ;) (expression_statement "puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);" (assignment_expression "puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000364c4 + -0x7222)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000364c4 + -0x7222)" ( (binary_expression "PTR_DAT_000364c4 + -0x7222" identifier + number_literal) )))) ;) (expression_statement "puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);" (assignment_expression "puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000364c4 + -0x6fe2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000364c4 + -0x6fe2)" ( (binary_expression "PTR_DAT_000364c4 + -0x6fe2" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);" do (compound_statement "{\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    }" { (expression_statement "*puVar15 = 8;" (assignment_expression "*puVar15 = 8" (pointer_expression "*puVar15" * identifier) = number_literal) ;) (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" identifier = (binary_expression "puVar15 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar15 != puVar11)" ( (binary_expression "puVar15 != puVar11" identifier != identifier) )) ;) (expression_statement "sVar2 = *(short *)(puVar7 + -0x7346);" (assignment_expression "sVar2 = *(short *)(puVar7 + -0x7346)" identifier = (pointer_expression "*(short *)(puVar7 + -0x7346)" * (cast_expression "(short *)(puVar7 + -0x7346)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x7346)" ( (binary_expression "puVar7 + -0x7346" identifier + number_literal) ))))) ;) (expression_statement "puVar11 = (undefined2 *)(puVar4 + -0x6e22);" (assignment_expression "puVar11 = (undefined2 *)(puVar4 + -0x6e22)" identifier = (cast_expression "(undefined2 *)(puVar4 + -0x6e22)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6e22)" ( (binary_expression "puVar4 + -0x6e22" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);" do (compound_statement "{\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    }" { (expression_statement "*puVar15 = 9;" (assignment_expression "*puVar15 = 9" (pointer_expression "*puVar15" * identifier) = number_literal) ;) (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" identifier = (binary_expression "puVar15 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar11 != puVar15)" ( (binary_expression "puVar11 != puVar15" identifier != identifier) )) ;) (expression_statement "sVar3 = *(short *)(puVar7 + -0x734a);" (assignment_expression "sVar3 = *(short *)(puVar7 + -0x734a)" identifier = (pointer_expression "*(short *)(puVar7 + -0x734a)" * (cast_expression "(short *)(puVar7 + -0x734a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x734a)" ( (binary_expression "puVar7 + -0x734a" identifier + number_literal) ))))) ;) (expression_statement "*(short *)(puVar7 + -0x7346) = sVar2 + 0x70;" (assignment_expression "*(short *)(puVar7 + -0x7346) = sVar2 + 0x70" (pointer_expression "*(short *)(puVar7 + -0x7346)" * (cast_expression "(short *)(puVar7 + -0x7346)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x7346)" ( (binary_expression "puVar7 + -0x7346" identifier + number_literal) )))) = (binary_expression "sVar2 + 0x70" identifier + number_literal)) ;) (do_statement "do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);" do (compound_statement "{\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    }" { (expression_statement "*puVar11 = 7;" (assignment_expression "*puVar11 = 7" (pointer_expression "*puVar11" * identifier) = number_literal) ;) (expression_statement "puVar11 = puVar11 + 2;" (assignment_expression "puVar11 = puVar11 + 2" identifier = (binary_expression "puVar11 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "((undefined2 *)(puVar4 + -0x6dc2) != puVar11)" ( (binary_expression "(undefined2 *)(puVar4 + -0x6dc2) != puVar11" (cast_expression "(undefined2 *)(puVar4 + -0x6dc2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6dc2)" ( (binary_expression "puVar4 + -0x6dc2" identifier + number_literal) ))) != identifier) )) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6dc2) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6dc2) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6dc2)" * (cast_expression "(undefined2 *)(puVar4 + -0x6dc2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6dc2)" ( (binary_expression "puVar4 + -0x6dc2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(short *)(puVar7 + -0x734a) = sVar3 + 0x18;" (assignment_expression "*(short *)(puVar7 + -0x734a) = sVar3 + 0x18" (pointer_expression "*(short *)(puVar7 + -0x734a)" * (cast_expression "(short *)(puVar7 + -0x734a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x734a)" ( (binary_expression "puVar7 + -0x734a" identifier + number_literal) )))) = (binary_expression "sVar3 + 0x18" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6dbe) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6dbe) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6dbe)" * (cast_expression "(undefined2 *)(puVar4 + -0x6dbe)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6dbe)" ( (binary_expression "puVar4 + -0x6dbe" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6dba) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6dba) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6dba)" * (cast_expression "(undefined2 *)(puVar4 + -0x6dba)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6dba)" ( (binary_expression "puVar4 + -0x6dba" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6db6) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6db6) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6db6)" * (cast_expression "(undefined2 *)(puVar4 + -0x6db6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6db6)" ( (binary_expression "puVar4 + -0x6db6" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6db2) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6db2) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6db2)" * (cast_expression "(undefined2 *)(puVar4 + -0x6db2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6db2)" ( (binary_expression "puVar4 + -0x6db2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6dae) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6dae) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6dae)" * (cast_expression "(undefined2 *)(puVar4 + -0x6dae)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6dae)" ( (binary_expression "puVar4 + -0x6dae" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6daa) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6daa) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6daa)" * (cast_expression "(undefined2 *)(puVar4 + -0x6daa)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6daa)" ( (binary_expression "puVar4 + -0x6daa" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + -0x6da6) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6da6) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6da6)" * (cast_expression "(undefined2 *)(puVar4 + -0x6da6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x6da6)" ( (binary_expression "puVar4 + -0x6da6" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(short *)(puVar7 + -0x7348) = sVar1 + 0x98;" (assignment_expression "*(short *)(puVar7 + -0x7348) = sVar1 + 0x98" (pointer_expression "*(short *)(puVar7 + -0x7348)" * (cast_expression "(short *)(puVar7 + -0x7348)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x7348)" ( (binary_expression "puVar7 + -0x7348" identifier + number_literal) )))) = (binary_expression "sVar1 + 0x98" identifier + number_literal)) ;) (expression_statement "FUN_0001a368(puVar10,0x11f);" (call_expression "FUN_0001a368(puVar10,0x11f)" identifier (argument_list "(puVar10,0x11f)" ( identifier , number_literal ))) ;) (expression_statement "puVar15 = (undefined2 *)(puVar5 + -0x729c);" (assignment_expression "puVar15 = (undefined2 *)(puVar5 + -0x729c)" identifier = (cast_expression "(undefined2 *)(puVar5 + -0x729c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x729c)" ( (binary_expression "puVar5 + -0x729c" identifier + number_literal) )))) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);" do (compound_statement "{\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    }" { (expression_statement "puVar15[1] = 5;" (assignment_expression "puVar15[1] = 5" (subscript_expression "puVar15[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar14 = iVar13 + 1;" (assignment_expression "iVar14 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = bi_reverse(iVar13,5);" (assignment_expression "uVar8 = bi_reverse(iVar13,5)" identifier = (call_expression "bi_reverse(iVar13,5)" identifier (argument_list "(iVar13,5)" ( identifier , number_literal )))) ;) (expression_statement "*puVar15 = uVar8;" (assignment_expression "*puVar15 = uVar8" (pointer_expression "*puVar15" * identifier) = identifier) ;) (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" identifier = (binary_expression "puVar15 + 2" identifier + number_literal)) ;) (expression_statement "iVar13 = iVar14;" (assignment_expression "iVar13 = iVar14" identifier = identifier) ;) }) while (parenthesized_expression "(iVar14 != 0x1e)" ( (binary_expression "iVar14 != 0x1e" identifier != number_literal) )) ;) (expression_statement "FUN_0001a030();" (call_expression "FUN_0001a030()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier short) IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = 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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) - LIT) & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT << LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (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) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) != IDENT) )) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( 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 = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })) (return_statement return ;) })))
(function_definition "void ct_init(undefined4 param_1)\n\n{\n  short sVar1;\n  short sVar2;\n  short sVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined1 *puVar6;\n  undefined *puVar7;\n  undefined2 uVar8;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  undefined2 *puVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  undefined2 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  int *piVar18;\n  \n  puVar4 = PTR_DAT_00036388;\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d50) = param_1;\n  puVar5 = PTR_DAT_000364c4;\n  *(undefined4 *)(puVar4 + 0x6d5c) = 0;\n  *(undefined4 *)(puVar4 + 0x6d58) = 0;\n  puVar4 = PTR_DAT_00036388;\n  sVar1 = *(short *)(puVar5 + -0x729a);\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;\n  *(undefined4 *)(puVar4 + 28000) = 0;\n  puVar4 = PTR_DAT_000364c4;\n  if (sVar1 == 0) {\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    puVar10 = PTR_DAT_000364c4 + -0x7224;\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    FUN_0001a368(puVar10,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    iVar13 = 0;\n    do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);\n    FUN_0001a030();\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "ct_init(undefined4 param_1)" (identifier "ct_init") (parameter_list "(undefined4 param_1)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) () ")"))) (compound_statement "{\n  short sVar1;\n  short sVar2;\n  short sVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined1 *puVar6;\n  undefined *puVar7;\n  undefined2 uVar8;\n  undefined1 *puVar9;\n  undefined *puVar10;\n  undefined2 *puVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  undefined2 *puVar15;\n  uint *puVar16;\n  int *piVar17;\n  int *piVar18;\n  \n  puVar4 = PTR_DAT_00036388;\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d50) = param_1;\n  puVar5 = PTR_DAT_000364c4;\n  *(undefined4 *)(puVar4 + 0x6d5c) = 0;\n  *(undefined4 *)(puVar4 + 0x6d58) = 0;\n  puVar4 = PTR_DAT_00036388;\n  sVar1 = *(short *)(puVar5 + -0x729a);\n  *(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;\n  *(undefined4 *)(puVar4 + 28000) = 0;\n  puVar4 = PTR_DAT_000364c4;\n  if (sVar1 == 0) {\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    puVar10 = PTR_DAT_000364c4 + -0x7224;\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    FUN_0001a368(puVar10,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    iVar13 = 0;\n    do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);\n    FUN_0001a030();\n    return;\n  }\n  return;\n}" ({ "{") (declaration "short sVar1;" (sized_type_specifier "short" (short "short")) (identifier "sVar1") (; ";")) (declaration "short sVar2;" (sized_type_specifier "short" (short "short")) (identifier "sVar2") (; ";")) (declaration "short sVar3;" (sized_type_specifier "short" (short "short")) (identifier "sVar3") (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined1 *puVar6;" (type_identifier "undefined1") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined *puVar7;" (type_identifier "undefined") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined2 uVar8;" (type_identifier "undefined2") (identifier "uVar8") (; ";")) (declaration "undefined1 *puVar9;" (type_identifier "undefined1") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "undefined2 *puVar11;" (type_identifier "undefined2") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "undefined2 *puVar15;" (type_identifier "undefined2") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "uint *puVar16;" (type_identifier "uint") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "int *piVar17;" (primitive_type "int") (pointer_declarator "*piVar17" (* "*") (identifier "piVar17")) (; ";")) (declaration "int *piVar18;" (primitive_type "int") (pointer_declarator "*piVar18" (* "*") (identifier "piVar18")) (; ";")) (expression_statement "puVar4 = PTR_DAT_00036388;" (assignment_expression "puVar4 = PTR_DAT_00036388" (identifier "puVar4") (= "=") (identifier "PTR_DAT_00036388")) (; ";")) (expression_statement "*(undefined4 *)(PTR_DAT_00036388 + 0x6d50) = param_1;" (assignment_expression "*(undefined4 *)(PTR_DAT_00036388 + 0x6d50) = param_1" (pointer_expression "*(undefined4 *)(PTR_DAT_00036388 + 0x6d50)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_00036388 + 0x6d50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00036388 + 0x6d50)" (( "(") (binary_expression "PTR_DAT_00036388 + 0x6d50" (identifier "PTR_DAT_00036388") (+ "+") (number_literal "0x6d50")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "puVar5 = PTR_DAT_000364c4;" (assignment_expression "puVar5 = PTR_DAT_000364c4" (identifier "puVar5") (= "=") (identifier "PTR_DAT_000364c4")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + 0x6d5c) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 0x6d5c) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 0x6d5c)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 0x6d5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 0x6d5c)" (( "(") (binary_expression "puVar4 + 0x6d5c" (identifier "puVar4") (+ "+") (number_literal "0x6d5c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + 0x6d58) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 0x6d58) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 0x6d58)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 0x6d58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 0x6d58)" (( "(") (binary_expression "puVar4 + 0x6d58" (identifier "puVar4") (+ "+") (number_literal "0x6d58")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4 = PTR_DAT_00036388;" (assignment_expression "puVar4 = PTR_DAT_00036388" (identifier "puVar4") (= "=") (identifier "PTR_DAT_00036388")) (; ";")) (expression_statement "sVar1 = *(short *)(puVar5 + -0x729a);" (assignment_expression "sVar1 = *(short *)(puVar5 + -0x729a)" (identifier "sVar1") (= "=") (pointer_expression "*(short *)(puVar5 + -0x729a)" (* "*") (cast_expression "(short *)(puVar5 + -0x729a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + -0x729a)" (( "(") (binary_expression "puVar5 + -0x729a" (identifier "puVar5") (+ "+") (number_literal "-0x729a")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;" (assignment_expression "*(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0" (pointer_expression "*(undefined4 *)(PTR_DAT_00036388 + 0x6d64)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_00036388 + 0x6d64)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00036388 + 0x6d64)" (( "(") (binary_expression "PTR_DAT_00036388 + 0x6d64" (identifier "PTR_DAT_00036388") (+ "+") (number_literal "0x6d64")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + 28000) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 28000) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 28000)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 28000)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 28000)" (( "(") (binary_expression "puVar4 + 28000" (identifier "puVar4") (+ "+") (number_literal "28000")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4 = PTR_DAT_000364c4;" (assignment_expression "puVar4 = PTR_DAT_000364c4" (identifier "puVar4") (= "=") (identifier "PTR_DAT_000364c4")) (; ";")) (if_statement "if (sVar1 == 0) {\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    puVar10 = PTR_DAT_000364c4 + -0x7224;\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    FUN_0001a368(puVar10,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    iVar13 = 0;\n    do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);\n    FUN_0001a030();\n    return;\n  }" (if "if") (parenthesized_expression "(sVar1 == 0)" (( "(") (binary_expression "sVar1 == 0" (identifier "sVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar14 = 0;\n    iVar13 = 0;\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);\n    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);\n    do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);\n    iVar12 = 0;\n    iVar14 = 0;\n    puVar4[iVar13 + -0x7f95] = 0x1c;\n    piVar17 = (int *)(puVar7 + 0x7d80);\n    puVar16 = (uint *)(puVar7 + 0x61cc);\n    do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);\n    iVar12 = iVar12 >> 7;\n    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);\n    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);\n    iVar13 = 0x10;\n    do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);\n    do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);\n    sVar1 = *(short *)(puVar7 + -0x7348);\n    puVar10 = PTR_DAT_000364c4 + -0x7224;\n    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);\n    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);\n    do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);\n    sVar2 = *(short *)(puVar7 + -0x7346);\n    puVar11 = (undefined2 *)(puVar4 + -0x6e22);\n    do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);\n    sVar3 = *(short *)(puVar7 + -0x734a);\n    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;\n    do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);\n    *(undefined2 *)(puVar4 + -0x6dc2) = 8;\n    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;\n    *(undefined2 *)(puVar4 + -0x6dbe) = 8;\n    *(undefined2 *)(puVar4 + -0x6dba) = 8;\n    *(undefined2 *)(puVar4 + -0x6db6) = 8;\n    *(undefined2 *)(puVar4 + -0x6db2) = 8;\n    *(undefined2 *)(puVar4 + -0x6dae) = 8;\n    *(undefined2 *)(puVar4 + -0x6daa) = 8;\n    *(undefined2 *)(puVar4 + -0x6da6) = 8;\n    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;\n    FUN_0001a368(puVar10,0x11f);\n    puVar15 = (undefined2 *)(puVar5 + -0x729c);\n    iVar13 = 0;\n    do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);\n    FUN_0001a030();\n    return;\n  }" ({ "{") (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);" (assignment_expression "piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8)" (identifier "piVar17") (= "=") (cast_expression "(int *)(PTR_DAT_00036388 + 0x7df8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00036388 + 0x7df8)" (( "(") (binary_expression "PTR_DAT_00036388 + 0x7df8" (identifier "PTR_DAT_00036388") (+ "+") (number_literal "0x7df8")) () ")")))) (; ";")) (expression_statement "puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);" (assignment_expression "puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244)" (identifier "puVar16") (= "=") (cast_expression "(uint *)(PTR_DAT_00036388 + 0x6244)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00036388 + 0x6244)" (( "(") (binary_expression "PTR_DAT_00036388 + 0x6244" (identifier "PTR_DAT_00036388") (+ "+") (number_literal "0x6244")) () ")")))) (; ";")) (do_statement "do {\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x1c);" (do "do") (compound_statement "{\n      iVar12 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar13;\n      if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }\n      puVar7 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    }" ({ "{") (expression_statement "iVar12 = 1 << (*puVar16 & 0x1f);" (assignment_expression "iVar12 = 1 << (*puVar16 & 0x1f)" (identifier "iVar12") (= "=") (binary_expression "1 << (*puVar16 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(*puVar16 & 0x1f)" (( "(") (binary_expression "*puVar16 & 0x1f" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "*piVar17 = iVar13;" (assignment_expression "*piVar17 = iVar13" (pointer_expression "*piVar17" (* "*") (identifier "piVar17")) (= "=") (identifier "iVar13")) (; ";")) (if_statement "if (0 < iVar12) {\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }" (if "if") (parenthesized_expression "(0 < iVar12)" (( "(") (binary_expression "0 < iVar12" (number_literal "0") (< "<") (identifier "iVar12")) () ")")) (compound_statement "{\n        puVar6 = puVar4 + iVar13 + -0x7f94;\n        puVar9 = puVar6 + iVar12;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar13 = iVar13 + iVar12;\n      }" ({ "{") (expression_statement "puVar6 = puVar4 + iVar13 + -0x7f94;" (assignment_expression "puVar6 = puVar4 + iVar13 + -0x7f94" (identifier "puVar6") (= "=") (binary_expression "puVar4 + iVar13 + -0x7f94" (binary_expression "puVar4 + iVar13" (identifier "puVar4") (+ "+") (identifier "iVar13")) (+ "+") (number_literal "-0x7f94"))) (; ";")) (expression_statement "puVar9 = puVar6 + iVar12;" (assignment_expression "puVar9 = puVar6 + iVar12" (identifier "puVar9") (= "=") (binary_expression "puVar6 + iVar12" (identifier "puVar6") (+ "+") (identifier "iVar12"))) (; ";")) (do_statement "do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);" (do "do") (compound_statement "{\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        }" ({ "{") (expression_statement "*puVar6 = (char)iVar14;" (assignment_expression "*puVar6 = (char)iVar14" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (cast_expression "(char)iVar14" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar14"))) (; ";")) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar6 != puVar9)" (( "(") (binary_expression "puVar6 != puVar9" (identifier "puVar6") (!= "!=") (identifier "puVar9")) () ")")) (; ";")) (expression_statement "iVar13 = iVar13 + iVar12;" (assignment_expression "iVar13 = iVar13 + iVar12" (identifier "iVar13") (= "=") (binary_expression "iVar13 + iVar12" (identifier "iVar13") (+ "+") (identifier "iVar12"))) (; ";")) (} "}"))) (expression_statement "puVar7 = PTR_DAT_00036388;" (assignment_expression "puVar7 = PTR_DAT_00036388" (identifier "puVar7") (= "=") (identifier "PTR_DAT_00036388")) (; ";")) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" (identifier "iVar14") (= "=") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar17 = piVar17 + 1;" (assignment_expression "piVar17 = piVar17 + 1" (identifier "piVar17") (= "=") (binary_expression "piVar17 + 1" (identifier "piVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" (identifier "puVar16") (= "=") (binary_expression "puVar16 + 1" (identifier "puVar16") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar14 != 0x1c)" (( "(") (binary_expression "iVar14 != 0x1c" (identifier "iVar14") (!= "!=") (number_literal "0x1c")) () ")")) (; ";")) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[iVar13 + -0x7f95] = 0x1c;" (assignment_expression "puVar4[iVar13 + -0x7f95] = 0x1c" (subscript_expression "puVar4[iVar13 + -0x7f95]" (identifier "puVar4") ([ "[") (binary_expression "iVar13 + -0x7f95" (identifier "iVar13") (+ "+") (number_literal "-0x7f95")) (] "]")) (= "=") (number_literal "0x1c")) (; ";")) (expression_statement "piVar17 = (int *)(puVar7 + 0x7d80);" (assignment_expression "piVar17 = (int *)(puVar7 + 0x7d80)" (identifier "piVar17") (= "=") (cast_expression "(int *)(puVar7 + 0x7d80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + 0x7d80)" (( "(") (binary_expression "puVar7 + 0x7d80" (identifier "puVar7") (+ "+") (number_literal "0x7d80")) () ")")))) (; ";")) (expression_statement "puVar16 = (uint *)(puVar7 + 0x61cc);" (assignment_expression "puVar16 = (uint *)(puVar7 + 0x61cc)" (identifier "puVar16") (= "=") (cast_expression "(uint *)(puVar7 + 0x61cc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + 0x61cc)" (( "(") (binary_expression "puVar7 + 0x61cc" (identifier "puVar7") (+ "+") (number_literal "0x61cc")) () ")")))) (; ";")) (do_statement "do {\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    } while (iVar14 != 0x10);" (do "do") (compound_statement "{\n      iVar13 = 1 << (*puVar16 & 0x1f);\n      *piVar17 = iVar12;\n      if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }\n      puVar4 = PTR_DAT_00036388;\n      iVar14 = iVar14 + 1;\n      piVar17 = piVar17 + 1;\n      puVar16 = puVar16 + 1;\n    }" ({ "{") (expression_statement "iVar13 = 1 << (*puVar16 & 0x1f);" (assignment_expression "iVar13 = 1 << (*puVar16 & 0x1f)" (identifier "iVar13") (= "=") (binary_expression "1 << (*puVar16 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(*puVar16 & 0x1f)" (( "(") (binary_expression "*puVar16 & 0x1f" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "*piVar17 = iVar12;" (assignment_expression "*piVar17 = iVar12" (pointer_expression "*piVar17" (* "*") (identifier "piVar17")) (= "=") (identifier "iVar12")) (; ";")) (if_statement "if (0 < iVar13) {\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }" (if "if") (parenthesized_expression "(0 < iVar13)" (( "(") (binary_expression "0 < iVar13" (number_literal "0") (< "<") (identifier "iVar13")) () ")")) (compound_statement "{\n        puVar6 = puVar7 + iVar12 + 0x7e6c;\n        puVar9 = puVar6 + iVar13;\n        do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);\n        iVar12 = iVar12 + iVar13;\n      }" ({ "{") (expression_statement "puVar6 = puVar7 + iVar12 + 0x7e6c;" (assignment_expression "puVar6 = puVar7 + iVar12 + 0x7e6c" (identifier "puVar6") (= "=") (binary_expression "puVar7 + iVar12 + 0x7e6c" (binary_expression "puVar7 + iVar12" (identifier "puVar7") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "0x7e6c"))) (; ";")) (expression_statement "puVar9 = puVar6 + iVar13;" (assignment_expression "puVar9 = puVar6 + iVar13" (identifier "puVar9") (= "=") (binary_expression "puVar6 + iVar13" (identifier "puVar6") (+ "+") (identifier "iVar13"))) (; ";")) (do_statement "do {\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        } while (puVar6 != puVar9);" (do "do") (compound_statement "{\n          *puVar6 = (char)iVar14;\n          puVar6 = puVar6 + 1;\n        }" ({ "{") (expression_statement "*puVar6 = (char)iVar14;" (assignment_expression "*puVar6 = (char)iVar14" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (cast_expression "(char)iVar14" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar14"))) (; ";")) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar6 != puVar9)" (( "(") (binary_expression "puVar6 != puVar9" (identifier "puVar6") (!= "!=") (identifier "puVar9")) () ")")) (; ";")) (expression_statement "iVar12 = iVar12 + iVar13;" (assignment_expression "iVar12 = iVar12 + iVar13" (identifier "iVar12") (= "=") (binary_expression "iVar12 + iVar13" (identifier "iVar12") (+ "+") (identifier "iVar13"))) (; ";")) (} "}"))) (expression_statement "puVar4 = PTR_DAT_00036388;" (assignment_expression "puVar4 = PTR_DAT_00036388" (identifier "puVar4") (= "=") (identifier "PTR_DAT_00036388")) (; ";")) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" (identifier "iVar14") (= "=") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar17 = piVar17 + 1;" (assignment_expression "piVar17 = piVar17 + 1" (identifier "piVar17") (= "=") (binary_expression "piVar17 + 1" (identifier "piVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" (identifier "puVar16") (= "=") (binary_expression "puVar16 + 1" (identifier "puVar16") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar14 != 0x10)" (( "(") (binary_expression "iVar14 != 0x10" (identifier "iVar14") (!= "!=") (number_literal "0x10")) () ")")) (; ";")) (expression_statement "iVar12 = iVar12 >> 7;" (assignment_expression "iVar12 = iVar12 >> 7" (identifier "iVar12") (= "=") (binary_expression "iVar12 >> 7" (identifier "iVar12") (>> ">>") (number_literal "7"))) (; ";")) (expression_statement "piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);" (assignment_expression "piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0)" (identifier "piVar18") (= "=") (cast_expression "(int *)(PTR_DAT_00036388 + 0x7dc0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00036388 + 0x7dc0)" (( "(") (binary_expression "PTR_DAT_00036388 + 0x7dc0" (identifier "PTR_DAT_00036388") (+ "+") (number_literal "0x7dc0")) () ")")))) (; ";")) (expression_statement "piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);" (assignment_expression "piVar17 = (int *)(PTR_DAT_00036388 + 0x620c)" (identifier "piVar17") (= "=") (cast_expression "(int *)(PTR_DAT_00036388 + 0x620c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00036388 + 0x620c)" (( "(") (binary_expression "PTR_DAT_00036388 + 0x620c" (identifier "PTR_DAT_00036388") (+ "+") (number_literal "0x620c")) () ")")))) (; ";")) (expression_statement "iVar13 = 0x10;" (assignment_expression "iVar13 = 0x10" (identifier "iVar13") (= "=") (number_literal "0x10")) (; ";")) (do_statement "do {\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    } while (iVar13 != 0x1e);" (do "do") (compound_statement "{\n      iVar14 = 1 << (*piVar17 - 7U & 0x1f);\n      *piVar18 = iVar12 << 7;\n      if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }\n      puVar7 = PTR_DAT_000364c4;\n      iVar13 = iVar13 + 1;\n      piVar18 = piVar18 + 1;\n      piVar17 = piVar17 + 1;\n    }" ({ "{") (expression_statement "iVar14 = 1 << (*piVar17 - 7U & 0x1f);" (assignment_expression "iVar14 = 1 << (*piVar17 - 7U & 0x1f)" (identifier "iVar14") (= "=") (binary_expression "1 << (*piVar17 - 7U & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(*piVar17 - 7U & 0x1f)" (( "(") (binary_expression "*piVar17 - 7U & 0x1f" (binary_expression "*piVar17 - 7U" (pointer_expression "*piVar17" (* "*") (identifier "piVar17")) (- "-") (number_literal "7U")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "*piVar18 = iVar12 << 7;" (assignment_expression "*piVar18 = iVar12 << 7" (pointer_expression "*piVar18" (* "*") (identifier "piVar18")) (= "=") (binary_expression "iVar12 << 7" (identifier "iVar12") (<< "<<") (number_literal "7"))) (; ";")) (if_statement "if (0 < iVar14) {\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }" (if "if") (parenthesized_expression "(0 < iVar14)" (( "(") (binary_expression "0 < iVar14" (number_literal "0") (< "<") (identifier "iVar14")) () ")")) (compound_statement "{\n        puVar7 = puVar4 + iVar12 + 0x7e6c;\n        puVar10 = puVar7 + iVar14;\n        do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);\n        iVar12 = iVar12 + iVar14;\n      }" ({ "{") (expression_statement "puVar7 = puVar4 + iVar12 + 0x7e6c;" (assignment_expression "puVar7 = puVar4 + iVar12 + 0x7e6c" (identifier "puVar7") (= "=") (binary_expression "puVar4 + iVar12 + 0x7e6c" (binary_expression "puVar4 + iVar12" (identifier "puVar4") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "0x7e6c"))) (; ";")) (expression_statement "puVar10 = puVar7 + iVar14;" (assignment_expression "puVar10 = puVar7 + iVar14" (identifier "puVar10") (= "=") (binary_expression "puVar7 + iVar14" (identifier "puVar7") (+ "+") (identifier "iVar14"))) (; ";")) (do_statement "do {\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        } while (puVar7 != puVar10);" (do "do") (compound_statement "{\n          puVar7[0x100] = (char)iVar13;\n          puVar7 = puVar7 + 1;\n        }" ({ "{") (expression_statement "puVar7[0x100] = (char)iVar13;" (assignment_expression "puVar7[0x100] = (char)iVar13" (subscript_expression "puVar7[0x100]" (identifier "puVar7") ([ "[") (number_literal "0x100") (] "]")) (= "=") (cast_expression "(char)iVar13" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar13"))) (; ";")) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar7 != puVar10)" (( "(") (binary_expression "puVar7 != puVar10" (identifier "puVar7") (!= "!=") (identifier "puVar10")) () ")")) (; ";")) (expression_statement "iVar12 = iVar12 + iVar14;" (assignment_expression "iVar12 = iVar12 + iVar14" (identifier "iVar12") (= "=") (binary_expression "iVar12 + iVar14" (identifier "iVar12") (+ "+") (identifier "iVar14"))) (; ";")) (} "}"))) (expression_statement "puVar7 = PTR_DAT_000364c4;" (assignment_expression "puVar7 = PTR_DAT_000364c4" (identifier "puVar7") (= "=") (identifier "PTR_DAT_000364c4")) (; ";")) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar18 = piVar18 + 1;" (assignment_expression "piVar18 = piVar18 + 1" (identifier "piVar18") (= "=") (binary_expression "piVar18 + 1" (identifier "piVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar17 = piVar17 + 1;" (assignment_expression "piVar17 = piVar17 + 1" (identifier "piVar17") (= "=") (binary_expression "piVar17 + 1" (identifier "piVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar13 != 0x1e)" (( "(") (binary_expression "iVar13 != 0x1e" (identifier "iVar13") (!= "!=") (number_literal "0x1e")) () ")")) (; ";")) (expression_statement "puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);" (assignment_expression "puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358)" (identifier "puVar15") (= "=") (cast_expression "(undefined2 *)(PTR_DAT_000364c4 + -0x7358)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000364c4 + -0x7358)" (( "(") (binary_expression "PTR_DAT_000364c4 + -0x7358" (identifier "PTR_DAT_000364c4") (+ "+") (number_literal "-0x7358")) () ")")))) (; ";")) (expression_statement "puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);" (assignment_expression "puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338)" (identifier "puVar11") (= "=") (cast_expression "(undefined2 *)(PTR_DAT_000364c4 + -0x7338)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000364c4 + -0x7338)" (( "(") (binary_expression "PTR_DAT_000364c4 + -0x7338" (identifier "PTR_DAT_000364c4") (+ "+") (number_literal "-0x7338")) () ")")))) (; ";")) (do_statement "do {\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    } while (puVar15 != puVar11);" (do "do") (compound_statement "{\n      *puVar15 = 0;\n      puVar4 = PTR_DAT_000364c4;\n      puVar15 = puVar15 + 1;\n    }" ({ "{") (expression_statement "*puVar15 = 0;" (assignment_expression "*puVar15 = 0" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4 = PTR_DAT_000364c4;" (assignment_expression "puVar4 = PTR_DAT_000364c4" (identifier "puVar4") (= "=") (identifier "PTR_DAT_000364c4")) (; ";")) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" (identifier "puVar15") (= "=") (binary_expression "puVar15 + 1" (identifier "puVar15") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar15 != puVar11)" (( "(") (binary_expression "puVar15 != puVar11" (identifier "puVar15") (!= "!=") (identifier "puVar11")) () ")")) (; ";")) (expression_statement "sVar1 = *(short *)(puVar7 + -0x7348);" (assignment_expression "sVar1 = *(short *)(puVar7 + -0x7348)" (identifier "sVar1") (= "=") (pointer_expression "*(short *)(puVar7 + -0x7348)" (* "*") (cast_expression "(short *)(puVar7 + -0x7348)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x7348)" (( "(") (binary_expression "puVar7 + -0x7348" (identifier "puVar7") (+ "+") (number_literal "-0x7348")) () ")"))))) (; ";")) (expression_statement "puVar10 = PTR_DAT_000364c4 + -0x7224;" (assignment_expression "puVar10 = PTR_DAT_000364c4 + -0x7224" (identifier "puVar10") (= "=") (binary_expression "PTR_DAT_000364c4 + -0x7224" (identifier "PTR_DAT_000364c4") (+ "+") (number_literal "-0x7224"))) (; ";")) (expression_statement "puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);" (assignment_expression "puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222)" (identifier "puVar15") (= "=") (cast_expression "(undefined2 *)(PTR_DAT_000364c4 + -0x7222)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000364c4 + -0x7222)" (( "(") (binary_expression "PTR_DAT_000364c4 + -0x7222" (identifier "PTR_DAT_000364c4") (+ "+") (number_literal "-0x7222")) () ")")))) (; ";")) (expression_statement "puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);" (assignment_expression "puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2)" (identifier "puVar11") (= "=") (cast_expression "(undefined2 *)(PTR_DAT_000364c4 + -0x6fe2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000364c4 + -0x6fe2)" (( "(") (binary_expression "PTR_DAT_000364c4 + -0x6fe2" (identifier "PTR_DAT_000364c4") (+ "+") (number_literal "-0x6fe2")) () ")")))) (; ";")) (do_statement "do {\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    } while (puVar15 != puVar11);" (do "do") (compound_statement "{\n      *puVar15 = 8;\n      puVar15 = puVar15 + 2;\n    }" ({ "{") (expression_statement "*puVar15 = 8;" (assignment_expression "*puVar15 = 8" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (number_literal "8")) (; ";")) (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" (identifier "puVar15") (= "=") (binary_expression "puVar15 + 2" (identifier "puVar15") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar15 != puVar11)" (( "(") (binary_expression "puVar15 != puVar11" (identifier "puVar15") (!= "!=") (identifier "puVar11")) () ")")) (; ";")) (expression_statement "sVar2 = *(short *)(puVar7 + -0x7346);" (assignment_expression "sVar2 = *(short *)(puVar7 + -0x7346)" (identifier "sVar2") (= "=") (pointer_expression "*(short *)(puVar7 + -0x7346)" (* "*") (cast_expression "(short *)(puVar7 + -0x7346)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x7346)" (( "(") (binary_expression "puVar7 + -0x7346" (identifier "puVar7") (+ "+") (number_literal "-0x7346")) () ")"))))) (; ";")) (expression_statement "puVar11 = (undefined2 *)(puVar4 + -0x6e22);" (assignment_expression "puVar11 = (undefined2 *)(puVar4 + -0x6e22)" (identifier "puVar11") (= "=") (cast_expression "(undefined2 *)(puVar4 + -0x6e22)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x6e22)" (( "(") (binary_expression "puVar4 + -0x6e22" (identifier "puVar4") (+ "+") (number_literal "-0x6e22")) () ")")))) (; ";")) (do_statement "do {\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    } while (puVar11 != puVar15);" (do "do") (compound_statement "{\n      *puVar15 = 9;\n      puVar15 = puVar15 + 2;\n    }" ({ "{") (expression_statement "*puVar15 = 9;" (assignment_expression "*puVar15 = 9" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (number_literal "9")) (; ";")) (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" (identifier "puVar15") (= "=") (binary_expression "puVar15 + 2" (identifier "puVar15") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar11 != puVar15)" (( "(") (binary_expression "puVar11 != puVar15" (identifier "puVar11") (!= "!=") (identifier "puVar15")) () ")")) (; ";")) (expression_statement "sVar3 = *(short *)(puVar7 + -0x734a);" (assignment_expression "sVar3 = *(short *)(puVar7 + -0x734a)" (identifier "sVar3") (= "=") (pointer_expression "*(short *)(puVar7 + -0x734a)" (* "*") (cast_expression "(short *)(puVar7 + -0x734a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x734a)" (( "(") (binary_expression "puVar7 + -0x734a" (identifier "puVar7") (+ "+") (number_literal "-0x734a")) () ")"))))) (; ";")) (expression_statement "*(short *)(puVar7 + -0x7346) = sVar2 + 0x70;" (assignment_expression "*(short *)(puVar7 + -0x7346) = sVar2 + 0x70" (pointer_expression "*(short *)(puVar7 + -0x7346)" (* "*") (cast_expression "(short *)(puVar7 + -0x7346)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x7346)" (( "(") (binary_expression "puVar7 + -0x7346" (identifier "puVar7") (+ "+") (number_literal "-0x7346")) () ")")))) (= "=") (binary_expression "sVar2 + 0x70" (identifier "sVar2") (+ "+") (number_literal "0x70"))) (; ";")) (do_statement "do {\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);" (do "do") (compound_statement "{\n      *puVar11 = 7;\n      puVar11 = puVar11 + 2;\n    }" ({ "{") (expression_statement "*puVar11 = 7;" (assignment_expression "*puVar11 = 7" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (number_literal "7")) (; ";")) (expression_statement "puVar11 = puVar11 + 2;" (assignment_expression "puVar11 = puVar11 + 2" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 2" (identifier "puVar11") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined2 *)(puVar4 + -0x6dc2) != puVar11)" (( "(") (binary_expression "(undefined2 *)(puVar4 + -0x6dc2) != puVar11" (cast_expression "(undefined2 *)(puVar4 + -0x6dc2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x6dc2)" (( "(") (binary_expression "puVar4 + -0x6dc2" (identifier "puVar4") (+ "+") (number_literal "-0x6dc2")) () ")"))) (!= "!=") (identifier "puVar11")) () ")")) (; ";")) (expression_statement "*(undefined2 *)(puVar4 + -0x6dc2) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6dc2) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6dc2)" (* "*") (cast_expression "(undefined2 *)(puVar4 + -0x6dc2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x6dc2)" (( "(") (binary_expression "puVar4 + -0x6dc2" (identifier "puVar4") (+ "+") (number_literal "-0x6dc2")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(short *)(puVar7 + -0x734a) = sVar3 + 0x18;" (assignment_expression "*(short *)(puVar7 + -0x734a) = sVar3 + 0x18" (pointer_expression "*(short *)(puVar7 + -0x734a)" (* "*") (cast_expression "(short *)(puVar7 + -0x734a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x734a)" (( "(") (binary_expression "puVar7 + -0x734a" (identifier "puVar7") (+ "+") (number_literal "-0x734a")) () ")")))) (= "=") (binary_expression "sVar3 + 0x18" (identifier "sVar3") (+ "+") (number_literal "0x18"))) (; ";")) (expression_statement "*(undefined2 *)(puVar4 + -0x6dbe) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6dbe) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6dbe)" (* "*") (cast_expression "(undefined2 *)(puVar4 + -0x6dbe)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x6dbe)" (( "(") (binary_expression "puVar4 + -0x6dbe" (identifier "puVar4") (+ "+") (number_literal "-0x6dbe")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(undefined2 *)(puVar4 + -0x6dba) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6dba) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6dba)" (* "*") (cast_expression "(undefined2 *)(puVar4 + -0x6dba)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x6dba)" (( "(") (binary_expression "puVar4 + -0x6dba" (identifier "puVar4") (+ "+") (number_literal "-0x6dba")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(undefined2 *)(puVar4 + -0x6db6) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6db6) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6db6)" (* "*") (cast_expression "(undefined2 *)(puVar4 + -0x6db6)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x6db6)" (( "(") (binary_expression "puVar4 + -0x6db6" (identifier "puVar4") (+ "+") (number_literal "-0x6db6")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(undefined2 *)(puVar4 + -0x6db2) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6db2) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6db2)" (* "*") (cast_expression "(undefined2 *)(puVar4 + -0x6db2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x6db2)" (( "(") (binary_expression "puVar4 + -0x6db2" (identifier "puVar4") (+ "+") (number_literal "-0x6db2")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(undefined2 *)(puVar4 + -0x6dae) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6dae) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6dae)" (* "*") (cast_expression "(undefined2 *)(puVar4 + -0x6dae)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x6dae)" (( "(") (binary_expression "puVar4 + -0x6dae" (identifier "puVar4") (+ "+") (number_literal "-0x6dae")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(undefined2 *)(puVar4 + -0x6daa) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6daa) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6daa)" (* "*") (cast_expression "(undefined2 *)(puVar4 + -0x6daa)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x6daa)" (( "(") (binary_expression "puVar4 + -0x6daa" (identifier "puVar4") (+ "+") (number_literal "-0x6daa")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(undefined2 *)(puVar4 + -0x6da6) = 8;" (assignment_expression "*(undefined2 *)(puVar4 + -0x6da6) = 8" (pointer_expression "*(undefined2 *)(puVar4 + -0x6da6)" (* "*") (cast_expression "(undefined2 *)(puVar4 + -0x6da6)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x6da6)" (( "(") (binary_expression "puVar4 + -0x6da6" (identifier "puVar4") (+ "+") (number_literal "-0x6da6")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(short *)(puVar7 + -0x7348) = sVar1 + 0x98;" (assignment_expression "*(short *)(puVar7 + -0x7348) = sVar1 + 0x98" (pointer_expression "*(short *)(puVar7 + -0x7348)" (* "*") (cast_expression "(short *)(puVar7 + -0x7348)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x7348)" (( "(") (binary_expression "puVar7 + -0x7348" (identifier "puVar7") (+ "+") (number_literal "-0x7348")) () ")")))) (= "=") (binary_expression "sVar1 + 0x98" (identifier "sVar1") (+ "+") (number_literal "0x98"))) (; ";")) (expression_statement "FUN_0001a368(puVar10,0x11f);" (call_expression "FUN_0001a368(puVar10,0x11f)" (identifier "FUN_0001a368") (argument_list "(puVar10,0x11f)" (( "(") (identifier "puVar10") (, ",") (number_literal "0x11f") () ")"))) (; ";")) (expression_statement "puVar15 = (undefined2 *)(puVar5 + -0x729c);" (assignment_expression "puVar15 = (undefined2 *)(puVar5 + -0x729c)" (identifier "puVar15") (= "=") (cast_expression "(undefined2 *)(puVar5 + -0x729c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + -0x729c)" (( "(") (binary_expression "puVar5 + -0x729c" (identifier "puVar5") (+ "+") (number_literal "-0x729c")) () ")")))) (; ";")) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    } while (iVar14 != 0x1e);" (do "do") (compound_statement "{\n      puVar15[1] = 5;\n      iVar14 = iVar13 + 1;\n      uVar8 = bi_reverse(iVar13,5);\n      *puVar15 = uVar8;\n      puVar15 = puVar15 + 2;\n      iVar13 = iVar14;\n    }" ({ "{") (expression_statement "puVar15[1] = 5;" (assignment_expression "puVar15[1] = 5" (subscript_expression "puVar15[1]" (identifier "puVar15") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "5")) (; ";")) (expression_statement "iVar14 = iVar13 + 1;" (assignment_expression "iVar14 = iVar13 + 1" (identifier "iVar14") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar8 = bi_reverse(iVar13,5);" (assignment_expression "uVar8 = bi_reverse(iVar13,5)" (identifier "uVar8") (= "=") (call_expression "bi_reverse(iVar13,5)" (identifier "bi_reverse") (argument_list "(iVar13,5)" (( "(") (identifier "iVar13") (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "*puVar15 = uVar8;" (assignment_expression "*puVar15 = uVar8" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" (identifier "puVar15") (= "=") (binary_expression "puVar15 + 2" (identifier "puVar15") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar13 = iVar14;" (assignment_expression "iVar13 = iVar14" (identifier "iVar13") (= "=") (identifier "iVar14")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar14 != 0x1e)" (( "(") (binary_expression "iVar14 != 0x1e" (identifier "iVar14") (!= "!=") (number_literal "0x1e")) () ")")) (; ";")) (expression_statement "FUN_0001a030();" (call_expression "FUN_0001a030()" (identifier "FUN_0001a030") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) 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: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_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: (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)))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (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)))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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)))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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)))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement))) (return_statement))))

void MASKED(undefined4 param_1)

{
  short sVar1;
  short sVar2;
  short sVar3;
  undefined *puVar4;
  undefined *puVar5;
  undefined1 *puVar6;
  undefined *puVar7;
  undefined2 uVar8;
  undefined1 *puVar9;
  undefined *puVar10;
  undefined2 *puVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  undefined2 *puVar15;
  uint *puVar16;
  int *piVar17;
  int *piVar18;
  
  puVar4 = PTR_DAT_00036388;
  *(undefined4 *)(PTR_DAT_00036388 + 0x6d50) = param_1;
  puVar5 = PTR_DAT_000364c4;
  *(undefined4 *)(puVar4 + 0x6d5c) = 0;
  *(undefined4 *)(puVar4 + 0x6d58) = 0;
  puVar4 = PTR_DAT_00036388;
  sVar1 = *(short *)(puVar5 + -0x729a);
  *(undefined4 *)(PTR_DAT_00036388 + 0x6d64) = 0;
  *(undefined4 *)(puVar4 + 28000) = 0;
  puVar4 = PTR_DAT_000364c4;
  if (sVar1 == 0) {
    iVar14 = 0;
    iVar13 = 0;
    piVar17 = (int *)(PTR_DAT_00036388 + 0x7df8);
    puVar16 = (uint *)(PTR_DAT_00036388 + 0x6244);
    do {
      iVar12 = 1 << (*puVar16 & 0x1f);
      *piVar17 = iVar13;
      if (0 < iVar12) {
        puVar6 = puVar4 + iVar13 + -0x7f94;
        puVar9 = puVar6 + iVar12;
        do {
          *puVar6 = (char)iVar14;
          puVar6 = puVar6 + 1;
        } while (puVar6 != puVar9);
        iVar13 = iVar13 + iVar12;
      }
      puVar7 = PTR_DAT_00036388;
      iVar14 = iVar14 + 1;
      piVar17 = piVar17 + 1;
      puVar16 = puVar16 + 1;
    } while (iVar14 != 0x1c);
    iVar12 = 0;
    iVar14 = 0;
    puVar4[iVar13 + -0x7f95] = 0x1c;
    piVar17 = (int *)(puVar7 + 0x7d80);
    puVar16 = (uint *)(puVar7 + 0x61cc);
    do {
      iVar13 = 1 << (*puVar16 & 0x1f);
      *piVar17 = iVar12;
      if (0 < iVar13) {
        puVar6 = puVar7 + iVar12 + 0x7e6c;
        puVar9 = puVar6 + iVar13;
        do {
          *puVar6 = (char)iVar14;
          puVar6 = puVar6 + 1;
        } while (puVar6 != puVar9);
        iVar12 = iVar12 + iVar13;
      }
      puVar4 = PTR_DAT_00036388;
      iVar14 = iVar14 + 1;
      piVar17 = piVar17 + 1;
      puVar16 = puVar16 + 1;
    } while (iVar14 != 0x10);
    iVar12 = iVar12 >> 7;
    piVar18 = (int *)(PTR_DAT_00036388 + 0x7dc0);
    piVar17 = (int *)(PTR_DAT_00036388 + 0x620c);
    iVar13 = 0x10;
    do {
      iVar14 = 1 << (*piVar17 - 7U & 0x1f);
      *piVar18 = iVar12 << 7;
      if (0 < iVar14) {
        puVar7 = puVar4 + iVar12 + 0x7e6c;
        puVar10 = puVar7 + iVar14;
        do {
          puVar7[0x100] = (char)iVar13;
          puVar7 = puVar7 + 1;
        } while (puVar7 != puVar10);
        iVar12 = iVar12 + iVar14;
      }
      puVar7 = PTR_DAT_000364c4;
      iVar13 = iVar13 + 1;
      piVar18 = piVar18 + 1;
      piVar17 = piVar17 + 1;
    } while (iVar13 != 0x1e);
    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7358);
    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x7338);
    do {
      *puVar15 = 0;
      puVar4 = PTR_DAT_000364c4;
      puVar15 = puVar15 + 1;
    } while (puVar15 != puVar11);
    sVar1 = *(short *)(puVar7 + -0x7348);
    puVar10 = PTR_DAT_000364c4 + -0x7224;
    puVar15 = (undefined2 *)(PTR_DAT_000364c4 + -0x7222);
    puVar11 = (undefined2 *)(PTR_DAT_000364c4 + -0x6fe2);
    do {
      *puVar15 = 8;
      puVar15 = puVar15 + 2;
    } while (puVar15 != puVar11);
    sVar2 = *(short *)(puVar7 + -0x7346);
    puVar11 = (undefined2 *)(puVar4 + -0x6e22);
    do {
      *puVar15 = 9;
      puVar15 = puVar15 + 2;
    } while (puVar11 != puVar15);
    sVar3 = *(short *)(puVar7 + -0x734a);
    *(short *)(puVar7 + -0x7346) = sVar2 + 0x70;
    do {
      *puVar11 = 7;
      puVar11 = puVar11 + 2;
    } while ((undefined2 *)(puVar4 + -0x6dc2) != puVar11);
    *(undefined2 *)(puVar4 + -0x6dc2) = 8;
    *(short *)(puVar7 + -0x734a) = sVar3 + 0x18;
    *(undefined2 *)(puVar4 + -0x6dbe) = 8;
    *(undefined2 *)(puVar4 + -0x6dba) = 8;
    *(undefined2 *)(puVar4 + -0x6db6) = 8;
    *(undefined2 *)(puVar4 + -0x6db2) = 8;
    *(undefined2 *)(puVar4 + -0x6dae) = 8;
    *(undefined2 *)(puVar4 + -0x6daa) = 8;
    *(undefined2 *)(puVar4 + -0x6da6) = 8;
    *(short *)(puVar7 + -0x7348) = sVar1 + 0x98;
    FUN_0001a368(puVar10,0x11f);
    puVar15 = (undefined2 *)(puVar5 + -0x729c);
    iVar13 = 0;
    do {
      puVar15[1] = 5;
      iVar14 = iVar13 + 1;
      uVar8 = bi_reverse(iVar13,5);
      *puVar15 = uVar8;
      puVar15 = puVar15 + 2;
      iVar13 = iVar14;
    } while (iVar14 != 0x1e);
    FUN_0001a030();
    return;
  }
  return;
}

