
void ct_init(ush *attr,int *methodp)

{
  short sVar1;
  short sVar2;
  undefined *puVar3;
  int iVar4;
  undefined *puVar5;
  undefined2 *puVar6;
  uint uVar7;
  int iVar8;
  undefined2 *puVar9;
  undefined *puVar10;
  ct_data *tree;
  int iVar11;
  uint *puVar12;
  int *piVar13;
  int *piVar14;
  uint code;
  
  *(ush **)(PTR_DAT_00037388 + 0x7d50) = attr;
  puVar5 = PTR_DAT_00037388;
  *(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;
  *(undefined4 *)(puVar5 + 0x7d58) = 0;
  puVar5 = PTR_DAT_00037388;
  *(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;
  *(undefined4 *)(puVar5 + 0x7d60) = 0;
  puVar5 = PTR_DAT_000374c4;
  if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {
    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);
    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);
    iVar8 = 0;
    iVar4 = 0;
    do {
      *piVar13 = iVar4;
      iVar11 = 1 << (*puVar12 & 0x1f);
      if (0 < iVar11) {
        puVar3 = puVar5 + iVar4 + -0x6f94;
        puVar10 = puVar3 + iVar11;
        do {
          *puVar3 = (char)iVar8;
          puVar3 = puVar3 + 1;
        } while (puVar3 != puVar10);
        iVar4 = iVar4 + iVar11;
      }
      iVar8 = iVar8 + 1;
      piVar13 = piVar13 + 1;
      puVar12 = puVar12 + 1;
    } while (iVar8 != 0x1c);
    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;
    puVar5 = PTR_DAT_000374c4;
    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);
    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);
    iVar4 = 0;
    iVar8 = 0;
    do {
      *piVar13 = iVar4;
      iVar11 = 1 << (*puVar12 & 0x1f);
      if (0 < iVar11) {
        puVar3 = puVar5 + iVar4 + -0x7194;
        puVar10 = puVar3 + iVar11;
        do {
          *puVar3 = (char)iVar8;
          puVar3 = puVar3 + 1;
        } while (puVar3 != puVar10);
        iVar4 = iVar4 + iVar11;
      }
      puVar3 = PTR_DAT_000374c4;
      iVar8 = iVar8 + 1;
      piVar13 = piVar13 + 1;
      puVar12 = puVar12 + 1;
    } while (iVar8 != 0x10);
    iVar4 = iVar4 >> 7;
    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);
    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);
    iVar8 = 0x10;
    do {
      *piVar14 = iVar4 << 7;
      iVar11 = 1 << (*piVar13 - 7U & 0x1f);
      if (0 < iVar11) {
        puVar5 = puVar3 + iVar4 + -0x7194;
        puVar10 = puVar5 + iVar11;
        do {
          puVar5[0x100] = (char)iVar8;
          puVar5 = puVar5 + 1;
        } while (puVar5 != puVar10);
        iVar4 = iVar4 + iVar11;
      }
      iVar8 = iVar8 + 1;
      piVar14 = piVar14 + 1;
      piVar13 = piVar13 + 1;
    } while (iVar8 != 0x1e);
    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);
    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);
    do {
      *puVar6 = 0;
      puVar5 = PTR_DAT_000374c4;
      puVar6 = puVar6 + 1;
    } while (puVar6 != puVar9);
    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);
    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);
    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);
    do {
      *puVar6 = 8;
      puVar6 = puVar6 + 2;
    } while (puVar6 != puVar9);
    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);
    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);
    do {
      *puVar6 = 9;
      puVar3 = PTR_DAT_000374c4;
      puVar6 = puVar6 + 2;
    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));
    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;
    sVar2 = *(short *)(puVar3 + -0x634a);
    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);
    do {
      *puVar6 = 7;
      puVar3 = PTR_DAT_000374c4;
      puVar6 = puVar6 + 2;
    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);
    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;
    puVar5 = PTR_DAT_000374c4;
    tree = (ct_data *)(PTR_DAT_000374c4 + -0x6224);
    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;
    *(undefined2 *)(puVar5 + -0x5dbe) = 8;
    *(undefined2 *)(puVar5 + -0x5dba) = 8;
    *(undefined2 *)(puVar5 + -0x5db6) = 8;
    *(undefined2 *)(puVar5 + -0x5db2) = 8;
    *(undefined2 *)(puVar5 + -0x5dae) = 8;
    *(undefined2 *)(puVar5 + -0x5daa) = 8;
    *(undefined2 *)(puVar5 + -0x5da6) = 8;
    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;
    gen_codes(tree,0x11f);
    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);
    code = 0;
    do {
      puVar6[1] = 5;
      uVar7 = bi_reverse(code,5);
      *puVar6 = (short)uVar7;
      code = code + 1;
      puVar6 = puVar6 + 2;
    } while (code != 0x1e);
    init_block();
  }
  return;
}



void ct_init(undefined4 param_1)

{
  short sVar1;
  short sVar2;
  undefined *puVar3;
  int iVar4;
  undefined *puVar5;
  undefined2 *puVar6;
  undefined2 uVar7;
  int iVar8;
  undefined2 *puVar9;
  undefined *puVar10;
  int iVar11;
  uint *puVar12;
  int *piVar13;
  int *piVar14;
  
  *(undefined4 *)(PTR_DAT_00037388 + 0x7d50) = param_1;
  puVar5 = PTR_DAT_00037388;
  *(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;
  *(undefined4 *)(puVar5 + 0x7d58) = 0;
  puVar5 = PTR_DAT_00037388;
  *(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;
  *(undefined4 *)(puVar5 + 0x7d60) = 0;
  puVar5 = PTR_DAT_000374c4;
  if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {
    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);
    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);
    iVar8 = 0;
    iVar4 = 0;
    do {
      *piVar13 = iVar4;
      iVar11 = 1 << (*puVar12 & 0x1f);
      if (0 < iVar11) {
        puVar3 = puVar5 + iVar4 + -0x6f94;
        puVar10 = puVar3 + iVar11;
        do {
          *puVar3 = (char)iVar8;
          puVar3 = puVar3 + 1;
        } while (puVar3 != puVar10);
        iVar4 = iVar4 + iVar11;
      }
      iVar8 = iVar8 + 1;
      piVar13 = piVar13 + 1;
      puVar12 = puVar12 + 1;
    } while (iVar8 != 0x1c);
    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;
    puVar5 = PTR_DAT_000374c4;
    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);
    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);
    iVar4 = 0;
    iVar8 = 0;
    do {
      *piVar13 = iVar4;
      iVar11 = 1 << (*puVar12 & 0x1f);
      if (0 < iVar11) {
        puVar3 = puVar5 + iVar4 + -0x7194;
        puVar10 = puVar3 + iVar11;
        do {
          *puVar3 = (char)iVar8;
          puVar3 = puVar3 + 1;
        } while (puVar3 != puVar10);
        iVar4 = iVar4 + iVar11;
      }
      puVar3 = PTR_DAT_000374c4;
      iVar8 = iVar8 + 1;
      piVar13 = piVar13 + 1;
      puVar12 = puVar12 + 1;
    } while (iVar8 != 0x10);
    iVar4 = iVar4 >> 7;
    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);
    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);
    iVar8 = 0x10;
    do {
      *piVar14 = iVar4 << 7;
      iVar11 = 1 << (*piVar13 - 7U & 0x1f);
      if (0 < iVar11) {
        puVar5 = puVar3 + iVar4 + -0x7194;
        puVar10 = puVar5 + iVar11;
        do {
          puVar5[0x100] = (char)iVar8;
          puVar5 = puVar5 + 1;
        } while (puVar5 != puVar10);
        iVar4 = iVar4 + iVar11;
      }
      iVar8 = iVar8 + 1;
      piVar14 = piVar14 + 1;
      piVar13 = piVar13 + 1;
    } while (iVar8 != 0x1e);
    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);
    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);
    do {
      *puVar6 = 0;
      puVar5 = PTR_DAT_000374c4;
      puVar6 = puVar6 + 1;
    } while (puVar6 != puVar9);
    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);
    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);
    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);
    do {
      *puVar6 = 8;
      puVar6 = puVar6 + 2;
    } while (puVar6 != puVar9);
    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);
    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);
    do {
      *puVar6 = 9;
      puVar3 = PTR_DAT_000374c4;
      puVar6 = puVar6 + 2;
    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));
    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;
    sVar2 = *(short *)(puVar3 + -0x634a);
    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);
    do {
      *puVar6 = 7;
      puVar3 = PTR_DAT_000374c4;
      puVar6 = puVar6 + 2;
    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);
    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;
    puVar5 = PTR_DAT_000374c4;
    puVar10 = PTR_DAT_000374c4 + -0x6224;
    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;
    *(undefined2 *)(puVar5 + -0x5dbe) = 8;
    *(undefined2 *)(puVar5 + -0x5dba) = 8;
    *(undefined2 *)(puVar5 + -0x5db6) = 8;
    *(undefined2 *)(puVar5 + -0x5db2) = 8;
    *(undefined2 *)(puVar5 + -0x5dae) = 8;
    *(undefined2 *)(puVar5 + -0x5daa) = 8;
    *(undefined2 *)(puVar5 + -0x5da6) = 8;
    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;
    FUN_0001ad00(puVar10,0x11f);
    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);
    iVar4 = 0;
    do {
      puVar6[1] = 5;
      uVar7 = bi_reverse(iVar4,5);
      *puVar6 = uVar7;
      iVar4 = iVar4 + 1;
      puVar6 = puVar6 + 2;
    } while (iVar4 != 0x1e);
    FUN_0001a9d0();
  }
  return;
}


lui gp,0x2
addiu gp,gp,0x3a24
addu gp,gp,t9
addiu sp,sp,-0x30
sw ra,0x2c(sp)
sw s3,0x28(sp)
sw s2,0x24(sp)
sw s1,0x20(sp)
sw s0,0x1c(sp)
sw gp,0x10(sp)
lw v0,-0x7fd8(gp)
sw a0,0x7d50(v0)
lw v0,-0x7fd8(gp)
or a1,zero,zero
or a0,zero,zero
sw a1,0x7d5c(v0)
sw a0,0x7d58(v0)
lw v0,-0x7fd8(gp)
sw a1,0x7d64(v0)
sw a0,0x7d60(v0)
lw v0,-0x7e9c(gp)
lhu v0,-0x629a(v0)
bne v0,zero,0x0001bc48
_lw a3,-0x7e9c(gp)
addiu a3,a3,-0x7208
lw a2,-0x7fd8(gp)
addiu a2,a2,0x7244
or v1,zero,zero
li t2,0x1
lw t3,-0x7e9c(gp)
addiu t3,t3,-0x6f94
b 0x0001b9d0
_li t1,0x1c
addiu v1,v1,0x1
addiu a3,a3,0x4
beq v1,t1,0x0001ba04
_addiu a2,a2,0x4
sw v0,0x0(a3)
lw a1,0x0(a2)
sllv a1,t2,a1
blez a1,0x0001b9c0
_or t0,v0,zero
addu v0,t3,v0
addu a0,v0,a1
sb v1,0x0(v0)
addiu v0,v0,0x1
bne v0,a0,0x0001b9ec
_nop
b 0x0001b9c0
_addu v0,t0,a1
lw v1,-0x7e9c(gp)
addiu v1,v1,-0x6f94
addu v0,v0,v1
li v1,0x1c
sb v1,-0x1(v0)
lw a3,-0x7e9c(gp)
addiu a3,a3,-0x7280
lw a2,-0x7fd8(gp)
addiu a2,a2,0x71cc
or v0,zero,zero
or v1,zero,zero
li t3,0x1
lw t2,-0x7e9c(gp)
addiu t2,t2,-0x7194
b 0x0001ba54
_li t1,0x10
addiu v1,v1,0x1
addiu a3,a3,0x4
beq v1,t1,0x0001ba88
_addiu a2,a2,0x4
sw v0,0x0(a3)
lw a1,0x0(a2)
sllv a1,t3,a1
blez a1,0x0001ba44
_or t0,v0,zero
addu v0,t2,v0
addu a0,v0,a1
sb v1,0x0(v0)
addiu v0,v0,0x1
bne v0,a0,0x0001ba70
_nop
b 0x0001ba44
_addu v0,t0,a1
sra v0,v0,0x7
lw a3,-0x7e9c(gp)
addiu a3,a3,-0x7240
lw a2,-0x7fd8(gp)
addiu a2,a2,0x720c
li t3,0x1
lw t1,-0x7e9c(gp)
addiu t1,t1,-0x7194
li t2,0x1e
sll a0,v0,0x7
sw a0,0x0(a3)
lw a1,0x0(a2)
addiu a1,a1,-0x7
sllv a1,t3,a1
blez a1,0x0001bae4
_or t0,v0,zero
addu v0,t1,v0
addu a0,v0,a1
sb v1,0x100(v0)
addiu v0,v0,0x1
bne v0,a0,0x0001bad0
_nop
addu v0,t0,a1
addiu v1,v1,0x1
addiu a3,a3,0x4
bne v1,t2,0x0001baac
_addiu a2,a2,0x4
lw v0,-0x7e9c(gp)
addiu v0,v0,-0x6358
addiu v1,v0,0x20
sh zero,0x0(v0)
addiu v0,v0,0x2
bne v0,v1,0x0001bb00
_nop
lw v0,-0x7e9c(gp)
lhu a2,-0x6348(v0)
lw v0,-0x7e9c(gp)
addiu v0,v0,-0x6222
lw v1,-0x7e9c(gp)
addiu a1,v1,-0x6224
addiu a0,a1,0x242
li v1,0x8
sh v1,0x0(v0)
addiu v0,v0,0x4
bne v0,a0,0x0001bb30
_nop
lw v0,-0x7e9c(gp)
lhu a3,-0x6346(v0)
lw v0,-0x7e9c(gp)
addiu v0,v0,-0x5fe2
addiu a0,a1,0x402
li v1,0x9
sh v1,0x0(v0)
addiu v0,v0,0x4
bne v0,a0,0x0001bb58
_nop
lw v0,-0x7e9c(gp)
addiu v0,v0,-0x6358
addiu v1,a3,0x70
sh v1,0x12(v0)
lhu a3,0xe(v0)
lw v0,-0x7e9c(gp)
addiu v0,v0,-0x5e22
addiu v1,a1,0x462
li a0,0x7
sh a0,0x0(v0)
addiu v0,v0,0x4
bne v1,v0,0x0001bb8c
_li a1,0x11f
lw v1,-0x7e9c(gp)
addiu v1,v1,-0x6358
addiu v0,a3,0x18
sh v0,0xe(v1)
lw a0,-0x7e9c(gp)
addiu a0,a0,-0x6224
li v0,0x8
sh v0,0x462(a0)
sh v0,0x466(a0)
sh v0,0x46a(a0)
sh v0,0x46e(a0)
sh v0,0x472(a0)
sh v0,0x476(a0)
sh v0,0x47a(a0)
sh v0,0x47e(a0)
addiu v0,a2,0x98
sh v0,0x10(v1)
lw t9,-0x7fc8(gp)
addiu t9,t9,-0x5300
bal 0x0001ad00
_nop
lw gp,0x10(sp)
lw s0,-0x7e9c(gp)
addiu s0,s0,-0x629c
or s1,zero,zero
li s3,0x5
li s2,0x1e
sh s3,0x2(s0)
li a1,0x5
or a0,s1,zero
lw t9,-0x7e98(gp)
bal 0x00012734
_nop
lw gp,0x10(sp)
sh v0,0x0(s0)
addiu s1,s1,0x1
bne s1,s2,0x0001bc08
_addiu s0,s0,0x4
lw t9,-0x7fc8(gp)
addiu t9,t9,-0x5630
bal 0x0001a9d0
_nop
lw gp,0x10(sp)
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  undefined *puVar3;\n  int iVar4;\n  undefined *puVar5;\n  undefined2 *puVar6;\n  undefined2 uVar7;\n  int iVar8;\n  undefined2 *puVar9;\n  undefined *puVar10;\n  int iVar11;\n  uint *puVar12;\n  int *piVar13;\n  int *piVar14;\n  \n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d50) = param_1;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;\n  *(undefined4 *)(puVar5 + 0x7d58) = 0;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;\n  *(undefined4 *)(puVar5 + 0x7d60) = 0;\n  puVar5 = PTR_DAT_000374c4;\n  if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    puVar10 = PTR_DAT_000374c4 + -0x6224;\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    FUN_0001ad00(puVar10,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    iVar4 = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);\n    FUN_0001a9d0();\n  }\n  return;\n}\n\n" (function_definition "void ct_init(undefined4 param_1)\n\n{\n  short sVar1;\n  short sVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined *puVar5;\n  undefined2 *puVar6;\n  undefined2 uVar7;\n  int iVar8;\n  undefined2 *puVar9;\n  undefined *puVar10;\n  int iVar11;\n  uint *puVar12;\n  int *piVar13;\n  int *piVar14;\n  \n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d50) = param_1;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;\n  *(undefined4 *)(puVar5 + 0x7d58) = 0;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;\n  *(undefined4 *)(puVar5 + 0x7d60) = 0;\n  puVar5 = PTR_DAT_000374c4;\n  if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    puVar10 = PTR_DAT_000374c4 + -0x6224;\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    FUN_0001ad00(puVar10,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    iVar4 = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);\n    FUN_0001a9d0();\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  undefined *puVar3;\n  int iVar4;\n  undefined *puVar5;\n  undefined2 *puVar6;\n  undefined2 uVar7;\n  int iVar8;\n  undefined2 *puVar9;\n  undefined *puVar10;\n  int iVar11;\n  uint *puVar12;\n  int *piVar13;\n  int *piVar14;\n  \n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d50) = param_1;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;\n  *(undefined4 *)(puVar5 + 0x7d58) = 0;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;\n  *(undefined4 *)(puVar5 + 0x7d60) = 0;\n  puVar5 = PTR_DAT_000374c4;\n  if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    puVar10 = PTR_DAT_000374c4 + -0x6224;\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    FUN_0001ad00(puVar10,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    iVar4 = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);\n    FUN_0001a9d0();\n  }\n  return;\n}" { (declaration "short sVar1;" (sized_type_specifier "short" short) identifier ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined2 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined2 uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined2 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (expression_statement "*(undefined4 *)(PTR_DAT_00037388 + 0x7d50) = param_1;" (assignment_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d50) = param_1" (pointer_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d50)" * (cast_expression "(undefined4 *)(PTR_DAT_00037388 + 0x7d50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x7d50)" ( (binary_expression "PTR_DAT_00037388 + 0x7d50" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar5 = PTR_DAT_00037388;" (assignment_expression "puVar5 = PTR_DAT_00037388" identifier = identifier) ;) (expression_statement "*(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;" (assignment_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0" (pointer_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d5c)" * (cast_expression "(undefined4 *)(PTR_DAT_00037388 + 0x7d5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x7d5c)" ( (binary_expression "PTR_DAT_00037388 + 0x7d5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar5 + 0x7d58) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + 0x7d58) = 0" (pointer_expression "*(undefined4 *)(puVar5 + 0x7d58)" * (cast_expression "(undefined4 *)(puVar5 + 0x7d58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x7d58)" ( (binary_expression "puVar5 + 0x7d58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar5 = PTR_DAT_00037388;" (assignment_expression "puVar5 = PTR_DAT_00037388" identifier = identifier) ;) (expression_statement "*(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;" (assignment_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0" (pointer_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d64)" * (cast_expression "(undefined4 *)(PTR_DAT_00037388 + 0x7d64)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x7d64)" ( (binary_expression "PTR_DAT_00037388 + 0x7d64" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar5 + 0x7d60) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + 0x7d60) = 0" (pointer_expression "*(undefined4 *)(puVar5 + 0x7d60)" * (cast_expression "(undefined4 *)(puVar5 + 0x7d60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x7d60)" ( (binary_expression "puVar5 + 0x7d60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar5 = PTR_DAT_000374c4;" (assignment_expression "puVar5 = PTR_DAT_000374c4" identifier = identifier) ;) (if_statement "if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    puVar10 = PTR_DAT_000374c4 + -0x6224;\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    FUN_0001ad00(puVar10,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    iVar4 = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);\n    FUN_0001a9d0();\n  }" if (parenthesized_expression "(*(short *)(PTR_DAT_000374c4 + -0x629a) == 0)" ( (binary_expression "*(short *)(PTR_DAT_000374c4 + -0x629a) == 0" (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x629a)" * (cast_expression "(short *)(PTR_DAT_000374c4 + -0x629a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x629a)" ( (binary_expression "PTR_DAT_000374c4 + -0x629a" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    puVar10 = PTR_DAT_000374c4 + -0x6224;\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    FUN_0001ad00(puVar10,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    iVar4 = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);\n    FUN_0001a9d0();\n  }" { (expression_statement "piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);" (assignment_expression "piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208)" identifier = (cast_expression "(int *)(PTR_DAT_000374c4 + -0x7208)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x7208)" ( (binary_expression "PTR_DAT_000374c4 + -0x7208" identifier + number_literal) )))) ;) (expression_statement "puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);" (assignment_expression "puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244)" identifier = (cast_expression "(uint *)(PTR_DAT_00037388 + 0x7244)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x7244)" ( (binary_expression "PTR_DAT_00037388 + 0x7244" identifier + number_literal) )))) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);" do (compound_statement "{\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    }" { (expression_statement "*piVar13 = iVar4;" (assignment_expression "*piVar13 = iVar4" (pointer_expression "*piVar13" * identifier) = identifier) ;) (expression_statement "iVar11 = 1 << (*puVar12 & 0x1f);" (assignment_expression "iVar11 = 1 << (*puVar12 & 0x1f)" identifier = (binary_expression "1 << (*puVar12 & 0x1f)" number_literal << (parenthesized_expression "(*puVar12 & 0x1f)" ( (binary_expression "*puVar12 & 0x1f" (pointer_expression "*puVar12" * identifier) & number_literal) )))) ;) (if_statement "if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" { (expression_statement "puVar3 = puVar5 + iVar4 + -0x6f94;" (assignment_expression "puVar3 = puVar5 + iVar4 + -0x6f94" identifier = (binary_expression "puVar5 + iVar4 + -0x6f94" (binary_expression "puVar5 + iVar4" identifier + identifier) + number_literal)) ;) (expression_statement "puVar10 = puVar3 + iVar11;" (assignment_expression "puVar10 = puVar3 + iVar11" identifier = (binary_expression "puVar3 + iVar11" identifier + identifier)) ;) (do_statement "do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);" do (compound_statement "{\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        }" { (expression_statement "*puVar3 = (char)iVar8;" (assignment_expression "*puVar3 = (char)iVar8" (pointer_expression "*puVar3" * identifier) = (cast_expression "(char)iVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 != puVar10)" ( (binary_expression "puVar3 != puVar10" identifier != identifier) )) ;) (expression_statement "iVar4 = iVar4 + iVar11;" (assignment_expression "iVar4 = iVar4 + iVar11" identifier = (binary_expression "iVar4 + iVar11" identifier + identifier)) ;) })) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != 0x1c)" ( (binary_expression "iVar8 != 0x1c" identifier != number_literal) )) ;) (expression_statement "PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;" (assignment_expression "PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c" (subscript_expression "PTR_DAT_000374c4[iVar4 + -0x6f95]" identifier [ (binary_expression "iVar4 + -0x6f95" identifier + number_literal) ]) = number_literal) ;) (expression_statement "puVar5 = PTR_DAT_000374c4;" (assignment_expression "puVar5 = PTR_DAT_000374c4" identifier = identifier) ;) (expression_statement "piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);" (assignment_expression "piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280)" identifier = (cast_expression "(int *)(PTR_DAT_000374c4 + -0x7280)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x7280)" ( (binary_expression "PTR_DAT_000374c4 + -0x7280" identifier + number_literal) )))) ;) (expression_statement "puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);" (assignment_expression "puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc)" identifier = (cast_expression "(uint *)(PTR_DAT_00037388 + 0x71cc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x71cc)" ( (binary_expression "PTR_DAT_00037388 + 0x71cc" identifier + number_literal) )))) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);" do (compound_statement "{\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    }" { (expression_statement "*piVar13 = iVar4;" (assignment_expression "*piVar13 = iVar4" (pointer_expression "*piVar13" * identifier) = identifier) ;) (expression_statement "iVar11 = 1 << (*puVar12 & 0x1f);" (assignment_expression "iVar11 = 1 << (*puVar12 & 0x1f)" identifier = (binary_expression "1 << (*puVar12 & 0x1f)" number_literal << (parenthesized_expression "(*puVar12 & 0x1f)" ( (binary_expression "*puVar12 & 0x1f" (pointer_expression "*puVar12" * identifier) & number_literal) )))) ;) (if_statement "if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" { (expression_statement "puVar3 = puVar5 + iVar4 + -0x7194;" (assignment_expression "puVar3 = puVar5 + iVar4 + -0x7194" identifier = (binary_expression "puVar5 + iVar4 + -0x7194" (binary_expression "puVar5 + iVar4" identifier + identifier) + number_literal)) ;) (expression_statement "puVar10 = puVar3 + iVar11;" (assignment_expression "puVar10 = puVar3 + iVar11" identifier = (binary_expression "puVar3 + iVar11" identifier + identifier)) ;) (do_statement "do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);" do (compound_statement "{\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        }" { (expression_statement "*puVar3 = (char)iVar8;" (assignment_expression "*puVar3 = (char)iVar8" (pointer_expression "*puVar3" * identifier) = (cast_expression "(char)iVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 != puVar10)" ( (binary_expression "puVar3 != puVar10" identifier != identifier) )) ;) (expression_statement "iVar4 = iVar4 + iVar11;" (assignment_expression "iVar4 = iVar4 + iVar11" identifier = (binary_expression "iVar4 + iVar11" identifier + identifier)) ;) })) (expression_statement "puVar3 = PTR_DAT_000374c4;" (assignment_expression "puVar3 = PTR_DAT_000374c4" identifier = identifier) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != 0x10)" ( (binary_expression "iVar8 != 0x10" identifier != number_literal) )) ;) (expression_statement "iVar4 = iVar4 >> 7;" (assignment_expression "iVar4 = iVar4 >> 7" identifier = (binary_expression "iVar4 >> 7" identifier >> number_literal)) ;) (expression_statement "piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);" (assignment_expression "piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240)" identifier = (cast_expression "(int *)(PTR_DAT_000374c4 + -0x7240)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x7240)" ( (binary_expression "PTR_DAT_000374c4 + -0x7240" identifier + number_literal) )))) ;) (expression_statement "piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);" (assignment_expression "piVar13 = (int *)(PTR_DAT_00037388 + 0x720c)" identifier = (cast_expression "(int *)(PTR_DAT_00037388 + 0x720c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x720c)" ( (binary_expression "PTR_DAT_00037388 + 0x720c" identifier + number_literal) )))) ;) (expression_statement "iVar8 = 0x10;" (assignment_expression "iVar8 = 0x10" identifier = number_literal) ;) (do_statement "do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);" do (compound_statement "{\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    }" { (expression_statement "*piVar14 = iVar4 << 7;" (assignment_expression "*piVar14 = iVar4 << 7" (pointer_expression "*piVar14" * identifier) = (binary_expression "iVar4 << 7" identifier << number_literal)) ;) (expression_statement "iVar11 = 1 << (*piVar13 - 7U & 0x1f);" (assignment_expression "iVar11 = 1 << (*piVar13 - 7U & 0x1f)" identifier = (binary_expression "1 << (*piVar13 - 7U & 0x1f)" number_literal << (parenthesized_expression "(*piVar13 - 7U & 0x1f)" ( (binary_expression "*piVar13 - 7U & 0x1f" (binary_expression "*piVar13 - 7U" (pointer_expression "*piVar13" * identifier) - number_literal) & number_literal) )))) ;) (if_statement "if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" { (expression_statement "puVar5 = puVar3 + iVar4 + -0x7194;" (assignment_expression "puVar5 = puVar3 + iVar4 + -0x7194" identifier = (binary_expression "puVar3 + iVar4 + -0x7194" (binary_expression "puVar3 + iVar4" identifier + identifier) + number_literal)) ;) (expression_statement "puVar10 = puVar5 + iVar11;" (assignment_expression "puVar10 = puVar5 + iVar11" identifier = (binary_expression "puVar5 + iVar11" identifier + identifier)) ;) (do_statement "do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);" do (compound_statement "{\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        }" { (expression_statement "puVar5[0x100] = (char)iVar8;" (assignment_expression "puVar5[0x100] = (char)iVar8" (subscript_expression "puVar5[0x100]" identifier [ number_literal ]) = (cast_expression "(char)iVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != puVar10)" ( (binary_expression "puVar5 != puVar10" identifier != identifier) )) ;) (expression_statement "iVar4 = iVar4 + iVar11;" (assignment_expression "iVar4 = iVar4 + iVar11" identifier = (binary_expression "iVar4 + iVar11" identifier + identifier)) ;) })) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != 0x1e)" ( (binary_expression "iVar8 != 0x1e" identifier != number_literal) )) ;) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x6358)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6358)" ( (binary_expression "PTR_DAT_000374c4 + -0x6358" identifier + number_literal) )))) ;) (expression_statement "puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);" (assignment_expression "puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x6338)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6338)" ( (binary_expression "PTR_DAT_000374c4 + -0x6338" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);" do (compound_statement "{\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    }" { (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar5 = PTR_DAT_000374c4;" (assignment_expression "puVar5 = PTR_DAT_000374c4" identifier = 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 "sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);" (assignment_expression "sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348)" identifier = (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x6348)" * (cast_expression "(short *)(PTR_DAT_000374c4 + -0x6348)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6348)" ( (binary_expression "PTR_DAT_000374c4 + -0x6348" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x6222)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6222)" ( (binary_expression "PTR_DAT_000374c4 + -0x6222" identifier + number_literal) )))) ;) (expression_statement "puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);" (assignment_expression "puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x5fe2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x5fe2)" ( (binary_expression "PTR_DAT_000374c4 + -0x5fe2" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);" do (compound_statement "{\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    }" { (expression_statement "*puVar6 = 8;" (assignment_expression "*puVar6 = 8" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" identifier = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != puVar9)" ( (binary_expression "puVar6 != puVar9" identifier != identifier) )) ;) (expression_statement "sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);" (assignment_expression "sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346)" identifier = (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x6346)" * (cast_expression "(short *)(PTR_DAT_000374c4 + -0x6346)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6346)" ( (binary_expression "PTR_DAT_000374c4 + -0x6346" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x5fe2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x5fe2)" ( (binary_expression "PTR_DAT_000374c4 + -0x5fe2" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));" do (compound_statement "{\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    }" { (expression_statement "*puVar6 = 9;" (assignment_expression "*puVar6 = 9" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar3 = PTR_DAT_000374c4;" (assignment_expression "puVar3 = PTR_DAT_000374c4" identifier = identifier) ;) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" identifier = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != (undefined2 *)(puVar5 + -0x5e22))" ( (binary_expression "puVar6 != (undefined2 *)(puVar5 + -0x5e22)" identifier != (cast_expression "(undefined2 *)(puVar5 + -0x5e22)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5e22)" ( (binary_expression "puVar5 + -0x5e22" identifier + number_literal) )))) )) ;) (expression_statement "*(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;" (assignment_expression "*(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70" (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x6346)" * (cast_expression "(short *)(PTR_DAT_000374c4 + -0x6346)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6346)" ( (binary_expression "PTR_DAT_000374c4 + -0x6346" identifier + number_literal) )))) = (binary_expression "sVar2 + 0x70" identifier + number_literal)) ;) (expression_statement "sVar2 = *(short *)(puVar3 + -0x634a);" (assignment_expression "sVar2 = *(short *)(puVar3 + -0x634a)" identifier = (pointer_expression "*(short *)(puVar3 + -0x634a)" * (cast_expression "(short *)(puVar3 + -0x634a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x634a)" ( (binary_expression "puVar3 + -0x634a" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x5e22)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x5e22)" ( (binary_expression "PTR_DAT_000374c4 + -0x5e22" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);" do (compound_statement "{\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    }" { (expression_statement "*puVar6 = 7;" (assignment_expression "*puVar6 = 7" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar3 = PTR_DAT_000374c4;" (assignment_expression "puVar3 = PTR_DAT_000374c4" identifier = identifier) ;) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" identifier = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "((undefined2 *)(puVar5 + -0x5dc2) != puVar6)" ( (binary_expression "(undefined2 *)(puVar5 + -0x5dc2) != puVar6" (cast_expression "(undefined2 *)(puVar5 + -0x5dc2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5dc2)" ( (binary_expression "puVar5 + -0x5dc2" identifier + number_literal) ))) != identifier) )) ;) (expression_statement "*(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;" (assignment_expression "*(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18" (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x634a)" * (cast_expression "(short *)(PTR_DAT_000374c4 + -0x634a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x634a)" ( (binary_expression "PTR_DAT_000374c4 + -0x634a" identifier + number_literal) )))) = (binary_expression "sVar2 + 0x18" identifier + number_literal)) ;) (expression_statement "puVar5 = PTR_DAT_000374c4;" (assignment_expression "puVar5 = PTR_DAT_000374c4" identifier = identifier) ;) (expression_statement "puVar10 = PTR_DAT_000374c4 + -0x6224;" (assignment_expression "puVar10 = PTR_DAT_000374c4 + -0x6224" identifier = (binary_expression "PTR_DAT_000374c4 + -0x6224" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;" (assignment_expression "*(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8" (pointer_expression "*(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2)" * (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x5dc2)" ( (binary_expression "PTR_DAT_000374c4 + -0x5dc2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5dbe) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5dbe) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5dbe)" * (cast_expression "(undefined2 *)(puVar5 + -0x5dbe)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5dbe)" ( (binary_expression "puVar5 + -0x5dbe" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5dba) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5dba) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5dba)" * (cast_expression "(undefined2 *)(puVar5 + -0x5dba)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5dba)" ( (binary_expression "puVar5 + -0x5dba" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5db6) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5db6) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5db6)" * (cast_expression "(undefined2 *)(puVar5 + -0x5db6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5db6)" ( (binary_expression "puVar5 + -0x5db6" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5db2) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5db2) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5db2)" * (cast_expression "(undefined2 *)(puVar5 + -0x5db2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5db2)" ( (binary_expression "puVar5 + -0x5db2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5dae) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5dae) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5dae)" * (cast_expression "(undefined2 *)(puVar5 + -0x5dae)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5dae)" ( (binary_expression "puVar5 + -0x5dae" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5daa) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5daa) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5daa)" * (cast_expression "(undefined2 *)(puVar5 + -0x5daa)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5daa)" ( (binary_expression "puVar5 + -0x5daa" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5da6) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5da6) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5da6)" * (cast_expression "(undefined2 *)(puVar5 + -0x5da6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5da6)" ( (binary_expression "puVar5 + -0x5da6" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(short *)(puVar3 + -0x6348) = sVar1 + 0x98;" (assignment_expression "*(short *)(puVar3 + -0x6348) = sVar1 + 0x98" (pointer_expression "*(short *)(puVar3 + -0x6348)" * (cast_expression "(short *)(puVar3 + -0x6348)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x6348)" ( (binary_expression "puVar3 + -0x6348" identifier + number_literal) )))) = (binary_expression "sVar1 + 0x98" identifier + number_literal)) ;) (expression_statement "FUN_0001ad00(puVar10,0x11f);" (call_expression "FUN_0001ad00(puVar10,0x11f)" identifier (argument_list "(puVar10,0x11f)" ( identifier , number_literal ))) ;) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x629c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x629c)" ( (binary_expression "PTR_DAT_000374c4 + -0x629c" identifier + number_literal) )))) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);" do (compound_statement "{\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    }" { (expression_statement "puVar6[1] = 5;" (assignment_expression "puVar6[1] = 5" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar7 = bi_reverse(iVar4,5);" (assignment_expression "uVar7 = bi_reverse(iVar4,5)" identifier = (call_expression "bi_reverse(iVar4,5)" identifier (argument_list "(iVar4,5)" ( identifier , number_literal )))) ;) (expression_statement "*puVar6 = uVar7;" (assignment_expression "*puVar6 = uVar7" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" identifier = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0x1e)" ( (binary_expression "iVar4 != 0x1e" identifier != number_literal) )) ;) (expression_statement "FUN_0001a9d0();" (call_expression "FUN_0001a9d0()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void ct_init(ush *attr,int *methodp)\n\n{\n  short sVar1;\n  short sVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined *puVar5;\n  undefined2 *puVar6;\n  uint uVar7;\n  int iVar8;\n  undefined2 *puVar9;\n  undefined *puVar10;\n  ct_data *tree;\n  int iVar11;\n  uint *puVar12;\n  int *piVar13;\n  int *piVar14;\n  uint code;\n  \n  *(ush **)(PTR_DAT_00037388 + 0x7d50) = attr;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;\n  *(undefined4 *)(puVar5 + 0x7d58) = 0;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;\n  *(undefined4 *)(puVar5 + 0x7d60) = 0;\n  puVar5 = PTR_DAT_000374c4;\n  if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    tree = (ct_data *)(PTR_DAT_000374c4 + -0x6224);\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    gen_codes(tree,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    code = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(code,5);\n      *puVar6 = (short)uVar7;\n      code = code + 1;\n      puVar6 = puVar6 + 2;\n    } while (code != 0x1e);\n    init_block();\n  }\n  return;\n}\n\n" (function_definition "void ct_init(ush *attr,int *methodp)\n\n{\n  short sVar1;\n  short sVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined *puVar5;\n  undefined2 *puVar6;\n  uint uVar7;\n  int iVar8;\n  undefined2 *puVar9;\n  undefined *puVar10;\n  ct_data *tree;\n  int iVar11;\n  uint *puVar12;\n  int *piVar13;\n  int *piVar14;\n  uint code;\n  \n  *(ush **)(PTR_DAT_00037388 + 0x7d50) = attr;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;\n  *(undefined4 *)(puVar5 + 0x7d58) = 0;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;\n  *(undefined4 *)(puVar5 + 0x7d60) = 0;\n  puVar5 = PTR_DAT_000374c4;\n  if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    tree = (ct_data *)(PTR_DAT_000374c4 + -0x6224);\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    gen_codes(tree,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    code = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(code,5);\n      *puVar6 = (short)uVar7;\n      code = code + 1;\n      puVar6 = puVar6 + 2;\n    } while (code != 0x1e);\n    init_block();\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  undefined *puVar3;\n  int iVar4;\n  undefined *puVar5;\n  undefined2 *puVar6;\n  uint uVar7;\n  int iVar8;\n  undefined2 *puVar9;\n  undefined *puVar10;\n  ct_data *tree;\n  int iVar11;\n  uint *puVar12;\n  int *piVar13;\n  int *piVar14;\n  uint code;\n  \n  *(ush **)(PTR_DAT_00037388 + 0x7d50) = attr;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;\n  *(undefined4 *)(puVar5 + 0x7d58) = 0;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;\n  *(undefined4 *)(puVar5 + 0x7d60) = 0;\n  puVar5 = PTR_DAT_000374c4;\n  if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    tree = (ct_data *)(PTR_DAT_000374c4 + -0x6224);\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    gen_codes(tree,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    code = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(code,5);\n      *puVar6 = (short)uVar7;\n      code = code + 1;\n      puVar6 = puVar6 + 2;\n    } while (code != 0x1e);\n    init_block();\n  }\n  return;\n}" { (declaration "short sVar1;" (sized_type_specifier "short" short) identifier ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined2 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined2 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "ct_data *tree;" type_identifier (pointer_declarator "*tree" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "uint code;" type_identifier identifier ;) (expression_statement "*(ush **)(PTR_DAT_00037388 + 0x7d50) = attr;" (assignment_expression "*(ush **)(PTR_DAT_00037388 + 0x7d50) = attr" (pointer_expression "*(ush **)(PTR_DAT_00037388 + 0x7d50)" * (cast_expression "(ush **)(PTR_DAT_00037388 + 0x7d50)" ( (type_descriptor "ush **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x7d50)" ( (binary_expression "PTR_DAT_00037388 + 0x7d50" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar5 = PTR_DAT_00037388;" (assignment_expression "puVar5 = PTR_DAT_00037388" identifier = identifier) ;) (expression_statement "*(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;" (assignment_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0" (pointer_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d5c)" * (cast_expression "(undefined4 *)(PTR_DAT_00037388 + 0x7d5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x7d5c)" ( (binary_expression "PTR_DAT_00037388 + 0x7d5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar5 + 0x7d58) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + 0x7d58) = 0" (pointer_expression "*(undefined4 *)(puVar5 + 0x7d58)" * (cast_expression "(undefined4 *)(puVar5 + 0x7d58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x7d58)" ( (binary_expression "puVar5 + 0x7d58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar5 = PTR_DAT_00037388;" (assignment_expression "puVar5 = PTR_DAT_00037388" identifier = identifier) ;) (expression_statement "*(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;" (assignment_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0" (pointer_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d64)" * (cast_expression "(undefined4 *)(PTR_DAT_00037388 + 0x7d64)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x7d64)" ( (binary_expression "PTR_DAT_00037388 + 0x7d64" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar5 + 0x7d60) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + 0x7d60) = 0" (pointer_expression "*(undefined4 *)(puVar5 + 0x7d60)" * (cast_expression "(undefined4 *)(puVar5 + 0x7d60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x7d60)" ( (binary_expression "puVar5 + 0x7d60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar5 = PTR_DAT_000374c4;" (assignment_expression "puVar5 = PTR_DAT_000374c4" identifier = identifier) ;) (if_statement "if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    tree = (ct_data *)(PTR_DAT_000374c4 + -0x6224);\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    gen_codes(tree,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    code = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(code,5);\n      *puVar6 = (short)uVar7;\n      code = code + 1;\n      puVar6 = puVar6 + 2;\n    } while (code != 0x1e);\n    init_block();\n  }" if (parenthesized_expression "(*(short *)(PTR_DAT_000374c4 + -0x629a) == 0)" ( (binary_expression "*(short *)(PTR_DAT_000374c4 + -0x629a) == 0" (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x629a)" * (cast_expression "(short *)(PTR_DAT_000374c4 + -0x629a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x629a)" ( (binary_expression "PTR_DAT_000374c4 + -0x629a" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    tree = (ct_data *)(PTR_DAT_000374c4 + -0x6224);\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    gen_codes(tree,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    code = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(code,5);\n      *puVar6 = (short)uVar7;\n      code = code + 1;\n      puVar6 = puVar6 + 2;\n    } while (code != 0x1e);\n    init_block();\n  }" { (expression_statement "piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);" (assignment_expression "piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208)" identifier = (cast_expression "(int *)(PTR_DAT_000374c4 + -0x7208)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x7208)" ( (binary_expression "PTR_DAT_000374c4 + -0x7208" identifier + number_literal) )))) ;) (expression_statement "puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);" (assignment_expression "puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244)" identifier = (cast_expression "(uint *)(PTR_DAT_00037388 + 0x7244)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x7244)" ( (binary_expression "PTR_DAT_00037388 + 0x7244" identifier + number_literal) )))) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);" do (compound_statement "{\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    }" { (expression_statement "*piVar13 = iVar4;" (assignment_expression "*piVar13 = iVar4" (pointer_expression "*piVar13" * identifier) = identifier) ;) (expression_statement "iVar11 = 1 << (*puVar12 & 0x1f);" (assignment_expression "iVar11 = 1 << (*puVar12 & 0x1f)" identifier = (binary_expression "1 << (*puVar12 & 0x1f)" number_literal << (parenthesized_expression "(*puVar12 & 0x1f)" ( (binary_expression "*puVar12 & 0x1f" (pointer_expression "*puVar12" * identifier) & number_literal) )))) ;) (if_statement "if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" { (expression_statement "puVar3 = puVar5 + iVar4 + -0x6f94;" (assignment_expression "puVar3 = puVar5 + iVar4 + -0x6f94" identifier = (binary_expression "puVar5 + iVar4 + -0x6f94" (binary_expression "puVar5 + iVar4" identifier + identifier) + number_literal)) ;) (expression_statement "puVar10 = puVar3 + iVar11;" (assignment_expression "puVar10 = puVar3 + iVar11" identifier = (binary_expression "puVar3 + iVar11" identifier + identifier)) ;) (do_statement "do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);" do (compound_statement "{\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        }" { (expression_statement "*puVar3 = (char)iVar8;" (assignment_expression "*puVar3 = (char)iVar8" (pointer_expression "*puVar3" * identifier) = (cast_expression "(char)iVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 != puVar10)" ( (binary_expression "puVar3 != puVar10" identifier != identifier) )) ;) (expression_statement "iVar4 = iVar4 + iVar11;" (assignment_expression "iVar4 = iVar4 + iVar11" identifier = (binary_expression "iVar4 + iVar11" identifier + identifier)) ;) })) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != 0x1c)" ( (binary_expression "iVar8 != 0x1c" identifier != number_literal) )) ;) (expression_statement "PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;" (assignment_expression "PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c" (subscript_expression "PTR_DAT_000374c4[iVar4 + -0x6f95]" identifier [ (binary_expression "iVar4 + -0x6f95" identifier + number_literal) ]) = number_literal) ;) (expression_statement "puVar5 = PTR_DAT_000374c4;" (assignment_expression "puVar5 = PTR_DAT_000374c4" identifier = identifier) ;) (expression_statement "piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);" (assignment_expression "piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280)" identifier = (cast_expression "(int *)(PTR_DAT_000374c4 + -0x7280)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x7280)" ( (binary_expression "PTR_DAT_000374c4 + -0x7280" identifier + number_literal) )))) ;) (expression_statement "puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);" (assignment_expression "puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc)" identifier = (cast_expression "(uint *)(PTR_DAT_00037388 + 0x71cc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x71cc)" ( (binary_expression "PTR_DAT_00037388 + 0x71cc" identifier + number_literal) )))) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);" do (compound_statement "{\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    }" { (expression_statement "*piVar13 = iVar4;" (assignment_expression "*piVar13 = iVar4" (pointer_expression "*piVar13" * identifier) = identifier) ;) (expression_statement "iVar11 = 1 << (*puVar12 & 0x1f);" (assignment_expression "iVar11 = 1 << (*puVar12 & 0x1f)" identifier = (binary_expression "1 << (*puVar12 & 0x1f)" number_literal << (parenthesized_expression "(*puVar12 & 0x1f)" ( (binary_expression "*puVar12 & 0x1f" (pointer_expression "*puVar12" * identifier) & number_literal) )))) ;) (if_statement "if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" { (expression_statement "puVar3 = puVar5 + iVar4 + -0x7194;" (assignment_expression "puVar3 = puVar5 + iVar4 + -0x7194" identifier = (binary_expression "puVar5 + iVar4 + -0x7194" (binary_expression "puVar5 + iVar4" identifier + identifier) + number_literal)) ;) (expression_statement "puVar10 = puVar3 + iVar11;" (assignment_expression "puVar10 = puVar3 + iVar11" identifier = (binary_expression "puVar3 + iVar11" identifier + identifier)) ;) (do_statement "do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);" do (compound_statement "{\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        }" { (expression_statement "*puVar3 = (char)iVar8;" (assignment_expression "*puVar3 = (char)iVar8" (pointer_expression "*puVar3" * identifier) = (cast_expression "(char)iVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 != puVar10)" ( (binary_expression "puVar3 != puVar10" identifier != identifier) )) ;) (expression_statement "iVar4 = iVar4 + iVar11;" (assignment_expression "iVar4 = iVar4 + iVar11" identifier = (binary_expression "iVar4 + iVar11" identifier + identifier)) ;) })) (expression_statement "puVar3 = PTR_DAT_000374c4;" (assignment_expression "puVar3 = PTR_DAT_000374c4" identifier = identifier) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != 0x10)" ( (binary_expression "iVar8 != 0x10" identifier != number_literal) )) ;) (expression_statement "iVar4 = iVar4 >> 7;" (assignment_expression "iVar4 = iVar4 >> 7" identifier = (binary_expression "iVar4 >> 7" identifier >> number_literal)) ;) (expression_statement "piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);" (assignment_expression "piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240)" identifier = (cast_expression "(int *)(PTR_DAT_000374c4 + -0x7240)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x7240)" ( (binary_expression "PTR_DAT_000374c4 + -0x7240" identifier + number_literal) )))) ;) (expression_statement "piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);" (assignment_expression "piVar13 = (int *)(PTR_DAT_00037388 + 0x720c)" identifier = (cast_expression "(int *)(PTR_DAT_00037388 + 0x720c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x720c)" ( (binary_expression "PTR_DAT_00037388 + 0x720c" identifier + number_literal) )))) ;) (expression_statement "iVar8 = 0x10;" (assignment_expression "iVar8 = 0x10" identifier = number_literal) ;) (do_statement "do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);" do (compound_statement "{\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    }" { (expression_statement "*piVar14 = iVar4 << 7;" (assignment_expression "*piVar14 = iVar4 << 7" (pointer_expression "*piVar14" * identifier) = (binary_expression "iVar4 << 7" identifier << number_literal)) ;) (expression_statement "iVar11 = 1 << (*piVar13 - 7U & 0x1f);" (assignment_expression "iVar11 = 1 << (*piVar13 - 7U & 0x1f)" identifier = (binary_expression "1 << (*piVar13 - 7U & 0x1f)" number_literal << (parenthesized_expression "(*piVar13 - 7U & 0x1f)" ( (binary_expression "*piVar13 - 7U & 0x1f" (binary_expression "*piVar13 - 7U" (pointer_expression "*piVar13" * identifier) - number_literal) & number_literal) )))) ;) (if_statement "if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" { (expression_statement "puVar5 = puVar3 + iVar4 + -0x7194;" (assignment_expression "puVar5 = puVar3 + iVar4 + -0x7194" identifier = (binary_expression "puVar3 + iVar4 + -0x7194" (binary_expression "puVar3 + iVar4" identifier + identifier) + number_literal)) ;) (expression_statement "puVar10 = puVar5 + iVar11;" (assignment_expression "puVar10 = puVar5 + iVar11" identifier = (binary_expression "puVar5 + iVar11" identifier + identifier)) ;) (do_statement "do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);" do (compound_statement "{\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        }" { (expression_statement "puVar5[0x100] = (char)iVar8;" (assignment_expression "puVar5[0x100] = (char)iVar8" (subscript_expression "puVar5[0x100]" identifier [ number_literal ]) = (cast_expression "(char)iVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != puVar10)" ( (binary_expression "puVar5 != puVar10" identifier != identifier) )) ;) (expression_statement "iVar4 = iVar4 + iVar11;" (assignment_expression "iVar4 = iVar4 + iVar11" identifier = (binary_expression "iVar4 + iVar11" identifier + identifier)) ;) })) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != 0x1e)" ( (binary_expression "iVar8 != 0x1e" identifier != number_literal) )) ;) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x6358)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6358)" ( (binary_expression "PTR_DAT_000374c4 + -0x6358" identifier + number_literal) )))) ;) (expression_statement "puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);" (assignment_expression "puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x6338)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6338)" ( (binary_expression "PTR_DAT_000374c4 + -0x6338" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);" do (compound_statement "{\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    }" { (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar5 = PTR_DAT_000374c4;" (assignment_expression "puVar5 = PTR_DAT_000374c4" identifier = 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 "sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);" (assignment_expression "sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348)" identifier = (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x6348)" * (cast_expression "(short *)(PTR_DAT_000374c4 + -0x6348)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6348)" ( (binary_expression "PTR_DAT_000374c4 + -0x6348" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x6222)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6222)" ( (binary_expression "PTR_DAT_000374c4 + -0x6222" identifier + number_literal) )))) ;) (expression_statement "puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);" (assignment_expression "puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x5fe2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x5fe2)" ( (binary_expression "PTR_DAT_000374c4 + -0x5fe2" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);" do (compound_statement "{\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    }" { (expression_statement "*puVar6 = 8;" (assignment_expression "*puVar6 = 8" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" identifier = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != puVar9)" ( (binary_expression "puVar6 != puVar9" identifier != identifier) )) ;) (expression_statement "sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);" (assignment_expression "sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346)" identifier = (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x6346)" * (cast_expression "(short *)(PTR_DAT_000374c4 + -0x6346)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6346)" ( (binary_expression "PTR_DAT_000374c4 + -0x6346" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x5fe2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x5fe2)" ( (binary_expression "PTR_DAT_000374c4 + -0x5fe2" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));" do (compound_statement "{\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    }" { (expression_statement "*puVar6 = 9;" (assignment_expression "*puVar6 = 9" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar3 = PTR_DAT_000374c4;" (assignment_expression "puVar3 = PTR_DAT_000374c4" identifier = identifier) ;) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" identifier = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != (undefined2 *)(puVar5 + -0x5e22))" ( (binary_expression "puVar6 != (undefined2 *)(puVar5 + -0x5e22)" identifier != (cast_expression "(undefined2 *)(puVar5 + -0x5e22)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5e22)" ( (binary_expression "puVar5 + -0x5e22" identifier + number_literal) )))) )) ;) (expression_statement "*(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;" (assignment_expression "*(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70" (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x6346)" * (cast_expression "(short *)(PTR_DAT_000374c4 + -0x6346)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6346)" ( (binary_expression "PTR_DAT_000374c4 + -0x6346" identifier + number_literal) )))) = (binary_expression "sVar2 + 0x70" identifier + number_literal)) ;) (expression_statement "sVar2 = *(short *)(puVar3 + -0x634a);" (assignment_expression "sVar2 = *(short *)(puVar3 + -0x634a)" identifier = (pointer_expression "*(short *)(puVar3 + -0x634a)" * (cast_expression "(short *)(puVar3 + -0x634a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x634a)" ( (binary_expression "puVar3 + -0x634a" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x5e22)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x5e22)" ( (binary_expression "PTR_DAT_000374c4 + -0x5e22" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);" do (compound_statement "{\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    }" { (expression_statement "*puVar6 = 7;" (assignment_expression "*puVar6 = 7" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar3 = PTR_DAT_000374c4;" (assignment_expression "puVar3 = PTR_DAT_000374c4" identifier = identifier) ;) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" identifier = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "((undefined2 *)(puVar5 + -0x5dc2) != puVar6)" ( (binary_expression "(undefined2 *)(puVar5 + -0x5dc2) != puVar6" (cast_expression "(undefined2 *)(puVar5 + -0x5dc2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5dc2)" ( (binary_expression "puVar5 + -0x5dc2" identifier + number_literal) ))) != identifier) )) ;) (expression_statement "*(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;" (assignment_expression "*(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18" (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x634a)" * (cast_expression "(short *)(PTR_DAT_000374c4 + -0x634a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x634a)" ( (binary_expression "PTR_DAT_000374c4 + -0x634a" identifier + number_literal) )))) = (binary_expression "sVar2 + 0x18" identifier + number_literal)) ;) (expression_statement "puVar5 = PTR_DAT_000374c4;" (assignment_expression "puVar5 = PTR_DAT_000374c4" identifier = identifier) ;) (expression_statement "tree = (ct_data *)(PTR_DAT_000374c4 + -0x6224);" (assignment_expression "tree = (ct_data *)(PTR_DAT_000374c4 + -0x6224)" identifier = (cast_expression "(ct_data *)(PTR_DAT_000374c4 + -0x6224)" ( (type_descriptor "ct_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6224)" ( (binary_expression "PTR_DAT_000374c4 + -0x6224" identifier + number_literal) )))) ;) (expression_statement "*(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;" (assignment_expression "*(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8" (pointer_expression "*(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2)" * (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x5dc2)" ( (binary_expression "PTR_DAT_000374c4 + -0x5dc2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5dbe) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5dbe) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5dbe)" * (cast_expression "(undefined2 *)(puVar5 + -0x5dbe)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5dbe)" ( (binary_expression "puVar5 + -0x5dbe" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5dba) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5dba) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5dba)" * (cast_expression "(undefined2 *)(puVar5 + -0x5dba)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5dba)" ( (binary_expression "puVar5 + -0x5dba" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5db6) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5db6) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5db6)" * (cast_expression "(undefined2 *)(puVar5 + -0x5db6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5db6)" ( (binary_expression "puVar5 + -0x5db6" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5db2) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5db2) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5db2)" * (cast_expression "(undefined2 *)(puVar5 + -0x5db2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5db2)" ( (binary_expression "puVar5 + -0x5db2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5dae) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5dae) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5dae)" * (cast_expression "(undefined2 *)(puVar5 + -0x5dae)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5dae)" ( (binary_expression "puVar5 + -0x5dae" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5daa) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5daa) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5daa)" * (cast_expression "(undefined2 *)(puVar5 + -0x5daa)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5daa)" ( (binary_expression "puVar5 + -0x5daa" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5da6) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5da6) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5da6)" * (cast_expression "(undefined2 *)(puVar5 + -0x5da6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5da6)" ( (binary_expression "puVar5 + -0x5da6" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(short *)(puVar3 + -0x6348) = sVar1 + 0x98;" (assignment_expression "*(short *)(puVar3 + -0x6348) = sVar1 + 0x98" (pointer_expression "*(short *)(puVar3 + -0x6348)" * (cast_expression "(short *)(puVar3 + -0x6348)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x6348)" ( (binary_expression "puVar3 + -0x6348" 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 "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x629c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x629c)" ( (binary_expression "PTR_DAT_000374c4 + -0x629c" identifier + number_literal) )))) ;) (expression_statement "code = 0;" (assignment_expression "code = 0" identifier = number_literal) ;) (do_statement "do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(code,5);\n      *puVar6 = (short)uVar7;\n      code = code + 1;\n      puVar6 = puVar6 + 2;\n    } while (code != 0x1e);" do (compound_statement "{\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(code,5);\n      *puVar6 = (short)uVar7;\n      code = code + 1;\n      puVar6 = puVar6 + 2;\n    }" { (expression_statement "puVar6[1] = 5;" (assignment_expression "puVar6[1] = 5" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar7 = bi_reverse(code,5);" (assignment_expression "uVar7 = bi_reverse(code,5)" identifier = (call_expression "bi_reverse(code,5)" identifier (argument_list "(code,5)" ( identifier , number_literal )))) ;) (expression_statement "*puVar6 = (short)uVar7;" (assignment_expression "*puVar6 = (short)uVar7" (pointer_expression "*puVar6" * identifier) = (cast_expression "(short)uVar7" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "code = code + 1;" (assignment_expression "code = code + 1" identifier = (binary_expression "code + 1" identifier + number_literal)) ;) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" identifier = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(code != 0x1e)" ( (binary_expression "code != 0x1e" identifier != number_literal) )) ;) (expression_statement "init_block();" (call_expression "init_block()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void ct_init(undefined4 param_1)\n\n{\n  short sVar1;\n  short sVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined *puVar5;\n  undefined2 *puVar6;\n  undefined2 uVar7;\n  int iVar8;\n  undefined2 *puVar9;\n  undefined *puVar10;\n  int iVar11;\n  uint *puVar12;\n  int *piVar13;\n  int *piVar14;\n  \n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d50) = param_1;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;\n  *(undefined4 *)(puVar5 + 0x7d58) = 0;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;\n  *(undefined4 *)(puVar5 + 0x7d60) = 0;\n  puVar5 = PTR_DAT_000374c4;\n  if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    puVar10 = PTR_DAT_000374c4 + -0x6224;\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    FUN_0001ad00(puVar10,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    iVar4 = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);\n    FUN_0001a9d0();\n  }\n  return;\n}\n\n" (function_definition "void ct_init(undefined4 param_1)\n\n{\n  short sVar1;\n  short sVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined *puVar5;\n  undefined2 *puVar6;\n  undefined2 uVar7;\n  int iVar8;\n  undefined2 *puVar9;\n  undefined *puVar10;\n  int iVar11;\n  uint *puVar12;\n  int *piVar13;\n  int *piVar14;\n  \n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d50) = param_1;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;\n  *(undefined4 *)(puVar5 + 0x7d58) = 0;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;\n  *(undefined4 *)(puVar5 + 0x7d60) = 0;\n  puVar5 = PTR_DAT_000374c4;\n  if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    puVar10 = PTR_DAT_000374c4 + -0x6224;\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    FUN_0001ad00(puVar10,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    iVar4 = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);\n    FUN_0001a9d0();\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  undefined *puVar3;\n  int iVar4;\n  undefined *puVar5;\n  undefined2 *puVar6;\n  undefined2 uVar7;\n  int iVar8;\n  undefined2 *puVar9;\n  undefined *puVar10;\n  int iVar11;\n  uint *puVar12;\n  int *piVar13;\n  int *piVar14;\n  \n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d50) = param_1;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;\n  *(undefined4 *)(puVar5 + 0x7d58) = 0;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;\n  *(undefined4 *)(puVar5 + 0x7d60) = 0;\n  puVar5 = PTR_DAT_000374c4;\n  if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    puVar10 = PTR_DAT_000374c4 + -0x6224;\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    FUN_0001ad00(puVar10,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    iVar4 = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);\n    FUN_0001a9d0();\n  }\n  return;\n}" { (declaration "short sVar1;" (sized_type_specifier "short" short) identifier ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined2 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined2 uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined2 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (expression_statement "*(undefined4 *)(PTR_DAT_00037388 + 0x7d50) = param_1;" (assignment_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d50) = param_1" (pointer_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d50)" * (cast_expression "(undefined4 *)(PTR_DAT_00037388 + 0x7d50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x7d50)" ( (binary_expression "PTR_DAT_00037388 + 0x7d50" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar5 = PTR_DAT_00037388;" (assignment_expression "puVar5 = PTR_DAT_00037388" identifier = identifier) ;) (expression_statement "*(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;" (assignment_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0" (pointer_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d5c)" * (cast_expression "(undefined4 *)(PTR_DAT_00037388 + 0x7d5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x7d5c)" ( (binary_expression "PTR_DAT_00037388 + 0x7d5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar5 + 0x7d58) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + 0x7d58) = 0" (pointer_expression "*(undefined4 *)(puVar5 + 0x7d58)" * (cast_expression "(undefined4 *)(puVar5 + 0x7d58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x7d58)" ( (binary_expression "puVar5 + 0x7d58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar5 = PTR_DAT_00037388;" (assignment_expression "puVar5 = PTR_DAT_00037388" identifier = identifier) ;) (expression_statement "*(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;" (assignment_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0" (pointer_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d64)" * (cast_expression "(undefined4 *)(PTR_DAT_00037388 + 0x7d64)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x7d64)" ( (binary_expression "PTR_DAT_00037388 + 0x7d64" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar5 + 0x7d60) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + 0x7d60) = 0" (pointer_expression "*(undefined4 *)(puVar5 + 0x7d60)" * (cast_expression "(undefined4 *)(puVar5 + 0x7d60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x7d60)" ( (binary_expression "puVar5 + 0x7d60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar5 = PTR_DAT_000374c4;" (assignment_expression "puVar5 = PTR_DAT_000374c4" identifier = identifier) ;) (if_statement "if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    puVar10 = PTR_DAT_000374c4 + -0x6224;\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    FUN_0001ad00(puVar10,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    iVar4 = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);\n    FUN_0001a9d0();\n  }" if (parenthesized_expression "(*(short *)(PTR_DAT_000374c4 + -0x629a) == 0)" ( (binary_expression "*(short *)(PTR_DAT_000374c4 + -0x629a) == 0" (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x629a)" * (cast_expression "(short *)(PTR_DAT_000374c4 + -0x629a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x629a)" ( (binary_expression "PTR_DAT_000374c4 + -0x629a" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    puVar10 = PTR_DAT_000374c4 + -0x6224;\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    FUN_0001ad00(puVar10,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    iVar4 = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);\n    FUN_0001a9d0();\n  }" { (expression_statement "piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);" (assignment_expression "piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208)" identifier = (cast_expression "(int *)(PTR_DAT_000374c4 + -0x7208)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x7208)" ( (binary_expression "PTR_DAT_000374c4 + -0x7208" identifier + number_literal) )))) ;) (expression_statement "puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);" (assignment_expression "puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244)" identifier = (cast_expression "(uint *)(PTR_DAT_00037388 + 0x7244)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x7244)" ( (binary_expression "PTR_DAT_00037388 + 0x7244" identifier + number_literal) )))) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);" do (compound_statement "{\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    }" { (expression_statement "*piVar13 = iVar4;" (assignment_expression "*piVar13 = iVar4" (pointer_expression "*piVar13" * identifier) = identifier) ;) (expression_statement "iVar11 = 1 << (*puVar12 & 0x1f);" (assignment_expression "iVar11 = 1 << (*puVar12 & 0x1f)" identifier = (binary_expression "1 << (*puVar12 & 0x1f)" number_literal << (parenthesized_expression "(*puVar12 & 0x1f)" ( (binary_expression "*puVar12 & 0x1f" (pointer_expression "*puVar12" * identifier) & number_literal) )))) ;) (if_statement "if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" { (expression_statement "puVar3 = puVar5 + iVar4 + -0x6f94;" (assignment_expression "puVar3 = puVar5 + iVar4 + -0x6f94" identifier = (binary_expression "puVar5 + iVar4 + -0x6f94" (binary_expression "puVar5 + iVar4" identifier + identifier) + number_literal)) ;) (expression_statement "puVar10 = puVar3 + iVar11;" (assignment_expression "puVar10 = puVar3 + iVar11" identifier = (binary_expression "puVar3 + iVar11" identifier + identifier)) ;) (do_statement "do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);" do (compound_statement "{\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        }" { (expression_statement "*puVar3 = (char)iVar8;" (assignment_expression "*puVar3 = (char)iVar8" (pointer_expression "*puVar3" * identifier) = (cast_expression "(char)iVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 != puVar10)" ( (binary_expression "puVar3 != puVar10" identifier != identifier) )) ;) (expression_statement "iVar4 = iVar4 + iVar11;" (assignment_expression "iVar4 = iVar4 + iVar11" identifier = (binary_expression "iVar4 + iVar11" identifier + identifier)) ;) })) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != 0x1c)" ( (binary_expression "iVar8 != 0x1c" identifier != number_literal) )) ;) (expression_statement "PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;" (assignment_expression "PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c" (subscript_expression "PTR_DAT_000374c4[iVar4 + -0x6f95]" identifier [ (binary_expression "iVar4 + -0x6f95" identifier + number_literal) ]) = number_literal) ;) (expression_statement "puVar5 = PTR_DAT_000374c4;" (assignment_expression "puVar5 = PTR_DAT_000374c4" identifier = identifier) ;) (expression_statement "piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);" (assignment_expression "piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280)" identifier = (cast_expression "(int *)(PTR_DAT_000374c4 + -0x7280)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x7280)" ( (binary_expression "PTR_DAT_000374c4 + -0x7280" identifier + number_literal) )))) ;) (expression_statement "puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);" (assignment_expression "puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc)" identifier = (cast_expression "(uint *)(PTR_DAT_00037388 + 0x71cc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x71cc)" ( (binary_expression "PTR_DAT_00037388 + 0x71cc" identifier + number_literal) )))) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);" do (compound_statement "{\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    }" { (expression_statement "*piVar13 = iVar4;" (assignment_expression "*piVar13 = iVar4" (pointer_expression "*piVar13" * identifier) = identifier) ;) (expression_statement "iVar11 = 1 << (*puVar12 & 0x1f);" (assignment_expression "iVar11 = 1 << (*puVar12 & 0x1f)" identifier = (binary_expression "1 << (*puVar12 & 0x1f)" number_literal << (parenthesized_expression "(*puVar12 & 0x1f)" ( (binary_expression "*puVar12 & 0x1f" (pointer_expression "*puVar12" * identifier) & number_literal) )))) ;) (if_statement "if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" { (expression_statement "puVar3 = puVar5 + iVar4 + -0x7194;" (assignment_expression "puVar3 = puVar5 + iVar4 + -0x7194" identifier = (binary_expression "puVar5 + iVar4 + -0x7194" (binary_expression "puVar5 + iVar4" identifier + identifier) + number_literal)) ;) (expression_statement "puVar10 = puVar3 + iVar11;" (assignment_expression "puVar10 = puVar3 + iVar11" identifier = (binary_expression "puVar3 + iVar11" identifier + identifier)) ;) (do_statement "do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);" do (compound_statement "{\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        }" { (expression_statement "*puVar3 = (char)iVar8;" (assignment_expression "*puVar3 = (char)iVar8" (pointer_expression "*puVar3" * identifier) = (cast_expression "(char)iVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 != puVar10)" ( (binary_expression "puVar3 != puVar10" identifier != identifier) )) ;) (expression_statement "iVar4 = iVar4 + iVar11;" (assignment_expression "iVar4 = iVar4 + iVar11" identifier = (binary_expression "iVar4 + iVar11" identifier + identifier)) ;) })) (expression_statement "puVar3 = PTR_DAT_000374c4;" (assignment_expression "puVar3 = PTR_DAT_000374c4" identifier = identifier) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != 0x10)" ( (binary_expression "iVar8 != 0x10" identifier != number_literal) )) ;) (expression_statement "iVar4 = iVar4 >> 7;" (assignment_expression "iVar4 = iVar4 >> 7" identifier = (binary_expression "iVar4 >> 7" identifier >> number_literal)) ;) (expression_statement "piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);" (assignment_expression "piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240)" identifier = (cast_expression "(int *)(PTR_DAT_000374c4 + -0x7240)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x7240)" ( (binary_expression "PTR_DAT_000374c4 + -0x7240" identifier + number_literal) )))) ;) (expression_statement "piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);" (assignment_expression "piVar13 = (int *)(PTR_DAT_00037388 + 0x720c)" identifier = (cast_expression "(int *)(PTR_DAT_00037388 + 0x720c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00037388 + 0x720c)" ( (binary_expression "PTR_DAT_00037388 + 0x720c" identifier + number_literal) )))) ;) (expression_statement "iVar8 = 0x10;" (assignment_expression "iVar8 = 0x10" identifier = number_literal) ;) (do_statement "do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);" do (compound_statement "{\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    }" { (expression_statement "*piVar14 = iVar4 << 7;" (assignment_expression "*piVar14 = iVar4 << 7" (pointer_expression "*piVar14" * identifier) = (binary_expression "iVar4 << 7" identifier << number_literal)) ;) (expression_statement "iVar11 = 1 << (*piVar13 - 7U & 0x1f);" (assignment_expression "iVar11 = 1 << (*piVar13 - 7U & 0x1f)" identifier = (binary_expression "1 << (*piVar13 - 7U & 0x1f)" number_literal << (parenthesized_expression "(*piVar13 - 7U & 0x1f)" ( (binary_expression "*piVar13 - 7U & 0x1f" (binary_expression "*piVar13 - 7U" (pointer_expression "*piVar13" * identifier) - number_literal) & number_literal) )))) ;) (if_statement "if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" { (expression_statement "puVar5 = puVar3 + iVar4 + -0x7194;" (assignment_expression "puVar5 = puVar3 + iVar4 + -0x7194" identifier = (binary_expression "puVar3 + iVar4 + -0x7194" (binary_expression "puVar3 + iVar4" identifier + identifier) + number_literal)) ;) (expression_statement "puVar10 = puVar5 + iVar11;" (assignment_expression "puVar10 = puVar5 + iVar11" identifier = (binary_expression "puVar5 + iVar11" identifier + identifier)) ;) (do_statement "do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);" do (compound_statement "{\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        }" { (expression_statement "puVar5[0x100] = (char)iVar8;" (assignment_expression "puVar5[0x100] = (char)iVar8" (subscript_expression "puVar5[0x100]" identifier [ number_literal ]) = (cast_expression "(char)iVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != puVar10)" ( (binary_expression "puVar5 != puVar10" identifier != identifier) )) ;) (expression_statement "iVar4 = iVar4 + iVar11;" (assignment_expression "iVar4 = iVar4 + iVar11" identifier = (binary_expression "iVar4 + iVar11" identifier + identifier)) ;) })) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != 0x1e)" ( (binary_expression "iVar8 != 0x1e" identifier != number_literal) )) ;) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x6358)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6358)" ( (binary_expression "PTR_DAT_000374c4 + -0x6358" identifier + number_literal) )))) ;) (expression_statement "puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);" (assignment_expression "puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x6338)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6338)" ( (binary_expression "PTR_DAT_000374c4 + -0x6338" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);" do (compound_statement "{\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    }" { (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar5 = PTR_DAT_000374c4;" (assignment_expression "puVar5 = PTR_DAT_000374c4" identifier = 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 "sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);" (assignment_expression "sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348)" identifier = (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x6348)" * (cast_expression "(short *)(PTR_DAT_000374c4 + -0x6348)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6348)" ( (binary_expression "PTR_DAT_000374c4 + -0x6348" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x6222)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6222)" ( (binary_expression "PTR_DAT_000374c4 + -0x6222" identifier + number_literal) )))) ;) (expression_statement "puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);" (assignment_expression "puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x5fe2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x5fe2)" ( (binary_expression "PTR_DAT_000374c4 + -0x5fe2" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);" do (compound_statement "{\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    }" { (expression_statement "*puVar6 = 8;" (assignment_expression "*puVar6 = 8" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" identifier = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != puVar9)" ( (binary_expression "puVar6 != puVar9" identifier != identifier) )) ;) (expression_statement "sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);" (assignment_expression "sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346)" identifier = (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x6346)" * (cast_expression "(short *)(PTR_DAT_000374c4 + -0x6346)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6346)" ( (binary_expression "PTR_DAT_000374c4 + -0x6346" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x5fe2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x5fe2)" ( (binary_expression "PTR_DAT_000374c4 + -0x5fe2" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));" do (compound_statement "{\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    }" { (expression_statement "*puVar6 = 9;" (assignment_expression "*puVar6 = 9" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar3 = PTR_DAT_000374c4;" (assignment_expression "puVar3 = PTR_DAT_000374c4" identifier = identifier) ;) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" identifier = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != (undefined2 *)(puVar5 + -0x5e22))" ( (binary_expression "puVar6 != (undefined2 *)(puVar5 + -0x5e22)" identifier != (cast_expression "(undefined2 *)(puVar5 + -0x5e22)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5e22)" ( (binary_expression "puVar5 + -0x5e22" identifier + number_literal) )))) )) ;) (expression_statement "*(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;" (assignment_expression "*(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70" (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x6346)" * (cast_expression "(short *)(PTR_DAT_000374c4 + -0x6346)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x6346)" ( (binary_expression "PTR_DAT_000374c4 + -0x6346" identifier + number_literal) )))) = (binary_expression "sVar2 + 0x70" identifier + number_literal)) ;) (expression_statement "sVar2 = *(short *)(puVar3 + -0x634a);" (assignment_expression "sVar2 = *(short *)(puVar3 + -0x634a)" identifier = (pointer_expression "*(short *)(puVar3 + -0x634a)" * (cast_expression "(short *)(puVar3 + -0x634a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x634a)" ( (binary_expression "puVar3 + -0x634a" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x5e22)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x5e22)" ( (binary_expression "PTR_DAT_000374c4 + -0x5e22" identifier + number_literal) )))) ;) (do_statement "do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);" do (compound_statement "{\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    }" { (expression_statement "*puVar6 = 7;" (assignment_expression "*puVar6 = 7" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar3 = PTR_DAT_000374c4;" (assignment_expression "puVar3 = PTR_DAT_000374c4" identifier = identifier) ;) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" identifier = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "((undefined2 *)(puVar5 + -0x5dc2) != puVar6)" ( (binary_expression "(undefined2 *)(puVar5 + -0x5dc2) != puVar6" (cast_expression "(undefined2 *)(puVar5 + -0x5dc2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5dc2)" ( (binary_expression "puVar5 + -0x5dc2" identifier + number_literal) ))) != identifier) )) ;) (expression_statement "*(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;" (assignment_expression "*(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18" (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x634a)" * (cast_expression "(short *)(PTR_DAT_000374c4 + -0x634a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x634a)" ( (binary_expression "PTR_DAT_000374c4 + -0x634a" identifier + number_literal) )))) = (binary_expression "sVar2 + 0x18" identifier + number_literal)) ;) (expression_statement "puVar5 = PTR_DAT_000374c4;" (assignment_expression "puVar5 = PTR_DAT_000374c4" identifier = identifier) ;) (expression_statement "puVar10 = PTR_DAT_000374c4 + -0x6224;" (assignment_expression "puVar10 = PTR_DAT_000374c4 + -0x6224" identifier = (binary_expression "PTR_DAT_000374c4 + -0x6224" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;" (assignment_expression "*(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8" (pointer_expression "*(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2)" * (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x5dc2)" ( (binary_expression "PTR_DAT_000374c4 + -0x5dc2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5dbe) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5dbe) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5dbe)" * (cast_expression "(undefined2 *)(puVar5 + -0x5dbe)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5dbe)" ( (binary_expression "puVar5 + -0x5dbe" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5dba) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5dba) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5dba)" * (cast_expression "(undefined2 *)(puVar5 + -0x5dba)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5dba)" ( (binary_expression "puVar5 + -0x5dba" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5db6) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5db6) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5db6)" * (cast_expression "(undefined2 *)(puVar5 + -0x5db6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5db6)" ( (binary_expression "puVar5 + -0x5db6" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5db2) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5db2) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5db2)" * (cast_expression "(undefined2 *)(puVar5 + -0x5db2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5db2)" ( (binary_expression "puVar5 + -0x5db2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5dae) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5dae) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5dae)" * (cast_expression "(undefined2 *)(puVar5 + -0x5dae)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5dae)" ( (binary_expression "puVar5 + -0x5dae" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5daa) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5daa) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5daa)" * (cast_expression "(undefined2 *)(puVar5 + -0x5daa)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5daa)" ( (binary_expression "puVar5 + -0x5daa" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar5 + -0x5da6) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5da6) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5da6)" * (cast_expression "(undefined2 *)(puVar5 + -0x5da6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x5da6)" ( (binary_expression "puVar5 + -0x5da6" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(short *)(puVar3 + -0x6348) = sVar1 + 0x98;" (assignment_expression "*(short *)(puVar3 + -0x6348) = sVar1 + 0x98" (pointer_expression "*(short *)(puVar3 + -0x6348)" * (cast_expression "(short *)(puVar3 + -0x6348)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x6348)" ( (binary_expression "puVar3 + -0x6348" identifier + number_literal) )))) = (binary_expression "sVar1 + 0x98" identifier + number_literal)) ;) (expression_statement "FUN_0001ad00(puVar10,0x11f);" (call_expression "FUN_0001ad00(puVar10,0x11f)" identifier (argument_list "(puVar10,0x11f)" ( identifier , number_literal ))) ;) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c)" identifier = (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x629c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000374c4 + -0x629c)" ( (binary_expression "PTR_DAT_000374c4 + -0x629c" identifier + number_literal) )))) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);" do (compound_statement "{\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    }" { (expression_statement "puVar6[1] = 5;" (assignment_expression "puVar6[1] = 5" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar7 = bi_reverse(iVar4,5);" (assignment_expression "uVar7 = bi_reverse(iVar4,5)" identifier = (call_expression "bi_reverse(iVar4,5)" identifier (argument_list "(iVar4,5)" ( identifier , number_literal )))) ;) (expression_statement "*puVar6 = uVar7;" (assignment_expression "*puVar6 = uVar7" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" identifier = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0x1e)" ( (binary_expression "iVar4 != 0x1e" identifier != number_literal) )) ;) (expression_statement "FUN_0001a9d0();" (call_expression "FUN_0001a9d0()" identifier (argument_list "()" ( ))) ;) })) (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 TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (pointer_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 (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 = (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 (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (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) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (pointer_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 (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 (pointer_expression * IDENT) = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) - LIT) & 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 = (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 = (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (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)) ;) (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 = IDENT) ;) (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 (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (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 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 = (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 = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return ;) })))
(function_definition "void ct_init(undefined4 param_1)\n\n{\n  short sVar1;\n  short sVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined *puVar5;\n  undefined2 *puVar6;\n  undefined2 uVar7;\n  int iVar8;\n  undefined2 *puVar9;\n  undefined *puVar10;\n  int iVar11;\n  uint *puVar12;\n  int *piVar13;\n  int *piVar14;\n  \n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d50) = param_1;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;\n  *(undefined4 *)(puVar5 + 0x7d58) = 0;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;\n  *(undefined4 *)(puVar5 + 0x7d60) = 0;\n  puVar5 = PTR_DAT_000374c4;\n  if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    puVar10 = PTR_DAT_000374c4 + -0x6224;\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    FUN_0001ad00(puVar10,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    iVar4 = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);\n    FUN_0001a9d0();\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  undefined *puVar3;\n  int iVar4;\n  undefined *puVar5;\n  undefined2 *puVar6;\n  undefined2 uVar7;\n  int iVar8;\n  undefined2 *puVar9;\n  undefined *puVar10;\n  int iVar11;\n  uint *puVar12;\n  int *piVar13;\n  int *piVar14;\n  \n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d50) = param_1;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;\n  *(undefined4 *)(puVar5 + 0x7d58) = 0;\n  puVar5 = PTR_DAT_00037388;\n  *(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;\n  *(undefined4 *)(puVar5 + 0x7d60) = 0;\n  puVar5 = PTR_DAT_000374c4;\n  if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    puVar10 = PTR_DAT_000374c4 + -0x6224;\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    FUN_0001ad00(puVar10,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    iVar4 = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);\n    FUN_0001a9d0();\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 "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined2 *puVar6;" (type_identifier "undefined2") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined2 uVar7;" (type_identifier "undefined2") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "undefined2 *puVar9;" (type_identifier "undefined2") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "uint *puVar12;" (type_identifier "uint") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "int *piVar13;" (primitive_type "int") (pointer_declarator "*piVar13" (* "*") (identifier "piVar13")) (; ";")) (declaration "int *piVar14;" (primitive_type "int") (pointer_declarator "*piVar14" (* "*") (identifier "piVar14")) (; ";")) (expression_statement "*(undefined4 *)(PTR_DAT_00037388 + 0x7d50) = param_1;" (assignment_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d50) = param_1" (pointer_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d50)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_00037388 + 0x7d50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00037388 + 0x7d50)" (( "(") (binary_expression "PTR_DAT_00037388 + 0x7d50" (identifier "PTR_DAT_00037388") (+ "+") (number_literal "0x7d50")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "puVar5 = PTR_DAT_00037388;" (assignment_expression "puVar5 = PTR_DAT_00037388" (identifier "puVar5") (= "=") (identifier "PTR_DAT_00037388")) (; ";")) (expression_statement "*(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;" (assignment_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0" (pointer_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d5c)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_00037388 + 0x7d5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00037388 + 0x7d5c)" (( "(") (binary_expression "PTR_DAT_00037388 + 0x7d5c" (identifier "PTR_DAT_00037388") (+ "+") (number_literal "0x7d5c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar5 + 0x7d58) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + 0x7d58) = 0" (pointer_expression "*(undefined4 *)(puVar5 + 0x7d58)" (* "*") (cast_expression "(undefined4 *)(puVar5 + 0x7d58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 0x7d58)" (( "(") (binary_expression "puVar5 + 0x7d58" (identifier "puVar5") (+ "+") (number_literal "0x7d58")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5 = PTR_DAT_00037388;" (assignment_expression "puVar5 = PTR_DAT_00037388" (identifier "puVar5") (= "=") (identifier "PTR_DAT_00037388")) (; ";")) (expression_statement "*(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;" (assignment_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0" (pointer_expression "*(undefined4 *)(PTR_DAT_00037388 + 0x7d64)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_00037388 + 0x7d64)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00037388 + 0x7d64)" (( "(") (binary_expression "PTR_DAT_00037388 + 0x7d64" (identifier "PTR_DAT_00037388") (+ "+") (number_literal "0x7d64")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar5 + 0x7d60) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + 0x7d60) = 0" (pointer_expression "*(undefined4 *)(puVar5 + 0x7d60)" (* "*") (cast_expression "(undefined4 *)(puVar5 + 0x7d60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 0x7d60)" (( "(") (binary_expression "puVar5 + 0x7d60" (identifier "puVar5") (+ "+") (number_literal "0x7d60")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5 = PTR_DAT_000374c4;" (assignment_expression "puVar5 = PTR_DAT_000374c4" (identifier "puVar5") (= "=") (identifier "PTR_DAT_000374c4")) (; ";")) (if_statement "if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    puVar10 = PTR_DAT_000374c4 + -0x6224;\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    FUN_0001ad00(puVar10,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    iVar4 = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);\n    FUN_0001a9d0();\n  }" (if "if") (parenthesized_expression "(*(short *)(PTR_DAT_000374c4 + -0x629a) == 0)" (( "(") (binary_expression "*(short *)(PTR_DAT_000374c4 + -0x629a) == 0" (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x629a)" (* "*") (cast_expression "(short *)(PTR_DAT_000374c4 + -0x629a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000374c4 + -0x629a)" (( "(") (binary_expression "PTR_DAT_000374c4 + -0x629a" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x629a")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);\n    iVar8 = 0;\n    iVar4 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);\n    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;\n    puVar5 = PTR_DAT_000374c4;\n    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);\n    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);\n    iVar4 = 0;\n    iVar8 = 0;\n    do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);\n    iVar4 = iVar4 >> 7;\n    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);\n    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);\n    iVar8 = 0x10;\n    do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);\n    do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);\n    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);\n    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);\n    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);\n    do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));\n    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;\n    sVar2 = *(short *)(puVar3 + -0x634a);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);\n    do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);\n    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;\n    puVar5 = PTR_DAT_000374c4;\n    puVar10 = PTR_DAT_000374c4 + -0x6224;\n    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dbe) = 8;\n    *(undefined2 *)(puVar5 + -0x5dba) = 8;\n    *(undefined2 *)(puVar5 + -0x5db6) = 8;\n    *(undefined2 *)(puVar5 + -0x5db2) = 8;\n    *(undefined2 *)(puVar5 + -0x5dae) = 8;\n    *(undefined2 *)(puVar5 + -0x5daa) = 8;\n    *(undefined2 *)(puVar5 + -0x5da6) = 8;\n    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;\n    FUN_0001ad00(puVar10,0x11f);\n    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);\n    iVar4 = 0;\n    do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);\n    FUN_0001a9d0();\n  }" ({ "{") (expression_statement "piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);" (assignment_expression "piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208)" (identifier "piVar13") (= "=") (cast_expression "(int *)(PTR_DAT_000374c4 + -0x7208)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000374c4 + -0x7208)" (( "(") (binary_expression "PTR_DAT_000374c4 + -0x7208" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x7208")) () ")")))) (; ";")) (expression_statement "puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);" (assignment_expression "puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244)" (identifier "puVar12") (= "=") (cast_expression "(uint *)(PTR_DAT_00037388 + 0x7244)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00037388 + 0x7244)" (( "(") (binary_expression "PTR_DAT_00037388 + 0x7244" (identifier "PTR_DAT_00037388") (+ "+") (number_literal "0x7244")) () ")")))) (; ";")) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x1c);" (do "do") (compound_statement "{\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    }" ({ "{") (expression_statement "*piVar13 = iVar4;" (assignment_expression "*piVar13 = iVar4" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "iVar11 = 1 << (*puVar12 & 0x1f);" (assignment_expression "iVar11 = 1 << (*puVar12 & 0x1f)" (identifier "iVar11") (= "=") (binary_expression "1 << (*puVar12 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(*puVar12 & 0x1f)" (( "(") (binary_expression "*puVar12 & 0x1f" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" (if "if") (parenthesized_expression "(0 < iVar11)" (( "(") (binary_expression "0 < iVar11" (number_literal "0") (< "<") (identifier "iVar11")) () ")")) (compound_statement "{\n        puVar3 = puVar5 + iVar4 + -0x6f94;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" ({ "{") (expression_statement "puVar3 = puVar5 + iVar4 + -0x6f94;" (assignment_expression "puVar3 = puVar5 + iVar4 + -0x6f94" (identifier "puVar3") (= "=") (binary_expression "puVar5 + iVar4 + -0x6f94" (binary_expression "puVar5 + iVar4" (identifier "puVar5") (+ "+") (identifier "iVar4")) (+ "+") (number_literal "-0x6f94"))) (; ";")) (expression_statement "puVar10 = puVar3 + iVar11;" (assignment_expression "puVar10 = puVar3 + iVar11" (identifier "puVar10") (= "=") (binary_expression "puVar3 + iVar11" (identifier "puVar3") (+ "+") (identifier "iVar11"))) (; ";")) (do_statement "do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);" (do "do") (compound_statement "{\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        }" ({ "{") (expression_statement "*puVar3 = (char)iVar8;" (assignment_expression "*puVar3 = (char)iVar8" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (cast_expression "(char)iVar8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar8"))) (; ";")) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" (identifier "puVar3") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar3 != puVar10)" (( "(") (binary_expression "puVar3 != puVar10" (identifier "puVar3") (!= "!=") (identifier "puVar10")) () ")")) (; ";")) (expression_statement "iVar4 = iVar4 + iVar11;" (assignment_expression "iVar4 = iVar4 + iVar11" (identifier "iVar4") (= "=") (binary_expression "iVar4 + iVar11" (identifier "iVar4") (+ "+") (identifier "iVar11"))) (; ";")) (} "}"))) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" (identifier "piVar13") (= "=") (binary_expression "piVar13 + 1" (identifier "piVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" (identifier "puVar12") (= "=") (binary_expression "puVar12 + 1" (identifier "puVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 != 0x1c)" (( "(") (binary_expression "iVar8 != 0x1c" (identifier "iVar8") (!= "!=") (number_literal "0x1c")) () ")")) (; ";")) (expression_statement "PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;" (assignment_expression "PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c" (subscript_expression "PTR_DAT_000374c4[iVar4 + -0x6f95]" (identifier "PTR_DAT_000374c4") ([ "[") (binary_expression "iVar4 + -0x6f95" (identifier "iVar4") (+ "+") (number_literal "-0x6f95")) (] "]")) (= "=") (number_literal "0x1c")) (; ";")) (expression_statement "puVar5 = PTR_DAT_000374c4;" (assignment_expression "puVar5 = PTR_DAT_000374c4" (identifier "puVar5") (= "=") (identifier "PTR_DAT_000374c4")) (; ";")) (expression_statement "piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);" (assignment_expression "piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280)" (identifier "piVar13") (= "=") (cast_expression "(int *)(PTR_DAT_000374c4 + -0x7280)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000374c4 + -0x7280)" (( "(") (binary_expression "PTR_DAT_000374c4 + -0x7280" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x7280")) () ")")))) (; ";")) (expression_statement "puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);" (assignment_expression "puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc)" (identifier "puVar12") (= "=") (cast_expression "(uint *)(PTR_DAT_00037388 + 0x71cc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00037388 + 0x71cc)" (( "(") (binary_expression "PTR_DAT_00037388 + 0x71cc" (identifier "PTR_DAT_00037388") (+ "+") (number_literal "0x71cc")) () ")")))) (; ";")) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    } while (iVar8 != 0x10);" (do "do") (compound_statement "{\n      *piVar13 = iVar4;\n      iVar11 = 1 << (*puVar12 & 0x1f);\n      if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      puVar3 = PTR_DAT_000374c4;\n      iVar8 = iVar8 + 1;\n      piVar13 = piVar13 + 1;\n      puVar12 = puVar12 + 1;\n    }" ({ "{") (expression_statement "*piVar13 = iVar4;" (assignment_expression "*piVar13 = iVar4" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "iVar11 = 1 << (*puVar12 & 0x1f);" (assignment_expression "iVar11 = 1 << (*puVar12 & 0x1f)" (identifier "iVar11") (= "=") (binary_expression "1 << (*puVar12 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(*puVar12 & 0x1f)" (( "(") (binary_expression "*puVar12 & 0x1f" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (0 < iVar11) {\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" (if "if") (parenthesized_expression "(0 < iVar11)" (( "(") (binary_expression "0 < iVar11" (number_literal "0") (< "<") (identifier "iVar11")) () ")")) (compound_statement "{\n        puVar3 = puVar5 + iVar4 + -0x7194;\n        puVar10 = puVar3 + iVar11;\n        do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" ({ "{") (expression_statement "puVar3 = puVar5 + iVar4 + -0x7194;" (assignment_expression "puVar3 = puVar5 + iVar4 + -0x7194" (identifier "puVar3") (= "=") (binary_expression "puVar5 + iVar4 + -0x7194" (binary_expression "puVar5 + iVar4" (identifier "puVar5") (+ "+") (identifier "iVar4")) (+ "+") (number_literal "-0x7194"))) (; ";")) (expression_statement "puVar10 = puVar3 + iVar11;" (assignment_expression "puVar10 = puVar3 + iVar11" (identifier "puVar10") (= "=") (binary_expression "puVar3 + iVar11" (identifier "puVar3") (+ "+") (identifier "iVar11"))) (; ";")) (do_statement "do {\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        } while (puVar3 != puVar10);" (do "do") (compound_statement "{\n          *puVar3 = (char)iVar8;\n          puVar3 = puVar3 + 1;\n        }" ({ "{") (expression_statement "*puVar3 = (char)iVar8;" (assignment_expression "*puVar3 = (char)iVar8" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (cast_expression "(char)iVar8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar8"))) (; ";")) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" (identifier "puVar3") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar3 != puVar10)" (( "(") (binary_expression "puVar3 != puVar10" (identifier "puVar3") (!= "!=") (identifier "puVar10")) () ")")) (; ";")) (expression_statement "iVar4 = iVar4 + iVar11;" (assignment_expression "iVar4 = iVar4 + iVar11" (identifier "iVar4") (= "=") (binary_expression "iVar4 + iVar11" (identifier "iVar4") (+ "+") (identifier "iVar11"))) (; ";")) (} "}"))) (expression_statement "puVar3 = PTR_DAT_000374c4;" (assignment_expression "puVar3 = PTR_DAT_000374c4" (identifier "puVar3") (= "=") (identifier "PTR_DAT_000374c4")) (; ";")) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" (identifier "piVar13") (= "=") (binary_expression "piVar13 + 1" (identifier "piVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" (identifier "puVar12") (= "=") (binary_expression "puVar12 + 1" (identifier "puVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 != 0x10)" (( "(") (binary_expression "iVar8 != 0x10" (identifier "iVar8") (!= "!=") (number_literal "0x10")) () ")")) (; ";")) (expression_statement "iVar4 = iVar4 >> 7;" (assignment_expression "iVar4 = iVar4 >> 7" (identifier "iVar4") (= "=") (binary_expression "iVar4 >> 7" (identifier "iVar4") (>> ">>") (number_literal "7"))) (; ";")) (expression_statement "piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);" (assignment_expression "piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240)" (identifier "piVar14") (= "=") (cast_expression "(int *)(PTR_DAT_000374c4 + -0x7240)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000374c4 + -0x7240)" (( "(") (binary_expression "PTR_DAT_000374c4 + -0x7240" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x7240")) () ")")))) (; ";")) (expression_statement "piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);" (assignment_expression "piVar13 = (int *)(PTR_DAT_00037388 + 0x720c)" (identifier "piVar13") (= "=") (cast_expression "(int *)(PTR_DAT_00037388 + 0x720c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00037388 + 0x720c)" (( "(") (binary_expression "PTR_DAT_00037388 + 0x720c" (identifier "PTR_DAT_00037388") (+ "+") (number_literal "0x720c")) () ")")))) (; ";")) (expression_statement "iVar8 = 0x10;" (assignment_expression "iVar8 = 0x10" (identifier "iVar8") (= "=") (number_literal "0x10")) (; ";")) (do_statement "do {\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    } while (iVar8 != 0x1e);" (do "do") (compound_statement "{\n      *piVar14 = iVar4 << 7;\n      iVar11 = 1 << (*piVar13 - 7U & 0x1f);\n      if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }\n      iVar8 = iVar8 + 1;\n      piVar14 = piVar14 + 1;\n      piVar13 = piVar13 + 1;\n    }" ({ "{") (expression_statement "*piVar14 = iVar4 << 7;" (assignment_expression "*piVar14 = iVar4 << 7" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (= "=") (binary_expression "iVar4 << 7" (identifier "iVar4") (<< "<<") (number_literal "7"))) (; ";")) (expression_statement "iVar11 = 1 << (*piVar13 - 7U & 0x1f);" (assignment_expression "iVar11 = 1 << (*piVar13 - 7U & 0x1f)" (identifier "iVar11") (= "=") (binary_expression "1 << (*piVar13 - 7U & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(*piVar13 - 7U & 0x1f)" (( "(") (binary_expression "*piVar13 - 7U & 0x1f" (binary_expression "*piVar13 - 7U" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (- "-") (number_literal "7U")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (0 < iVar11) {\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" (if "if") (parenthesized_expression "(0 < iVar11)" (( "(") (binary_expression "0 < iVar11" (number_literal "0") (< "<") (identifier "iVar11")) () ")")) (compound_statement "{\n        puVar5 = puVar3 + iVar4 + -0x7194;\n        puVar10 = puVar5 + iVar11;\n        do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);\n        iVar4 = iVar4 + iVar11;\n      }" ({ "{") (expression_statement "puVar5 = puVar3 + iVar4 + -0x7194;" (assignment_expression "puVar5 = puVar3 + iVar4 + -0x7194" (identifier "puVar5") (= "=") (binary_expression "puVar3 + iVar4 + -0x7194" (binary_expression "puVar3 + iVar4" (identifier "puVar3") (+ "+") (identifier "iVar4")) (+ "+") (number_literal "-0x7194"))) (; ";")) (expression_statement "puVar10 = puVar5 + iVar11;" (assignment_expression "puVar10 = puVar5 + iVar11" (identifier "puVar10") (= "=") (binary_expression "puVar5 + iVar11" (identifier "puVar5") (+ "+") (identifier "iVar11"))) (; ";")) (do_statement "do {\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        } while (puVar5 != puVar10);" (do "do") (compound_statement "{\n          puVar5[0x100] = (char)iVar8;\n          puVar5 = puVar5 + 1;\n        }" ({ "{") (expression_statement "puVar5[0x100] = (char)iVar8;" (assignment_expression "puVar5[0x100] = (char)iVar8" (subscript_expression "puVar5[0x100]" (identifier "puVar5") ([ "[") (number_literal "0x100") (] "]")) (= "=") (cast_expression "(char)iVar8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar8"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar5 != puVar10)" (( "(") (binary_expression "puVar5 != puVar10" (identifier "puVar5") (!= "!=") (identifier "puVar10")) () ")")) (; ";")) (expression_statement "iVar4 = iVar4 + iVar11;" (assignment_expression "iVar4 = iVar4 + iVar11" (identifier "iVar4") (= "=") (binary_expression "iVar4 + iVar11" (identifier "iVar4") (+ "+") (identifier "iVar11"))) (; ";")) (} "}"))) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" (identifier "piVar14") (= "=") (binary_expression "piVar14 + 1" (identifier "piVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" (identifier "piVar13") (= "=") (binary_expression "piVar13 + 1" (identifier "piVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 != 0x1e)" (( "(") (binary_expression "iVar8 != 0x1e" (identifier "iVar8") (!= "!=") (number_literal "0x1e")) () ")")) (; ";")) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358)" (identifier "puVar6") (= "=") (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x6358)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000374c4 + -0x6358)" (( "(") (binary_expression "PTR_DAT_000374c4 + -0x6358" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x6358")) () ")")))) (; ";")) (expression_statement "puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);" (assignment_expression "puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338)" (identifier "puVar9") (= "=") (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x6338)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000374c4 + -0x6338)" (( "(") (binary_expression "PTR_DAT_000374c4 + -0x6338" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x6338")) () ")")))) (; ";")) (do_statement "do {\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    } while (puVar6 != puVar9);" (do "do") (compound_statement "{\n      *puVar6 = 0;\n      puVar5 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 1;\n    }" ({ "{") (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5 = PTR_DAT_000374c4;" (assignment_expression "puVar5 = PTR_DAT_000374c4" (identifier "puVar5") (= "=") (identifier "PTR_DAT_000374c4")) (; ";")) (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 "sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);" (assignment_expression "sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348)" (identifier "sVar1") (= "=") (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x6348)" (* "*") (cast_expression "(short *)(PTR_DAT_000374c4 + -0x6348)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000374c4 + -0x6348)" (( "(") (binary_expression "PTR_DAT_000374c4 + -0x6348" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x6348")) () ")"))))) (; ";")) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222)" (identifier "puVar6") (= "=") (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x6222)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000374c4 + -0x6222)" (( "(") (binary_expression "PTR_DAT_000374c4 + -0x6222" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x6222")) () ")")))) (; ";")) (expression_statement "puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);" (assignment_expression "puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2)" (identifier "puVar9") (= "=") (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x5fe2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000374c4 + -0x5fe2)" (( "(") (binary_expression "PTR_DAT_000374c4 + -0x5fe2" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x5fe2")) () ")")))) (; ";")) (do_statement "do {\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != puVar9);" (do "do") (compound_statement "{\n      *puVar6 = 8;\n      puVar6 = puVar6 + 2;\n    }" ({ "{") (expression_statement "*puVar6 = 8;" (assignment_expression "*puVar6 = 8" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "8")) (; ";")) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 2" (identifier "puVar6") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar6 != puVar9)" (( "(") (binary_expression "puVar6 != puVar9" (identifier "puVar6") (!= "!=") (identifier "puVar9")) () ")")) (; ";")) (expression_statement "sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);" (assignment_expression "sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346)" (identifier "sVar2") (= "=") (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x6346)" (* "*") (cast_expression "(short *)(PTR_DAT_000374c4 + -0x6346)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000374c4 + -0x6346)" (( "(") (binary_expression "PTR_DAT_000374c4 + -0x6346" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x6346")) () ")"))))) (; ";")) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2)" (identifier "puVar6") (= "=") (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x5fe2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000374c4 + -0x5fe2)" (( "(") (binary_expression "PTR_DAT_000374c4 + -0x5fe2" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x5fe2")) () ")")))) (; ";")) (do_statement "do {\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));" (do "do") (compound_statement "{\n      *puVar6 = 9;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    }" ({ "{") (expression_statement "*puVar6 = 9;" (assignment_expression "*puVar6 = 9" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "9")) (; ";")) (expression_statement "puVar3 = PTR_DAT_000374c4;" (assignment_expression "puVar3 = PTR_DAT_000374c4" (identifier "puVar3") (= "=") (identifier "PTR_DAT_000374c4")) (; ";")) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 2" (identifier "puVar6") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar6 != (undefined2 *)(puVar5 + -0x5e22))" (( "(") (binary_expression "puVar6 != (undefined2 *)(puVar5 + -0x5e22)" (identifier "puVar6") (!= "!=") (cast_expression "(undefined2 *)(puVar5 + -0x5e22)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + -0x5e22)" (( "(") (binary_expression "puVar5 + -0x5e22" (identifier "puVar5") (+ "+") (number_literal "-0x5e22")) () ")")))) () ")")) (; ";")) (expression_statement "*(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;" (assignment_expression "*(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70" (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x6346)" (* "*") (cast_expression "(short *)(PTR_DAT_000374c4 + -0x6346)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000374c4 + -0x6346)" (( "(") (binary_expression "PTR_DAT_000374c4 + -0x6346" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x6346")) () ")")))) (= "=") (binary_expression "sVar2 + 0x70" (identifier "sVar2") (+ "+") (number_literal "0x70"))) (; ";")) (expression_statement "sVar2 = *(short *)(puVar3 + -0x634a);" (assignment_expression "sVar2 = *(short *)(puVar3 + -0x634a)" (identifier "sVar2") (= "=") (pointer_expression "*(short *)(puVar3 + -0x634a)" (* "*") (cast_expression "(short *)(puVar3 + -0x634a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x634a)" (( "(") (binary_expression "puVar3 + -0x634a" (identifier "puVar3") (+ "+") (number_literal "-0x634a")) () ")"))))) (; ";")) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22)" (identifier "puVar6") (= "=") (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x5e22)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000374c4 + -0x5e22)" (( "(") (binary_expression "PTR_DAT_000374c4 + -0x5e22" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x5e22")) () ")")))) (; ";")) (do_statement "do {\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);" (do "do") (compound_statement "{\n      *puVar6 = 7;\n      puVar3 = PTR_DAT_000374c4;\n      puVar6 = puVar6 + 2;\n    }" ({ "{") (expression_statement "*puVar6 = 7;" (assignment_expression "*puVar6 = 7" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "7")) (; ";")) (expression_statement "puVar3 = PTR_DAT_000374c4;" (assignment_expression "puVar3 = PTR_DAT_000374c4" (identifier "puVar3") (= "=") (identifier "PTR_DAT_000374c4")) (; ";")) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 2" (identifier "puVar6") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined2 *)(puVar5 + -0x5dc2) != puVar6)" (( "(") (binary_expression "(undefined2 *)(puVar5 + -0x5dc2) != puVar6" (cast_expression "(undefined2 *)(puVar5 + -0x5dc2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + -0x5dc2)" (( "(") (binary_expression "puVar5 + -0x5dc2" (identifier "puVar5") (+ "+") (number_literal "-0x5dc2")) () ")"))) (!= "!=") (identifier "puVar6")) () ")")) (; ";")) (expression_statement "*(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;" (assignment_expression "*(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18" (pointer_expression "*(short *)(PTR_DAT_000374c4 + -0x634a)" (* "*") (cast_expression "(short *)(PTR_DAT_000374c4 + -0x634a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000374c4 + -0x634a)" (( "(") (binary_expression "PTR_DAT_000374c4 + -0x634a" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x634a")) () ")")))) (= "=") (binary_expression "sVar2 + 0x18" (identifier "sVar2") (+ "+") (number_literal "0x18"))) (; ";")) (expression_statement "puVar5 = PTR_DAT_000374c4;" (assignment_expression "puVar5 = PTR_DAT_000374c4" (identifier "puVar5") (= "=") (identifier "PTR_DAT_000374c4")) (; ";")) (expression_statement "puVar10 = PTR_DAT_000374c4 + -0x6224;" (assignment_expression "puVar10 = PTR_DAT_000374c4 + -0x6224" (identifier "puVar10") (= "=") (binary_expression "PTR_DAT_000374c4 + -0x6224" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x6224"))) (; ";")) (expression_statement "*(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;" (assignment_expression "*(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8" (pointer_expression "*(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2)" (* "*") (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000374c4 + -0x5dc2)" (( "(") (binary_expression "PTR_DAT_000374c4 + -0x5dc2" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x5dc2")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(undefined2 *)(puVar5 + -0x5dbe) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5dbe) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5dbe)" (* "*") (cast_expression "(undefined2 *)(puVar5 + -0x5dbe)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + -0x5dbe)" (( "(") (binary_expression "puVar5 + -0x5dbe" (identifier "puVar5") (+ "+") (number_literal "-0x5dbe")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(undefined2 *)(puVar5 + -0x5dba) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5dba) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5dba)" (* "*") (cast_expression "(undefined2 *)(puVar5 + -0x5dba)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + -0x5dba)" (( "(") (binary_expression "puVar5 + -0x5dba" (identifier "puVar5") (+ "+") (number_literal "-0x5dba")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(undefined2 *)(puVar5 + -0x5db6) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5db6) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5db6)" (* "*") (cast_expression "(undefined2 *)(puVar5 + -0x5db6)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + -0x5db6)" (( "(") (binary_expression "puVar5 + -0x5db6" (identifier "puVar5") (+ "+") (number_literal "-0x5db6")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(undefined2 *)(puVar5 + -0x5db2) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5db2) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5db2)" (* "*") (cast_expression "(undefined2 *)(puVar5 + -0x5db2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + -0x5db2)" (( "(") (binary_expression "puVar5 + -0x5db2" (identifier "puVar5") (+ "+") (number_literal "-0x5db2")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(undefined2 *)(puVar5 + -0x5dae) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5dae) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5dae)" (* "*") (cast_expression "(undefined2 *)(puVar5 + -0x5dae)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + -0x5dae)" (( "(") (binary_expression "puVar5 + -0x5dae" (identifier "puVar5") (+ "+") (number_literal "-0x5dae")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(undefined2 *)(puVar5 + -0x5daa) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5daa) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5daa)" (* "*") (cast_expression "(undefined2 *)(puVar5 + -0x5daa)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + -0x5daa)" (( "(") (binary_expression "puVar5 + -0x5daa" (identifier "puVar5") (+ "+") (number_literal "-0x5daa")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(undefined2 *)(puVar5 + -0x5da6) = 8;" (assignment_expression "*(undefined2 *)(puVar5 + -0x5da6) = 8" (pointer_expression "*(undefined2 *)(puVar5 + -0x5da6)" (* "*") (cast_expression "(undefined2 *)(puVar5 + -0x5da6)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + -0x5da6)" (( "(") (binary_expression "puVar5 + -0x5da6" (identifier "puVar5") (+ "+") (number_literal "-0x5da6")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(short *)(puVar3 + -0x6348) = sVar1 + 0x98;" (assignment_expression "*(short *)(puVar3 + -0x6348) = sVar1 + 0x98" (pointer_expression "*(short *)(puVar3 + -0x6348)" (* "*") (cast_expression "(short *)(puVar3 + -0x6348)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x6348)" (( "(") (binary_expression "puVar3 + -0x6348" (identifier "puVar3") (+ "+") (number_literal "-0x6348")) () ")")))) (= "=") (binary_expression "sVar1 + 0x98" (identifier "sVar1") (+ "+") (number_literal "0x98"))) (; ";")) (expression_statement "FUN_0001ad00(puVar10,0x11f);" (call_expression "FUN_0001ad00(puVar10,0x11f)" (identifier "FUN_0001ad00") (argument_list "(puVar10,0x11f)" (( "(") (identifier "puVar10") (, ",") (number_literal "0x11f") () ")"))) (; ";")) (expression_statement "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);" (assignment_expression "puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c)" (identifier "puVar6") (= "=") (cast_expression "(undefined2 *)(PTR_DAT_000374c4 + -0x629c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000374c4 + -0x629c)" (( "(") (binary_expression "PTR_DAT_000374c4 + -0x629c" (identifier "PTR_DAT_000374c4") (+ "+") (number_literal "-0x629c")) () ")")))) (; ";")) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    } while (iVar4 != 0x1e);" (do "do") (compound_statement "{\n      puVar6[1] = 5;\n      uVar7 = bi_reverse(iVar4,5);\n      *puVar6 = uVar7;\n      iVar4 = iVar4 + 1;\n      puVar6 = puVar6 + 2;\n    }" ({ "{") (expression_statement "puVar6[1] = 5;" (assignment_expression "puVar6[1] = 5" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "5")) (; ";")) (expression_statement "uVar7 = bi_reverse(iVar4,5);" (assignment_expression "uVar7 = bi_reverse(iVar4,5)" (identifier "uVar7") (= "=") (call_expression "bi_reverse(iVar4,5)" (identifier "bi_reverse") (argument_list "(iVar4,5)" (( "(") (identifier "iVar4") (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "*puVar6 = uVar7;" (assignment_expression "*puVar6 = uVar7" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 2" (identifier "puVar6") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != 0x1e)" (( "(") (binary_expression "iVar4 != 0x1e" (identifier "iVar4") (!= "!=") (number_literal "0x1e")) () ")")) (; ";")) (expression_statement "FUN_0001a9d0();" (call_expression "FUN_0001a9d0()" (identifier "FUN_0001a9d0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (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: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (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: (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: (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: (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: (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: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (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)))))) (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: (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: (subscript_expression argument: (identifier) index: (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: (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)))))) (expression_statement (assignment_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: (pointer_expression argument: (identifier)) right: (identifier))) (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)))))) (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (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)))))) (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: (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: (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_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: (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: (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: (identifier))) (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: (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: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) 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: (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: (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: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (return_statement))))

void MASKED(undefined4 param_1)

{
  short sVar1;
  short sVar2;
  undefined *puVar3;
  int iVar4;
  undefined *puVar5;
  undefined2 *puVar6;
  undefined2 uVar7;
  int iVar8;
  undefined2 *puVar9;
  undefined *puVar10;
  int iVar11;
  uint *puVar12;
  int *piVar13;
  int *piVar14;
  
  *(undefined4 *)(PTR_DAT_00037388 + 0x7d50) = param_1;
  puVar5 = PTR_DAT_00037388;
  *(undefined4 *)(PTR_DAT_00037388 + 0x7d5c) = 0;
  *(undefined4 *)(puVar5 + 0x7d58) = 0;
  puVar5 = PTR_DAT_00037388;
  *(undefined4 *)(PTR_DAT_00037388 + 0x7d64) = 0;
  *(undefined4 *)(puVar5 + 0x7d60) = 0;
  puVar5 = PTR_DAT_000374c4;
  if (*(short *)(PTR_DAT_000374c4 + -0x629a) == 0) {
    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7208);
    puVar12 = (uint *)(PTR_DAT_00037388 + 0x7244);
    iVar8 = 0;
    iVar4 = 0;
    do {
      *piVar13 = iVar4;
      iVar11 = 1 << (*puVar12 & 0x1f);
      if (0 < iVar11) {
        puVar3 = puVar5 + iVar4 + -0x6f94;
        puVar10 = puVar3 + iVar11;
        do {
          *puVar3 = (char)iVar8;
          puVar3 = puVar3 + 1;
        } while (puVar3 != puVar10);
        iVar4 = iVar4 + iVar11;
      }
      iVar8 = iVar8 + 1;
      piVar13 = piVar13 + 1;
      puVar12 = puVar12 + 1;
    } while (iVar8 != 0x1c);
    PTR_DAT_000374c4[iVar4 + -0x6f95] = 0x1c;
    puVar5 = PTR_DAT_000374c4;
    piVar13 = (int *)(PTR_DAT_000374c4 + -0x7280);
    puVar12 = (uint *)(PTR_DAT_00037388 + 0x71cc);
    iVar4 = 0;
    iVar8 = 0;
    do {
      *piVar13 = iVar4;
      iVar11 = 1 << (*puVar12 & 0x1f);
      if (0 < iVar11) {
        puVar3 = puVar5 + iVar4 + -0x7194;
        puVar10 = puVar3 + iVar11;
        do {
          *puVar3 = (char)iVar8;
          puVar3 = puVar3 + 1;
        } while (puVar3 != puVar10);
        iVar4 = iVar4 + iVar11;
      }
      puVar3 = PTR_DAT_000374c4;
      iVar8 = iVar8 + 1;
      piVar13 = piVar13 + 1;
      puVar12 = puVar12 + 1;
    } while (iVar8 != 0x10);
    iVar4 = iVar4 >> 7;
    piVar14 = (int *)(PTR_DAT_000374c4 + -0x7240);
    piVar13 = (int *)(PTR_DAT_00037388 + 0x720c);
    iVar8 = 0x10;
    do {
      *piVar14 = iVar4 << 7;
      iVar11 = 1 << (*piVar13 - 7U & 0x1f);
      if (0 < iVar11) {
        puVar5 = puVar3 + iVar4 + -0x7194;
        puVar10 = puVar5 + iVar11;
        do {
          puVar5[0x100] = (char)iVar8;
          puVar5 = puVar5 + 1;
        } while (puVar5 != puVar10);
        iVar4 = iVar4 + iVar11;
      }
      iVar8 = iVar8 + 1;
      piVar14 = piVar14 + 1;
      piVar13 = piVar13 + 1;
    } while (iVar8 != 0x1e);
    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6358);
    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x6338);
    do {
      *puVar6 = 0;
      puVar5 = PTR_DAT_000374c4;
      puVar6 = puVar6 + 1;
    } while (puVar6 != puVar9);
    sVar1 = *(short *)(PTR_DAT_000374c4 + -0x6348);
    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x6222);
    puVar9 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);
    do {
      *puVar6 = 8;
      puVar6 = puVar6 + 2;
    } while (puVar6 != puVar9);
    sVar2 = *(short *)(PTR_DAT_000374c4 + -0x6346);
    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5fe2);
    do {
      *puVar6 = 9;
      puVar3 = PTR_DAT_000374c4;
      puVar6 = puVar6 + 2;
    } while (puVar6 != (undefined2 *)(puVar5 + -0x5e22));
    *(short *)(PTR_DAT_000374c4 + -0x6346) = sVar2 + 0x70;
    sVar2 = *(short *)(puVar3 + -0x634a);
    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x5e22);
    do {
      *puVar6 = 7;
      puVar3 = PTR_DAT_000374c4;
      puVar6 = puVar6 + 2;
    } while ((undefined2 *)(puVar5 + -0x5dc2) != puVar6);
    *(short *)(PTR_DAT_000374c4 + -0x634a) = sVar2 + 0x18;
    puVar5 = PTR_DAT_000374c4;
    puVar10 = PTR_DAT_000374c4 + -0x6224;
    *(undefined2 *)(PTR_DAT_000374c4 + -0x5dc2) = 8;
    *(undefined2 *)(puVar5 + -0x5dbe) = 8;
    *(undefined2 *)(puVar5 + -0x5dba) = 8;
    *(undefined2 *)(puVar5 + -0x5db6) = 8;
    *(undefined2 *)(puVar5 + -0x5db2) = 8;
    *(undefined2 *)(puVar5 + -0x5dae) = 8;
    *(undefined2 *)(puVar5 + -0x5daa) = 8;
    *(undefined2 *)(puVar5 + -0x5da6) = 8;
    *(short *)(puVar3 + -0x6348) = sVar1 + 0x98;
    FUN_0001ad00(puVar10,0x11f);
    puVar6 = (undefined2 *)(PTR_DAT_000374c4 + -0x629c);
    iVar4 = 0;
    do {
      puVar6[1] = 5;
      uVar7 = bi_reverse(iVar4,5);
      *puVar6 = uVar7;
      iVar4 = iVar4 + 1;
      puVar6 = puVar6 + 2;
    } while (iVar4 != 0x1e);
    FUN_0001a9d0();
  }
  return;
}

