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

void abort_gzip(void)

{
  remove_output_file();
                    /* WARNING: Subroutine does not return */
  do_exit(1);
}



undefined4 abort_gzip(undefined4 param_1,int param_2,uint param_3,uint param_4)

{
  byte bVar1;
  ushort uVar2;
  ushort uVar3;
  ushort uVar4;
  ushort uVar5;
  uint uVar6;
  uint uVar7;
  undefined1 *puVar8;
  undefined1 *puVar9;
  int iVar10;
  int iVar11;
  uint uVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  uint *puVar16;
  byte *pbVar17;
  uint uVar18;
  uint *puVar19;
  int iVar20;
  uint *puVar21;
  uint uVar22;
  uint uVar23;
  undefined *puVar24;
  code *pcVar25;
  uint uVar26;
  byte *pbStack_74;
  
  FUN_0001463c();
  puVar24 = PTR_00036394 + 0x6084;
  iVar11 = 1;
  FUN_00016084();
  iVar14 = *(int *)(puVar24 + 0x1e268);
  iVar13 = *(int *)(puVar24 + 0x1e268);
  iVar10 = *(int *)(puVar24 + 0x1e278) + 0x4e40;
  puVar16 = *(uint **)(puVar24 + 0x1e368);
  uVar2 = *(ushort *)(iVar10 + param_3 * 2);
  uVar3 = *(ushort *)(iVar10 + param_4 * 2);
  puVar19 = *(uint **)(puVar24 + 0x1e298);
  uVar22 = *(uint *)(iVar13 + 0x6d38);
  uVar26 = *(uint *)(iVar14 + 0x6d34);
  uVar23 = *puVar16;
  iVar20 = *(int *)(puVar24 + 0x1e2a0);
LAB_000181c8:
  puVar21 = *(uint **)(puVar24 + 0x1e29c);
  if (param_3 <= uVar26) goto LAB_000181d8;
  goto LAB_00018240;
LAB_000181d8:
  pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8);
  uVar18 = (uint)*pbVar17;
  if (0x10 < uVar18) {
    puVar21 = *(uint **)(puVar24 + 0x1e29c);
    if (uVar18 == 99) {
      return 1;
    }
    do {
      uVar18 = uVar18 - 0x10;
      uVar26 = uVar26 - pbVar17[1];
      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);
      if (uVar26 < uVar18) {
        do {
          while( true ) {
            uVar12 = uVar26;
            uVar26 = *puVar19;
            if (uVar26 < *puVar21) break;
            *puVar16 = uVar23;
            uVar26 = fill_inbuf(0);
            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);
            uVar26 = uVar12 + 8;
            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;
          }
          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);
          *puVar19 = uVar26 + 1;
          uVar26 = uVar12 + 8;
        } while (uVar12 + 8 < uVar18);
LAB_0001856c:
        uVar26 = uVar12 + 8;
      }
      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);
      uVar18 = (uint)*pbVar17;
      if (uVar18 < 0x11) break;
      if (uVar18 == 99) {
        return 1;
      }
    } while( true );
  }
  uVar22 = uVar22 >> (pbVar17[1] & 0x1f);
  uVar26 = uVar26 - pbVar17[1];
  if (uVar18 == 0x10) {
    uVar18 = uVar23 + 1;
    *(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);
    if (uVar18 == 0x8000) {
      uVar23 = 0;
      *puVar16 = 0x8000;
      flush_window();
      goto LAB_000181c8;
    }
    uVar23 = uVar18;
    if (uVar26 < param_3) goto code_r0x0001823c;
    goto LAB_000181d8;
  }
  if (uVar18 == 0xf) {
    *puVar16 = uVar23;
    *(uint *)(iVar13 + 0x6d38) = uVar22;
    *(uint *)(iVar14 + 0x6d34) = uVar26;
    return 0;
  }
  if (uVar26 < uVar18) {
    puVar21 = *(uint **)(puVar24 + 0x1e29c);
    do {
      uVar12 = *puVar19;
      if (uVar12 < *puVar21) {
        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);
        *puVar19 = uVar12 + 1;
      }
      else {
        *puVar16 = uVar23;
        uVar12 = fill_inbuf(0);
        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);
      }
      uVar22 = uVar22 | uVar6;
      uVar26 = uVar26 + 8;
    } while (uVar26 < uVar18);
  }
  uVar4 = *(ushort *)(pbVar17 + 4);
  uVar26 = uVar26 - uVar18;
  uVar12 = uVar22 >> (uVar18 & 0x1f);
  uVar5 = *(ushort *)(iVar10 + uVar18 * 2);
  if (uVar26 < param_4) {
    puVar21 = *(uint **)(puVar24 + 0x1e29c);
    do {
      while( true ) {
        uVar18 = *puVar19;
        if (uVar18 < *puVar21) break;
        *puVar16 = uVar23;
        uVar6 = fill_inbuf(0);
        uVar18 = uVar26 & 0x1f;
        uVar26 = uVar26 + 8;
        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;
        if (param_4 <= uVar26) goto LAB_0001839c;
      }
      bVar1 = *(byte *)(iVar20 + uVar18);
      *puVar19 = uVar18 + 1;
      uVar18 = uVar26 & 0x1f;
      uVar26 = uVar26 + 8;
      uVar12 = uVar12 | (uint)bVar1 << uVar18;
    } while (uVar26 < param_4);
  }
LAB_0001839c:
  pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8);
  uVar18 = (uint)*pbStack_74;
  if (0x10 < uVar18) {
    puVar21 = *(uint **)(puVar24 + 0x1e29c);
    do {
      if (uVar18 == 99) {
        return 1;
      }
      uVar18 = uVar18 - 0x10;
      uVar26 = uVar26 - pbStack_74[1];
      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);
      if (uVar26 < uVar18) {
        do {
          while( true ) {
            uVar6 = uVar26;
            uVar26 = *puVar19;
            if (uVar26 < *puVar21) break;
            *puVar16 = uVar23;
            uVar26 = fill_inbuf(0);
            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);
            uVar26 = uVar6 + 8;
            if (uVar18 <= uVar6 + 8) goto LAB_00018454;
          }
          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);
          *puVar19 = uVar26 + 1;
          uVar26 = uVar6 + 8;
        } while (uVar6 + 8 < uVar18);
LAB_00018454:
        uVar26 = uVar6 + 8;
      }
      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +
                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);
      uVar18 = (uint)*pbStack_74;
    } while (0x10 < uVar18);
  }
  uVar26 = uVar26 - pbStack_74[1];
  uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);
  puVar21 = *(uint **)(puVar24 + 0x1e29c);
  if (uVar26 < uVar18) {
    uVar7 = *puVar19;
    uVar6 = uVar26;
    while( true ) {
      if (uVar7 < *puVar21) {
        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);
        *puVar19 = uVar7 + 1;
      }
      else {
        *puVar16 = uVar23;
        uVar26 = fill_inbuf(0);
        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);
      }
      uVar12 = uVar12 | uVar26;
      uVar26 = uVar6 + 8;
      if (uVar18 <= uVar26) break;
      uVar6 = uVar6 + 8;
      uVar7 = *puVar19;
    }
  }
  iVar15 = *(int *)(puVar24 + 0x1e37c);
  uVar26 = uVar26 - uVar18;
  uVar6 = uVar5 & uVar22;
  uVar22 = uVar12 >> (uVar18 & 0x1f);
  uVar6 = uVar6 + uVar4;
  uVar18 = (uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12);
  do {
    uVar18 = uVar18 & 0x7fff;
    if (uVar23 < uVar18) {
      uVar12 = 0x8000 - uVar18;
      if (uVar6 <= 0x8000 - uVar18) {
        uVar12 = uVar6;
      }
      uVar6 = uVar6 - uVar12;
      if (uVar18 < uVar23) goto LAB_000186a8;
LAB_00018724:
      pcVar25 = *(code **)(puVar24 + 0x1e578);
      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;
LAB_000186bc:
      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);
    }
    else {
      uVar12 = 0x8000 - uVar23;
      if (uVar6 <= 0x8000 - uVar23) {
        uVar12 = uVar6;
      }
      uVar6 = uVar6 - uVar12;
      if (uVar23 <= uVar18) goto LAB_00018724;
LAB_000186a8:
      if (uVar12 <= uVar23 - uVar18) {
        pcVar25 = *(code **)(puVar24 + 0x1e578);
        goto LAB_000186bc;
      }
LAB_00018738:
      puVar8 = (undefined1 *)(iVar15 + uVar18);
      do {
        puVar9 = puVar8 + 1;
        puVar8[uVar23 - uVar18] = *puVar8;
        puVar8 = puVar9;
      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);
    }
    uVar23 = uVar23 + uVar12;
    uVar18 = uVar12 + uVar18;
    if (uVar23 == 0x8000) {
      *puVar16 = 0x8000;
      uVar23 = 0;
      flush_window();
    }
  } while (uVar6 != 0);
  goto LAB_000181c8;
code_r0x0001823c:
  puVar21 = *(uint **)(puVar24 + 0x1e29c);
LAB_00018240:
  uVar18 = *puVar19;
  if (uVar18 < *puVar21) {
    uVar12 = (uint)*(byte *)(iVar20 + uVar18);
    *puVar19 = uVar18 + 1;
  }
  else {
    *puVar16 = uVar23;
    uVar12 = fill_inbuf(0);
    uVar12 = uVar12 & 0xff;
  }
  uVar18 = uVar26 & 0x1f;
  uVar26 = uVar26 + 8;
  uVar22 = uVar22 | uVar12 << uVar18;
  goto LAB_000181c8;
}


lui gp,0x2
addiu gp,gp,0x627c
addu gp,gp,t9
lw t9,-0x7fcc(gp)
addiu sp,sp,-0x20
addiu t9,t9,0x463c
sw gp,0x10(sp)
sw ra,0x1c(sp)
bal 0x0001463c
_nop
lw gp,0x10(sp)
lw t9,-0x7fcc(gp)
addiu t9,t9,0x6084
bal 0x00016084
_li a0,0x1
(translation_unit "undefined4 abort_gzip(undefined4 param_1,int param_2,uint param_3,uint param_4)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort uVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined1 *puVar8;\n  undefined1 *puVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  uint *puVar16;\n  byte *pbVar17;\n  uint uVar18;\n  uint *puVar19;\n  int iVar20;\n  uint *puVar21;\n  uint uVar22;\n  uint uVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  uint uVar26;\n  byte *pbStack_74;\n  \n  FUN_0001463c();\n  puVar24 = PTR_00036394 + 0x6084;\n  iVar11 = 1;\n  FUN_00016084();\n  iVar14 = *(int *)(puVar24 + 0x1e268);\n  iVar13 = *(int *)(puVar24 + 0x1e268);\n  iVar10 = *(int *)(puVar24 + 0x1e278) + 0x4e40;\n  puVar16 = *(uint **)(puVar24 + 0x1e368);\n  uVar2 = *(ushort *)(iVar10 + param_3 * 2);\n  uVar3 = *(ushort *)(iVar10 + param_4 * 2);\n  puVar19 = *(uint **)(puVar24 + 0x1e298);\n  uVar22 = *(uint *)(iVar13 + 0x6d38);\n  uVar26 = *(uint *)(iVar14 + 0x6d34);\n  uVar23 = *puVar16;\n  iVar20 = *(int *)(puVar24 + 0x1e2a0);\nLAB_000181c8:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\n  if (param_3 <= uVar26) goto LAB_000181d8;\n  goto LAB_00018240;\nLAB_000181d8:\n  pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8);\n  uVar18 = (uint)*pbVar17;\n  if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    if (uVar18 == 99) {\n      return 1;\n    }\n    do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );\n  }\n  uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n  uVar26 = uVar26 - pbVar17[1];\n  if (uVar18 == 0x10) {\n    uVar18 = uVar23 + 1;\n    *(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);\n    if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }\n    uVar23 = uVar18;\n    if (uVar26 < param_3) goto code_r0x0001823c;\n    goto LAB_000181d8;\n  }\n  if (uVar18 == 0xf) {\n    *puVar16 = uVar23;\n    *(uint *)(iVar13 + 0x6d38) = uVar22;\n    *(uint *)(iVar14 + 0x6d34) = uVar26;\n    return 0;\n  }\n  if (uVar26 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);\n  }\n  uVar4 = *(ushort *)(pbVar17 + 4);\n  uVar26 = uVar26 - uVar18;\n  uVar12 = uVar22 >> (uVar18 & 0x1f);\n  uVar5 = *(ushort *)(iVar10 + uVar18 * 2);\n  if (uVar26 < param_4) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);\n  }\nLAB_0001839c:\n  pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8);\n  uVar18 = (uint)*pbStack_74;\n  if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);\n  }\n  uVar26 = uVar26 - pbStack_74[1];\n  uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\n  if (uVar26 < uVar18) {\n    uVar7 = *puVar19;\n    uVar6 = uVar26;\n    while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }\n  }\n  iVar15 = *(int *)(puVar24 + 0x1e37c);\n  uVar26 = uVar26 - uVar18;\n  uVar6 = uVar5 & uVar22;\n  uVar22 = uVar12 >> (uVar18 & 0x1f);\n  uVar6 = uVar6 + uVar4;\n  uVar18 = (uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12);\n  do {\n    uVar18 = uVar18 & 0x7fff;\n    if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }\n    uVar23 = uVar23 + uVar12;\n    uVar18 = uVar12 + uVar18;\n    if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }\n  } while (uVar6 != 0);\n  goto LAB_000181c8;\ncode_r0x0001823c:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\nLAB_00018240:\n  uVar18 = *puVar19;\n  if (uVar18 < *puVar21) {\n    uVar12 = (uint)*(byte *)(iVar20 + uVar18);\n    *puVar19 = uVar18 + 1;\n  }\n  else {\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }\n  uVar18 = uVar26 & 0x1f;\n  uVar26 = uVar26 + 8;\n  uVar22 = uVar22 | uVar12 << uVar18;\n  goto LAB_000181c8;\n}\n\n" (function_definition "undefined4 abort_gzip(undefined4 param_1,int param_2,uint param_3,uint param_4)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort uVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined1 *puVar8;\n  undefined1 *puVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  uint *puVar16;\n  byte *pbVar17;\n  uint uVar18;\n  uint *puVar19;\n  int iVar20;\n  uint *puVar21;\n  uint uVar22;\n  uint uVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  uint uVar26;\n  byte *pbStack_74;\n  \n  FUN_0001463c();\n  puVar24 = PTR_00036394 + 0x6084;\n  iVar11 = 1;\n  FUN_00016084();\n  iVar14 = *(int *)(puVar24 + 0x1e268);\n  iVar13 = *(int *)(puVar24 + 0x1e268);\n  iVar10 = *(int *)(puVar24 + 0x1e278) + 0x4e40;\n  puVar16 = *(uint **)(puVar24 + 0x1e368);\n  uVar2 = *(ushort *)(iVar10 + param_3 * 2);\n  uVar3 = *(ushort *)(iVar10 + param_4 * 2);\n  puVar19 = *(uint **)(puVar24 + 0x1e298);\n  uVar22 = *(uint *)(iVar13 + 0x6d38);\n  uVar26 = *(uint *)(iVar14 + 0x6d34);\n  uVar23 = *puVar16;\n  iVar20 = *(int *)(puVar24 + 0x1e2a0);\nLAB_000181c8:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\n  if (param_3 <= uVar26) goto LAB_000181d8;\n  goto LAB_00018240;\nLAB_000181d8:\n  pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8);\n  uVar18 = (uint)*pbVar17;\n  if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    if (uVar18 == 99) {\n      return 1;\n    }\n    do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );\n  }\n  uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n  uVar26 = uVar26 - pbVar17[1];\n  if (uVar18 == 0x10) {\n    uVar18 = uVar23 + 1;\n    *(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);\n    if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }\n    uVar23 = uVar18;\n    if (uVar26 < param_3) goto code_r0x0001823c;\n    goto LAB_000181d8;\n  }\n  if (uVar18 == 0xf) {\n    *puVar16 = uVar23;\n    *(uint *)(iVar13 + 0x6d38) = uVar22;\n    *(uint *)(iVar14 + 0x6d34) = uVar26;\n    return 0;\n  }\n  if (uVar26 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);\n  }\n  uVar4 = *(ushort *)(pbVar17 + 4);\n  uVar26 = uVar26 - uVar18;\n  uVar12 = uVar22 >> (uVar18 & 0x1f);\n  uVar5 = *(ushort *)(iVar10 + uVar18 * 2);\n  if (uVar26 < param_4) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);\n  }\nLAB_0001839c:\n  pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8);\n  uVar18 = (uint)*pbStack_74;\n  if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);\n  }\n  uVar26 = uVar26 - pbStack_74[1];\n  uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\n  if (uVar26 < uVar18) {\n    uVar7 = *puVar19;\n    uVar6 = uVar26;\n    while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }\n  }\n  iVar15 = *(int *)(puVar24 + 0x1e37c);\n  uVar26 = uVar26 - uVar18;\n  uVar6 = uVar5 & uVar22;\n  uVar22 = uVar12 >> (uVar18 & 0x1f);\n  uVar6 = uVar6 + uVar4;\n  uVar18 = (uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12);\n  do {\n    uVar18 = uVar18 & 0x7fff;\n    if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }\n    uVar23 = uVar23 + uVar12;\n    uVar18 = uVar12 + uVar18;\n    if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }\n  } while (uVar6 != 0);\n  goto LAB_000181c8;\ncode_r0x0001823c:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\nLAB_00018240:\n  uVar18 = *puVar19;\n  if (uVar18 < *puVar21) {\n    uVar12 = (uint)*(byte *)(iVar20 + uVar18);\n    *puVar19 = uVar18 + 1;\n  }\n  else {\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }\n  uVar18 = uVar26 & 0x1f;\n  uVar26 = uVar26 + 8;\n  uVar22 = uVar22 | uVar12 << uVar18;\n  goto LAB_000181c8;\n}" type_identifier (function_declarator "abort_gzip(undefined4 param_1,int param_2,uint param_3,uint param_4)" identifier (parameter_list "(undefined4 param_1,int param_2,uint param_3,uint param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  ushort uVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort uVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined1 *puVar8;\n  undefined1 *puVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  uint *puVar16;\n  byte *pbVar17;\n  uint uVar18;\n  uint *puVar19;\n  int iVar20;\n  uint *puVar21;\n  uint uVar22;\n  uint uVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  uint uVar26;\n  byte *pbStack_74;\n  \n  FUN_0001463c();\n  puVar24 = PTR_00036394 + 0x6084;\n  iVar11 = 1;\n  FUN_00016084();\n  iVar14 = *(int *)(puVar24 + 0x1e268);\n  iVar13 = *(int *)(puVar24 + 0x1e268);\n  iVar10 = *(int *)(puVar24 + 0x1e278) + 0x4e40;\n  puVar16 = *(uint **)(puVar24 + 0x1e368);\n  uVar2 = *(ushort *)(iVar10 + param_3 * 2);\n  uVar3 = *(ushort *)(iVar10 + param_4 * 2);\n  puVar19 = *(uint **)(puVar24 + 0x1e298);\n  uVar22 = *(uint *)(iVar13 + 0x6d38);\n  uVar26 = *(uint *)(iVar14 + 0x6d34);\n  uVar23 = *puVar16;\n  iVar20 = *(int *)(puVar24 + 0x1e2a0);\nLAB_000181c8:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\n  if (param_3 <= uVar26) goto LAB_000181d8;\n  goto LAB_00018240;\nLAB_000181d8:\n  pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8);\n  uVar18 = (uint)*pbVar17;\n  if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    if (uVar18 == 99) {\n      return 1;\n    }\n    do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );\n  }\n  uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n  uVar26 = uVar26 - pbVar17[1];\n  if (uVar18 == 0x10) {\n    uVar18 = uVar23 + 1;\n    *(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);\n    if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }\n    uVar23 = uVar18;\n    if (uVar26 < param_3) goto code_r0x0001823c;\n    goto LAB_000181d8;\n  }\n  if (uVar18 == 0xf) {\n    *puVar16 = uVar23;\n    *(uint *)(iVar13 + 0x6d38) = uVar22;\n    *(uint *)(iVar14 + 0x6d34) = uVar26;\n    return 0;\n  }\n  if (uVar26 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);\n  }\n  uVar4 = *(ushort *)(pbVar17 + 4);\n  uVar26 = uVar26 - uVar18;\n  uVar12 = uVar22 >> (uVar18 & 0x1f);\n  uVar5 = *(ushort *)(iVar10 + uVar18 * 2);\n  if (uVar26 < param_4) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);\n  }\nLAB_0001839c:\n  pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8);\n  uVar18 = (uint)*pbStack_74;\n  if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);\n  }\n  uVar26 = uVar26 - pbStack_74[1];\n  uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\n  if (uVar26 < uVar18) {\n    uVar7 = *puVar19;\n    uVar6 = uVar26;\n    while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }\n  }\n  iVar15 = *(int *)(puVar24 + 0x1e37c);\n  uVar26 = uVar26 - uVar18;\n  uVar6 = uVar5 & uVar22;\n  uVar22 = uVar12 >> (uVar18 & 0x1f);\n  uVar6 = uVar6 + uVar4;\n  uVar18 = (uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12);\n  do {\n    uVar18 = uVar18 & 0x7fff;\n    if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }\n    uVar23 = uVar23 + uVar12;\n    uVar18 = uVar12 + uVar18;\n    if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }\n  } while (uVar6 != 0);\n  goto LAB_000181c8;\ncode_r0x0001823c:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\nLAB_00018240:\n  uVar18 = *puVar19;\n  if (uVar18 < *puVar21) {\n    uVar12 = (uint)*(byte *)(iVar20 + uVar18);\n    *puVar19 = uVar18 + 1;\n  }\n  else {\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }\n  uVar18 = uVar26 & 0x1f;\n  uVar26 = uVar26 + 8;\n  uVar22 = uVar22 | uVar12 << uVar18;\n  goto LAB_000181c8;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "ushort uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "uint *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "uint *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "undefined *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "code *pcVar25;" type_identifier (pointer_declarator "*pcVar25" * identifier) ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "byte *pbStack_74;" type_identifier (pointer_declarator "*pbStack_74" * identifier) ;) (expression_statement "FUN_0001463c();" (call_expression "FUN_0001463c()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar24 = PTR_00036394 + 0x6084;" (assignment_expression "puVar24 = PTR_00036394 + 0x6084" identifier = (binary_expression "PTR_00036394 + 0x6084" identifier + number_literal)) ;) (expression_statement "iVar11 = 1;" (assignment_expression "iVar11 = 1" identifier = number_literal) ;) (expression_statement "FUN_00016084();" (call_expression "FUN_00016084()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar14 = *(int *)(puVar24 + 0x1e268);" (assignment_expression "iVar14 = *(int *)(puVar24 + 0x1e268)" identifier = (pointer_expression "*(int *)(puVar24 + 0x1e268)" * (cast_expression "(int *)(puVar24 + 0x1e268)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x1e268)" ( (binary_expression "puVar24 + 0x1e268" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(puVar24 + 0x1e268);" (assignment_expression "iVar13 = *(int *)(puVar24 + 0x1e268)" identifier = (pointer_expression "*(int *)(puVar24 + 0x1e268)" * (cast_expression "(int *)(puVar24 + 0x1e268)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x1e268)" ( (binary_expression "puVar24 + 0x1e268" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *(int *)(puVar24 + 0x1e278) + 0x4e40;" (assignment_expression "iVar10 = *(int *)(puVar24 + 0x1e278) + 0x4e40" identifier = (binary_expression "*(int *)(puVar24 + 0x1e278) + 0x4e40" (pointer_expression "*(int *)(puVar24 + 0x1e278)" * (cast_expression "(int *)(puVar24 + 0x1e278)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x1e278)" ( (binary_expression "puVar24 + 0x1e278" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puVar16 = *(uint **)(puVar24 + 0x1e368);" (assignment_expression "puVar16 = *(uint **)(puVar24 + 0x1e368)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e368)" * (cast_expression "(uint **)(puVar24 + 0x1e368)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e368)" ( (binary_expression "puVar24 + 0x1e368" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(ushort *)(iVar10 + param_3 * 2);" (assignment_expression "uVar2 = *(ushort *)(iVar10 + param_3 * 2)" identifier = (pointer_expression "*(ushort *)(iVar10 + param_3 * 2)" * (cast_expression "(ushort *)(iVar10 + param_3 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + param_3 * 2)" ( (binary_expression "iVar10 + param_3 * 2" identifier + (binary_expression "param_3 * 2" identifier * number_literal)) ))))) ;) (expression_statement "uVar3 = *(ushort *)(iVar10 + param_4 * 2);" (assignment_expression "uVar3 = *(ushort *)(iVar10 + param_4 * 2)" identifier = (pointer_expression "*(ushort *)(iVar10 + param_4 * 2)" * (cast_expression "(ushort *)(iVar10 + param_4 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + param_4 * 2)" ( (binary_expression "iVar10 + param_4 * 2" identifier + (binary_expression "param_4 * 2" identifier * number_literal)) ))))) ;) (expression_statement "puVar19 = *(uint **)(puVar24 + 0x1e298);" (assignment_expression "puVar19 = *(uint **)(puVar24 + 0x1e298)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e298)" * (cast_expression "(uint **)(puVar24 + 0x1e298)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e298)" ( (binary_expression "puVar24 + 0x1e298" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = *(uint *)(iVar13 + 0x6d38);" (assignment_expression "uVar22 = *(uint *)(iVar13 + 0x6d38)" identifier = (pointer_expression "*(uint *)(iVar13 + 0x6d38)" * (cast_expression "(uint *)(iVar13 + 0x6d38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x6d38)" ( (binary_expression "iVar13 + 0x6d38" identifier + number_literal) ))))) ;) (expression_statement "uVar26 = *(uint *)(iVar14 + 0x6d34);" (assignment_expression "uVar26 = *(uint *)(iVar14 + 0x6d34)" identifier = (pointer_expression "*(uint *)(iVar14 + 0x6d34)" * (cast_expression "(uint *)(iVar14 + 0x6d34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x6d34)" ( (binary_expression "iVar14 + 0x6d34" identifier + number_literal) ))))) ;) (expression_statement "uVar23 = *puVar16;" (assignment_expression "uVar23 = *puVar16" identifier = (pointer_expression "*puVar16" * identifier)) ;) (expression_statement "iVar20 = *(int *)(puVar24 + 0x1e2a0);" (assignment_expression "iVar20 = *(int *)(puVar24 + 0x1e2a0)" identifier = (pointer_expression "*(int *)(puVar24 + 0x1e2a0)" * (cast_expression "(int *)(puVar24 + 0x1e2a0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x1e2a0)" ( (binary_expression "puVar24 + 0x1e2a0" identifier + number_literal) ))))) ;) (labeled_statement "LAB_000181c8:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);" statement_identifier : (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" * (cast_expression "(uint **)(puVar24 + 0x1e29c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e29c)" ( (binary_expression "puVar24 + 0x1e29c" identifier + number_literal) ))))) ;)) (if_statement "if (param_3 <= uVar26) goto LAB_000181d8;" if (parenthesized_expression "(param_3 <= uVar26)" ( (binary_expression "param_3 <= uVar26" identifier <= identifier) )) (goto_statement "goto LAB_000181d8;" goto statement_identifier ;)) (goto_statement "goto LAB_00018240;" goto statement_identifier ;) (labeled_statement "LAB_000181d8:\n  pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8);" statement_identifier : (expression_statement "pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8);" (assignment_expression "pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8)" identifier = (cast_expression "(byte *)(iVar11 + (uVar22 & uVar2) * 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + (uVar22 & uVar2) * 8)" ( (binary_expression "iVar11 + (uVar22 & uVar2) * 8" identifier + (binary_expression "(uVar22 & uVar2) * 8" (parenthesized_expression "(uVar22 & uVar2)" ( (binary_expression "uVar22 & uVar2" identifier & identifier) )) * number_literal)) )))) ;)) (expression_statement "uVar18 = (uint)*pbVar17;" (assignment_expression "uVar18 = (uint)*pbVar17" identifier = (binary_expression "(uint)*pbVar17" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    if (uVar18 == 99) {\n      return 1;\n    }\n    do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );\n  }" if (parenthesized_expression "(0x10 < uVar18)" ( (binary_expression "0x10 < uVar18" number_literal < identifier) )) (compound_statement "{\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    if (uVar18 == 99) {\n      return 1;\n    }\n    do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );\n  }" { (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" * (cast_expression "(uint **)(puVar24 + 0x1e29c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e29c)" ( (binary_expression "puVar24 + 0x1e29c" identifier + number_literal) ))))) ;) (if_statement "if (uVar18 == 99) {\n      return 1;\n    }" if (parenthesized_expression "(uVar18 == 99)" ( (binary_expression "uVar18 == 99" identifier == number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (do_statement "do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );" do (compound_statement "{\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    }" { (expression_statement "uVar18 = uVar18 - 0x10;" (assignment_expression "uVar18 = uVar18 - 0x10" identifier = (binary_expression "uVar18 - 0x10" identifier - number_literal)) ;) (expression_statement "uVar26 = uVar26 - pbVar17[1];" (assignment_expression "uVar26 = uVar26 - pbVar17[1]" identifier = (binary_expression "uVar26 - pbVar17[1]" identifier - (subscript_expression "pbVar17[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar22 = uVar22 >> (pbVar17[1] & 0x1f);" (assignment_expression "uVar22 = uVar22 >> (pbVar17[1] & 0x1f)" identifier = (binary_expression "uVar22 >> (pbVar17[1] & 0x1f)" identifier >> (parenthesized_expression "(pbVar17[1] & 0x1f)" ( (binary_expression "pbVar17[1] & 0x1f" (subscript_expression "pbVar17[1]" identifier [ number_literal ]) & number_literal) )))) ;) (if_statement "if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }" if (parenthesized_expression "(uVar26 < uVar18)" ( (binary_expression "uVar26 < uVar18" identifier < identifier) )) (compound_statement "{\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }" { (do_statement "do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);" do (compound_statement "{\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        }" { (while_statement "while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }" { (expression_statement "uVar12 = uVar26;" (assignment_expression "uVar12 = uVar26" identifier = identifier) ;) (expression_statement "uVar26 = *puVar19;" (assignment_expression "uVar26 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (if_statement "if (uVar26 < *puVar21) break;" if (parenthesized_expression "(uVar26 < *puVar21)" ( (binary_expression "uVar26 < *puVar21" identifier < (pointer_expression "*puVar21" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "uVar26 = fill_inbuf(0);" (assignment_expression "uVar26 = fill_inbuf(0)" identifier = (call_expression "fill_inbuf(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);" (assignment_expression "uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f)" identifier = (binary_expression "uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f)" identifier | (binary_expression "(uVar26 & 0xff) << (uVar12 & 0x1f)" (parenthesized_expression "(uVar26 & 0xff)" ( (binary_expression "uVar26 & 0xff" identifier & number_literal) )) << (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar26 = uVar12 + 8;" (assignment_expression "uVar26 = uVar12 + 8" identifier = (binary_expression "uVar12 + 8" identifier + number_literal)) ;) (if_statement "if (uVar18 <= uVar12 + 8) goto LAB_0001856c;" if (parenthesized_expression "(uVar18 <= uVar12 + 8)" ( (binary_expression "uVar18 <= uVar12 + 8" identifier <= (binary_expression "uVar12 + 8" identifier + number_literal)) )) (goto_statement "goto LAB_0001856c;" goto statement_identifier ;)) })) (expression_statement "uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);" (assignment_expression "uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f)" identifier = (binary_expression "uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f)" identifier | (binary_expression "(uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f)" (binary_expression "(uint)*(byte *)(iVar20 + uVar26)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar20 + uVar26)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar26)" ( (binary_expression "iVar20 + uVar26" identifier + identifier) )))) << (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "*puVar19 = uVar26 + 1;" (assignment_expression "*puVar19 = uVar26 + 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "uVar26 = uVar12 + 8;" (assignment_expression "uVar26 = uVar12 + 8" identifier = (binary_expression "uVar12 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar12 + 8 < uVar18)" ( (binary_expression "uVar12 + 8 < uVar18" (binary_expression "uVar12 + 8" identifier + number_literal) < identifier) )) ;) (labeled_statement "LAB_0001856c:\n        uVar26 = uVar12 + 8;" statement_identifier : (expression_statement "uVar26 = uVar12 + 8;" (assignment_expression "uVar26 = uVar12 + 8" identifier = (binary_expression "uVar12 + 8" identifier + number_literal)) ;)) })) (expression_statement "pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);" (assignment_expression "pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8)" identifier = (cast_expression "(byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8)" ( (binary_expression "*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8" (pointer_expression "*(int *)(pbVar17 + 4)" * (cast_expression "(int *)(pbVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar17 + 4)" ( (binary_expression "pbVar17 + 4" identifier + number_literal) )))) + (binary_expression "(*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8" (parenthesized_expression "(*(ushort *)(iVar10 + uVar18 * 2) & uVar22)" ( (binary_expression "*(ushort *)(iVar10 + uVar18 * 2) & uVar22" (pointer_expression "*(ushort *)(iVar10 + uVar18 * 2)" * (cast_expression "(ushort *)(iVar10 + uVar18 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar18 * 2)" ( (binary_expression "iVar10 + uVar18 * 2" identifier + (binary_expression "uVar18 * 2" identifier * number_literal)) )))) & identifier) )) * number_literal)) )))) ;) (expression_statement "uVar18 = (uint)*pbVar17;" (assignment_expression "uVar18 = (uint)*pbVar17" identifier = (binary_expression "(uint)*pbVar17" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (uVar18 < 0x11) break;" if (parenthesized_expression "(uVar18 < 0x11)" ( (binary_expression "uVar18 < 0x11" identifier < number_literal) )) (break_statement "break;" break ;)) (if_statement "if (uVar18 == 99) {\n        return 1;\n      }" if (parenthesized_expression "(uVar18 == 99)" ( (binary_expression "uVar18 == 99" identifier == number_literal) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "uVar22 = uVar22 >> (pbVar17[1] & 0x1f);" (assignment_expression "uVar22 = uVar22 >> (pbVar17[1] & 0x1f)" identifier = (binary_expression "uVar22 >> (pbVar17[1] & 0x1f)" identifier >> (parenthesized_expression "(pbVar17[1] & 0x1f)" ( (binary_expression "pbVar17[1] & 0x1f" (subscript_expression "pbVar17[1]" identifier [ number_literal ]) & number_literal) )))) ;) (expression_statement "uVar26 = uVar26 - pbVar17[1];" (assignment_expression "uVar26 = uVar26 - pbVar17[1]" identifier = (binary_expression "uVar26 - pbVar17[1]" identifier - (subscript_expression "pbVar17[1]" identifier [ number_literal ]))) ;) (if_statement "if (uVar18 == 0x10) {\n    uVar18 = uVar23 + 1;\n    *(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);\n    if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }\n    uVar23 = uVar18;\n    if (uVar26 < param_3) goto code_r0x0001823c;\n    goto LAB_000181d8;\n  }" if (parenthesized_expression "(uVar18 == 0x10)" ( (binary_expression "uVar18 == 0x10" identifier == number_literal) )) (compound_statement "{\n    uVar18 = uVar23 + 1;\n    *(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);\n    if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }\n    uVar23 = uVar18;\n    if (uVar26 < param_3) goto code_r0x0001823c;\n    goto LAB_000181d8;\n  }" { (expression_statement "uVar18 = uVar23 + 1;" (assignment_expression "uVar18 = uVar23 + 1" identifier = (binary_expression "uVar23 + 1" identifier + number_literal)) ;) (expression_statement "*(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);" (assignment_expression "*(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4)" (pointer_expression "*(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23)" * (cast_expression "(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar24 + 0x1e37c) + uVar23)" ( (binary_expression "*(int *)(puVar24 + 0x1e37c) + uVar23" (pointer_expression "*(int *)(puVar24 + 0x1e37c)" * (cast_expression "(int *)(puVar24 + 0x1e37c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x1e37c)" ( (binary_expression "puVar24 + 0x1e37c" identifier + number_literal) )))) + identifier) )))) = (cast_expression "(char)*(undefined2 *)(pbVar17 + 4)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(undefined2 *)(pbVar17 + 4)" * (cast_expression "(undefined2 *)(pbVar17 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar17 + 4)" ( (binary_expression "pbVar17 + 4" identifier + number_literal) )))))) ;) (if_statement "if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }" if (parenthesized_expression "(uVar18 == 0x8000)" ( (binary_expression "uVar18 == 0x8000" identifier == number_literal) )) (compound_statement "{\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }" { (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (expression_statement "*puVar16 = 0x8000;" (assignment_expression "*puVar16 = 0x8000" (pointer_expression "*puVar16" * identifier) = number_literal) ;) (expression_statement "flush_window();" (call_expression "flush_window()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000181c8;" goto statement_identifier ;) })) (expression_statement "uVar23 = uVar18;" (assignment_expression "uVar23 = uVar18" identifier = identifier) ;) (if_statement "if (uVar26 < param_3) goto code_r0x0001823c;" if (parenthesized_expression "(uVar26 < param_3)" ( (binary_expression "uVar26 < param_3" identifier < identifier) )) (goto_statement "goto code_r0x0001823c;" goto statement_identifier ;)) (goto_statement "goto LAB_000181d8;" goto statement_identifier ;) })) (if_statement "if (uVar18 == 0xf) {\n    *puVar16 = uVar23;\n    *(uint *)(iVar13 + 0x6d38) = uVar22;\n    *(uint *)(iVar14 + 0x6d34) = uVar26;\n    return 0;\n  }" if (parenthesized_expression "(uVar18 == 0xf)" ( (binary_expression "uVar18 == 0xf" identifier == number_literal) )) (compound_statement "{\n    *puVar16 = uVar23;\n    *(uint *)(iVar13 + 0x6d38) = uVar22;\n    *(uint *)(iVar14 + 0x6d34) = uVar26;\n    return 0;\n  }" { (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "*(uint *)(iVar13 + 0x6d38) = uVar22;" (assignment_expression "*(uint *)(iVar13 + 0x6d38) = uVar22" (pointer_expression "*(uint *)(iVar13 + 0x6d38)" * (cast_expression "(uint *)(iVar13 + 0x6d38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x6d38)" ( (binary_expression "iVar13 + 0x6d38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar14 + 0x6d34) = uVar26;" (assignment_expression "*(uint *)(iVar14 + 0x6d34) = uVar26" (pointer_expression "*(uint *)(iVar14 + 0x6d34)" * (cast_expression "(uint *)(iVar14 + 0x6d34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x6d34)" ( (binary_expression "iVar14 + 0x6d34" identifier + number_literal) )))) = identifier) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (uVar26 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);\n  }" if (parenthesized_expression "(uVar26 < uVar18)" ( (binary_expression "uVar26 < uVar18" identifier < identifier) )) (compound_statement "{\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);\n  }" { (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" * (cast_expression "(uint **)(puVar24 + 0x1e29c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e29c)" ( (binary_expression "puVar24 + 0x1e29c" identifier + number_literal) ))))) ;) (do_statement "do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);" do (compound_statement "{\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    }" { (expression_statement "uVar12 = *puVar19;" (assignment_expression "uVar12 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (if_statement "if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }" if (parenthesized_expression "(uVar12 < *puVar21)" ( (binary_expression "uVar12 < *puVar21" identifier < (pointer_expression "*puVar21" * identifier)) )) (compound_statement "{\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }" { (expression_statement "uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);" (assignment_expression "uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f)" identifier = (binary_expression "(uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f)" (binary_expression "(uint)*(byte *)(iVar20 + uVar12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar20 + uVar12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar12)" ( (binary_expression "iVar20 + uVar12" identifier + identifier) )))) << (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "*puVar19 = uVar12 + 1;" (assignment_expression "*puVar19 = uVar12 + 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }" else (compound_statement "{\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }" { (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "uVar12 = fill_inbuf(0);" (assignment_expression "uVar12 = fill_inbuf(0)" identifier = (call_expression "fill_inbuf(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);" (assignment_expression "uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f)" identifier = (binary_expression "(uVar12 & 0xff) << (uVar26 & 0x1f)" (parenthesized_expression "(uVar12 & 0xff)" ( (binary_expression "uVar12 & 0xff" identifier & number_literal) )) << (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) )))) ;) }))) (expression_statement "uVar22 = uVar22 | uVar6;" (assignment_expression "uVar22 = uVar22 | uVar6" identifier = (binary_expression "uVar22 | uVar6" identifier | identifier)) ;) (expression_statement "uVar26 = uVar26 + 8;" (assignment_expression "uVar26 = uVar26 + 8" identifier = (binary_expression "uVar26 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 < uVar18)" ( (binary_expression "uVar26 < uVar18" identifier < identifier) )) ;) })) (expression_statement "uVar4 = *(ushort *)(pbVar17 + 4);" (assignment_expression "uVar4 = *(ushort *)(pbVar17 + 4)" identifier = (pointer_expression "*(ushort *)(pbVar17 + 4)" * (cast_expression "(ushort *)(pbVar17 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar17 + 4)" ( (binary_expression "pbVar17 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar26 = uVar26 - uVar18;" (assignment_expression "uVar26 = uVar26 - uVar18" identifier = (binary_expression "uVar26 - uVar18" identifier - identifier)) ;) (expression_statement "uVar12 = uVar22 >> (uVar18 & 0x1f);" (assignment_expression "uVar12 = uVar22 >> (uVar18 & 0x1f)" identifier = (binary_expression "uVar22 >> (uVar18 & 0x1f)" identifier >> (parenthesized_expression "(uVar18 & 0x1f)" ( (binary_expression "uVar18 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar5 = *(ushort *)(iVar10 + uVar18 * 2);" (assignment_expression "uVar5 = *(ushort *)(iVar10 + uVar18 * 2)" identifier = (pointer_expression "*(ushort *)(iVar10 + uVar18 * 2)" * (cast_expression "(ushort *)(iVar10 + uVar18 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar18 * 2)" ( (binary_expression "iVar10 + uVar18 * 2" identifier + (binary_expression "uVar18 * 2" identifier * number_literal)) ))))) ;) (if_statement "if (uVar26 < param_4) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);\n  }" if (parenthesized_expression "(uVar26 < param_4)" ( (binary_expression "uVar26 < param_4" identifier < identifier) )) (compound_statement "{\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);\n  }" { (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" * (cast_expression "(uint **)(puVar24 + 0x1e29c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e29c)" ( (binary_expression "puVar24 + 0x1e29c" identifier + number_literal) ))))) ;) (do_statement "do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);" do (compound_statement "{\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    }" { (while_statement "while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }" { (expression_statement "uVar18 = *puVar19;" (assignment_expression "uVar18 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (if_statement "if (uVar18 < *puVar21) break;" if (parenthesized_expression "(uVar18 < *puVar21)" ( (binary_expression "uVar18 < *puVar21" identifier < (pointer_expression "*puVar21" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "uVar6 = fill_inbuf(0);" (assignment_expression "uVar6 = fill_inbuf(0)" identifier = (call_expression "fill_inbuf(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "uVar18 = uVar26 & 0x1f;" (assignment_expression "uVar18 = uVar26 & 0x1f" identifier = (binary_expression "uVar26 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar26 = uVar26 + 8;" (assignment_expression "uVar26 = uVar26 + 8" identifier = (binary_expression "uVar26 + 8" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;" (assignment_expression "uVar12 = uVar12 | (uVar6 & 0xff) << uVar18" identifier = (binary_expression "uVar12 | (uVar6 & 0xff) << uVar18" identifier | (binary_expression "(uVar6 & 0xff) << uVar18" (parenthesized_expression "(uVar6 & 0xff)" ( (binary_expression "uVar6 & 0xff" identifier & number_literal) )) << identifier))) ;) (if_statement "if (param_4 <= uVar26) goto LAB_0001839c;" if (parenthesized_expression "(param_4 <= uVar26)" ( (binary_expression "param_4 <= uVar26" identifier <= identifier) )) (goto_statement "goto LAB_0001839c;" goto statement_identifier ;)) })) (expression_statement "bVar1 = *(byte *)(iVar20 + uVar18);" (assignment_expression "bVar1 = *(byte *)(iVar20 + uVar18)" identifier = (pointer_expression "*(byte *)(iVar20 + uVar18)" * (cast_expression "(byte *)(iVar20 + uVar18)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar18)" ( (binary_expression "iVar20 + uVar18" identifier + identifier) ))))) ;) (expression_statement "*puVar19 = uVar18 + 1;" (assignment_expression "*puVar19 = uVar18 + 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "uVar18 = uVar26 & 0x1f;" (assignment_expression "uVar18 = uVar26 & 0x1f" identifier = (binary_expression "uVar26 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar26 = uVar26 + 8;" (assignment_expression "uVar26 = uVar26 + 8" identifier = (binary_expression "uVar26 + 8" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar12 | (uint)bVar1 << uVar18;" (assignment_expression "uVar12 = uVar12 | (uint)bVar1 << uVar18" identifier = (binary_expression "uVar12 | (uint)bVar1 << uVar18" identifier | (binary_expression "(uint)bVar1 << uVar18" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) << identifier))) ;) }) while (parenthesized_expression "(uVar26 < param_4)" ( (binary_expression "uVar26 < param_4" identifier < identifier) )) ;) })) (labeled_statement "LAB_0001839c:\n  pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8);" statement_identifier : (expression_statement "pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8);" (assignment_expression "pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8)" identifier = (cast_expression "(byte *)(param_2 + (uVar3 & uVar12) * 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + (uVar3 & uVar12) * 8)" ( (binary_expression "param_2 + (uVar3 & uVar12) * 8" identifier + (binary_expression "(uVar3 & uVar12) * 8" (parenthesized_expression "(uVar3 & uVar12)" ( (binary_expression "uVar3 & uVar12" identifier & identifier) )) * number_literal)) )))) ;)) (expression_statement "uVar18 = (uint)*pbStack_74;" (assignment_expression "uVar18 = (uint)*pbStack_74" identifier = (binary_expression "(uint)*pbStack_74" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);\n  }" if (parenthesized_expression "(0x10 < uVar18)" ( (binary_expression "0x10 < uVar18" number_literal < identifier) )) (compound_statement "{\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);\n  }" { (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" * (cast_expression "(uint **)(puVar24 + 0x1e29c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e29c)" ( (binary_expression "puVar24 + 0x1e29c" identifier + number_literal) ))))) ;) (do_statement "do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);" do (compound_statement "{\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    }" { (if_statement "if (uVar18 == 99) {\n        return 1;\n      }" if (parenthesized_expression "(uVar18 == 99)" ( (binary_expression "uVar18 == 99" identifier == number_literal) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar18 = uVar18 - 0x10;" (assignment_expression "uVar18 = uVar18 - 0x10" identifier = (binary_expression "uVar18 - 0x10" identifier - number_literal)) ;) (expression_statement "uVar26 = uVar26 - pbStack_74[1];" (assignment_expression "uVar26 = uVar26 - pbStack_74[1]" identifier = (binary_expression "uVar26 - pbStack_74[1]" identifier - (subscript_expression "pbStack_74[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);" (assignment_expression "uVar12 = uVar12 >> (pbStack_74[1] & 0x1f)" identifier = (binary_expression "uVar12 >> (pbStack_74[1] & 0x1f)" identifier >> (parenthesized_expression "(pbStack_74[1] & 0x1f)" ( (binary_expression "pbStack_74[1] & 0x1f" (subscript_expression "pbStack_74[1]" identifier [ number_literal ]) & number_literal) )))) ;) (if_statement "if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }" if (parenthesized_expression "(uVar26 < uVar18)" ( (binary_expression "uVar26 < uVar18" identifier < identifier) )) (compound_statement "{\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }" { (do_statement "do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);" do (compound_statement "{\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        }" { (while_statement "while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }" { (expression_statement "uVar6 = uVar26;" (assignment_expression "uVar6 = uVar26" identifier = identifier) ;) (expression_statement "uVar26 = *puVar19;" (assignment_expression "uVar26 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (if_statement "if (uVar26 < *puVar21) break;" if (parenthesized_expression "(uVar26 < *puVar21)" ( (binary_expression "uVar26 < *puVar21" identifier < (pointer_expression "*puVar21" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "uVar26 = fill_inbuf(0);" (assignment_expression "uVar26 = fill_inbuf(0)" identifier = (call_expression "fill_inbuf(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);" (assignment_expression "uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f)" identifier = (binary_expression "uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f)" identifier | (binary_expression "(uVar26 & 0xff) << (uVar6 & 0x1f)" (parenthesized_expression "(uVar26 & 0xff)" ( (binary_expression "uVar26 & 0xff" identifier & number_literal) )) << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar26 = uVar6 + 8;" (assignment_expression "uVar26 = uVar6 + 8" identifier = (binary_expression "uVar6 + 8" identifier + number_literal)) ;) (if_statement "if (uVar18 <= uVar6 + 8) goto LAB_00018454;" if (parenthesized_expression "(uVar18 <= uVar6 + 8)" ( (binary_expression "uVar18 <= uVar6 + 8" identifier <= (binary_expression "uVar6 + 8" identifier + number_literal)) )) (goto_statement "goto LAB_00018454;" goto statement_identifier ;)) })) (expression_statement "uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);" (assignment_expression "uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f)" identifier = (binary_expression "uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f)" identifier | (binary_expression "(uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f)" (binary_expression "(uint)*(byte *)(iVar20 + uVar26)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar20 + uVar26)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar26)" ( (binary_expression "iVar20 + uVar26" identifier + identifier) )))) << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "*puVar19 = uVar26 + 1;" (assignment_expression "*puVar19 = uVar26 + 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "uVar26 = uVar6 + 8;" (assignment_expression "uVar26 = uVar6 + 8" identifier = (binary_expression "uVar6 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 + 8 < uVar18)" ( (binary_expression "uVar6 + 8 < uVar18" (binary_expression "uVar6 + 8" identifier + number_literal) < identifier) )) ;) (labeled_statement "LAB_00018454:\n        uVar26 = uVar6 + 8;" statement_identifier : (expression_statement "uVar26 = uVar6 + 8;" (assignment_expression "uVar26 = uVar6 + 8" identifier = (binary_expression "uVar6 + 8" identifier + number_literal)) ;)) })) (expression_statement "pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);" (assignment_expression "pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8)" identifier = (cast_expression "(byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8)" ( (binary_expression "*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8" (pointer_expression "*(int *)(pbStack_74 + 4)" * (cast_expression "(int *)(pbStack_74 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbStack_74 + 4)" ( (binary_expression "pbStack_74 + 4" identifier + number_literal) )))) + (binary_expression "(*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8" (parenthesized_expression "(*(ushort *)(iVar10 + uVar18 * 2) & uVar12)" ( (binary_expression "*(ushort *)(iVar10 + uVar18 * 2) & uVar12" (pointer_expression "*(ushort *)(iVar10 + uVar18 * 2)" * (cast_expression "(ushort *)(iVar10 + uVar18 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar18 * 2)" ( (binary_expression "iVar10 + uVar18 * 2" identifier + (binary_expression "uVar18 * 2" identifier * number_literal)) )))) & identifier) )) * number_literal)) )))) ;) (expression_statement "uVar18 = (uint)*pbStack_74;" (assignment_expression "uVar18 = (uint)*pbStack_74" identifier = (binary_expression "(uint)*pbStack_74" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) while (parenthesized_expression "(0x10 < uVar18)" ( (binary_expression "0x10 < uVar18" number_literal < identifier) )) ;) })) (expression_statement "uVar26 = uVar26 - pbStack_74[1];" (assignment_expression "uVar26 = uVar26 - pbStack_74[1]" identifier = (binary_expression "uVar26 - pbStack_74[1]" identifier - (subscript_expression "pbStack_74[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);" (assignment_expression "uVar12 = uVar12 >> (pbStack_74[1] & 0x1f)" identifier = (binary_expression "uVar12 >> (pbStack_74[1] & 0x1f)" identifier >> (parenthesized_expression "(pbStack_74[1] & 0x1f)" ( (binary_expression "pbStack_74[1] & 0x1f" (subscript_expression "pbStack_74[1]" identifier [ number_literal ]) & number_literal) )))) ;) (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" * (cast_expression "(uint **)(puVar24 + 0x1e29c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e29c)" ( (binary_expression "puVar24 + 0x1e29c" identifier + number_literal) ))))) ;) (if_statement "if (uVar26 < uVar18) {\n    uVar7 = *puVar19;\n    uVar6 = uVar26;\n    while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }\n  }" if (parenthesized_expression "(uVar26 < uVar18)" ( (binary_expression "uVar26 < uVar18" identifier < identifier) )) (compound_statement "{\n    uVar7 = *puVar19;\n    uVar6 = uVar26;\n    while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }\n  }" { (expression_statement "uVar7 = *puVar19;" (assignment_expression "uVar7 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "uVar6 = uVar26;" (assignment_expression "uVar6 = uVar26" identifier = identifier) ;) (while_statement "while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }" { (if_statement "if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }" if (parenthesized_expression "(uVar7 < *puVar21)" ( (binary_expression "uVar7 < *puVar21" identifier < (pointer_expression "*puVar21" * identifier)) )) (compound_statement "{\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }" { (expression_statement "uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);" (assignment_expression "uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f)" identifier = (binary_expression "(uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f)" (binary_expression "(uint)*(byte *)(iVar20 + uVar7)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar20 + uVar7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar7)" ( (binary_expression "iVar20 + uVar7" identifier + identifier) )))) << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "*puVar19 = uVar7 + 1;" (assignment_expression "*puVar19 = uVar7 + 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }" else (compound_statement "{\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }" { (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "uVar26 = fill_inbuf(0);" (assignment_expression "uVar26 = fill_inbuf(0)" identifier = (call_expression "fill_inbuf(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);" (assignment_expression "uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f)" identifier = (binary_expression "(uVar26 & 0xff) << (uVar6 & 0x1f)" (parenthesized_expression "(uVar26 & 0xff)" ( (binary_expression "uVar26 & 0xff" identifier & number_literal) )) << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) )))) ;) }))) (expression_statement "uVar12 = uVar12 | uVar26;" (assignment_expression "uVar12 = uVar12 | uVar26" identifier = (binary_expression "uVar12 | uVar26" identifier | identifier)) ;) (expression_statement "uVar26 = uVar6 + 8;" (assignment_expression "uVar26 = uVar6 + 8" identifier = (binary_expression "uVar6 + 8" identifier + number_literal)) ;) (if_statement "if (uVar18 <= uVar26) break;" if (parenthesized_expression "(uVar18 <= uVar26)" ( (binary_expression "uVar18 <= uVar26" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 + 8;" (assignment_expression "uVar6 = uVar6 + 8" identifier = (binary_expression "uVar6 + 8" identifier + number_literal)) ;) (expression_statement "uVar7 = *puVar19;" (assignment_expression "uVar7 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) })) })) (expression_statement "iVar15 = *(int *)(puVar24 + 0x1e37c);" (assignment_expression "iVar15 = *(int *)(puVar24 + 0x1e37c)" identifier = (pointer_expression "*(int *)(puVar24 + 0x1e37c)" * (cast_expression "(int *)(puVar24 + 0x1e37c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x1e37c)" ( (binary_expression "puVar24 + 0x1e37c" identifier + number_literal) ))))) ;) (expression_statement "uVar26 = uVar26 - uVar18;" (assignment_expression "uVar26 = uVar26 - uVar18" identifier = (binary_expression "uVar26 - uVar18" identifier - identifier)) ;) (expression_statement "uVar6 = uVar5 & uVar22;" (assignment_expression "uVar6 = uVar5 & uVar22" identifier = (binary_expression "uVar5 & uVar22" identifier & identifier)) ;) (expression_statement "uVar22 = uVar12 >> (uVar18 & 0x1f);" (assignment_expression "uVar22 = uVar12 >> (uVar18 & 0x1f)" identifier = (binary_expression "uVar12 >> (uVar18 & 0x1f)" identifier >> (parenthesized_expression "(uVar18 & 0x1f)" ( (binary_expression "uVar18 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar6 = uVar6 + uVar4;" (assignment_expression "uVar6 = uVar6 + uVar4" identifier = (binary_expression "uVar6 + uVar4" identifier + identifier)) ;) (expression_statement "uVar18 = (uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12);" (assignment_expression "uVar18 = (uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12)" identifier = (binary_expression "(uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12)" (parenthesized_expression "(uVar23 - *(ushort *)(pbStack_74 + 4))" ( (binary_expression "uVar23 - *(ushort *)(pbStack_74 + 4)" identifier - (pointer_expression "*(ushort *)(pbStack_74 + 4)" * (cast_expression "(ushort *)(pbStack_74 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbStack_74 + 4)" ( (binary_expression "pbStack_74 + 4" identifier + number_literal) ))))) )) - (parenthesized_expression "(*(ushort *)(iVar10 + uVar18 * 2) & uVar12)" ( (binary_expression "*(ushort *)(iVar10 + uVar18 * 2) & uVar12" (pointer_expression "*(ushort *)(iVar10 + uVar18 * 2)" * (cast_expression "(ushort *)(iVar10 + uVar18 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar18 * 2)" ( (binary_expression "iVar10 + uVar18 * 2" identifier + (binary_expression "uVar18 * 2" identifier * number_literal)) )))) & identifier) )))) ;) (do_statement "do {\n    uVar18 = uVar18 & 0x7fff;\n    if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }\n    uVar23 = uVar23 + uVar12;\n    uVar18 = uVar12 + uVar18;\n    if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }\n  } while (uVar6 != 0);" do (compound_statement "{\n    uVar18 = uVar18 & 0x7fff;\n    if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }\n    uVar23 = uVar23 + uVar12;\n    uVar18 = uVar12 + uVar18;\n    if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }\n  }" { (expression_statement "uVar18 = uVar18 & 0x7fff;" (assignment_expression "uVar18 = uVar18 & 0x7fff" identifier = (binary_expression "uVar18 & 0x7fff" identifier & number_literal)) ;) (if_statement "if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }" if (parenthesized_expression "(uVar23 < uVar18)" ( (binary_expression "uVar23 < uVar18" identifier < identifier) )) (compound_statement "{\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }" { (expression_statement "uVar12 = 0x8000 - uVar18;" (assignment_expression "uVar12 = 0x8000 - uVar18" identifier = (binary_expression "0x8000 - uVar18" number_literal - identifier)) ;) (if_statement "if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }" if (parenthesized_expression "(uVar6 <= 0x8000 - uVar18)" ( (binary_expression "uVar6 <= 0x8000 - uVar18" identifier <= (binary_expression "0x8000 - uVar18" number_literal - identifier)) )) (compound_statement "{\n        uVar12 = uVar6;\n      }" { (expression_statement "uVar12 = uVar6;" (assignment_expression "uVar12 = uVar6" identifier = identifier) ;) })) (expression_statement "uVar6 = uVar6 - uVar12;" (assignment_expression "uVar6 = uVar6 - uVar12" identifier = (binary_expression "uVar6 - uVar12" identifier - identifier)) ;) (if_statement "if (uVar18 < uVar23) goto LAB_000186a8;" if (parenthesized_expression "(uVar18 < uVar23)" ( (binary_expression "uVar18 < uVar23" identifier < identifier) )) (goto_statement "goto LAB_000186a8;" goto statement_identifier ;)) (labeled_statement "LAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);" statement_identifier : (expression_statement "pcVar25 = *(code **)(puVar24 + 0x1e578);" (assignment_expression "pcVar25 = *(code **)(puVar24 + 0x1e578)" identifier = (pointer_expression "*(code **)(puVar24 + 0x1e578)" * (cast_expression "(code **)(puVar24 + 0x1e578)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e578)" ( (binary_expression "puVar24 + 0x1e578" identifier + number_literal) ))))) ;)) (if_statement "if (uVar18 - uVar23 < uVar12) goto LAB_00018738;" if (parenthesized_expression "(uVar18 - uVar23 < uVar12)" ( (binary_expression "uVar18 - uVar23 < uVar12" (binary_expression "uVar18 - uVar23" identifier - identifier) < identifier) )) (goto_statement "goto LAB_00018738;" goto statement_identifier ;)) (labeled_statement "LAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);" statement_identifier : (expression_statement "(*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);" (call_expression "(*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12)" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "(iVar15 + uVar23,iVar15 + uVar18,uVar12)" ( (binary_expression "iVar15 + uVar23" identifier + identifier) , (binary_expression "iVar15 + uVar18" identifier + identifier) , identifier ))) ;)) }) (else_clause "else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }" else (compound_statement "{\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }" { (expression_statement "uVar12 = 0x8000 - uVar23;" (assignment_expression "uVar12 = 0x8000 - uVar23" identifier = (binary_expression "0x8000 - uVar23" number_literal - identifier)) ;) (if_statement "if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }" if (parenthesized_expression "(uVar6 <= 0x8000 - uVar23)" ( (binary_expression "uVar6 <= 0x8000 - uVar23" identifier <= (binary_expression "0x8000 - uVar23" number_literal - identifier)) )) (compound_statement "{\n        uVar12 = uVar6;\n      }" { (expression_statement "uVar12 = uVar6;" (assignment_expression "uVar12 = uVar6" identifier = identifier) ;) })) (expression_statement "uVar6 = uVar6 - uVar12;" (assignment_expression "uVar6 = uVar6 - uVar12" identifier = (binary_expression "uVar6 - uVar12" identifier - identifier)) ;) (if_statement "if (uVar23 <= uVar18) goto LAB_00018724;" if (parenthesized_expression "(uVar23 <= uVar18)" ( (binary_expression "uVar23 <= uVar18" identifier <= identifier) )) (goto_statement "goto LAB_00018724;" goto statement_identifier ;)) (labeled_statement "LAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }" statement_identifier : (if_statement "if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }" if (parenthesized_expression "(uVar12 <= uVar23 - uVar18)" ( (binary_expression "uVar12 <= uVar23 - uVar18" identifier <= (binary_expression "uVar23 - uVar18" identifier - identifier)) )) (compound_statement "{\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }" { (expression_statement "pcVar25 = *(code **)(puVar24 + 0x1e578);" (assignment_expression "pcVar25 = *(code **)(puVar24 + 0x1e578)" identifier = (pointer_expression "*(code **)(puVar24 + 0x1e578)" * (cast_expression "(code **)(puVar24 + 0x1e578)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e578)" ( (binary_expression "puVar24 + 0x1e578" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000186bc;" goto statement_identifier ;) }))) (labeled_statement "LAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);" statement_identifier : (expression_statement "puVar8 = (undefined1 *)(iVar15 + uVar18);" (assignment_expression "puVar8 = (undefined1 *)(iVar15 + uVar18)" identifier = (cast_expression "(undefined1 *)(iVar15 + uVar18)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + uVar18)" ( (binary_expression "iVar15 + uVar18" identifier + identifier) )))) ;)) (do_statement "do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);" do (compound_statement "{\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      }" { (expression_statement "puVar9 = puVar8 + 1;" (assignment_expression "puVar9 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "puVar8[uVar23 - uVar18] = *puVar8;" (assignment_expression "puVar8[uVar23 - uVar18] = *puVar8" (subscript_expression "puVar8[uVar23 - uVar18]" identifier [ (binary_expression "uVar23 - uVar18" identifier - identifier) ]) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9)" ( (binary_expression "(undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9" (binary_expression "(undefined1 *)(iVar15 + uVar18) + uVar12" (cast_expression "(undefined1 *)(iVar15 + uVar18)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + uVar18)" ( (binary_expression "iVar15 + uVar18" identifier + identifier) ))) + identifier) != identifier) )) ;) }))) (expression_statement "uVar23 = uVar23 + uVar12;" (assignment_expression "uVar23 = uVar23 + uVar12" identifier = (binary_expression "uVar23 + uVar12" identifier + identifier)) ;) (expression_statement "uVar18 = uVar12 + uVar18;" (assignment_expression "uVar18 = uVar12 + uVar18" identifier = (binary_expression "uVar12 + uVar18" identifier + identifier)) ;) (if_statement "if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }" if (parenthesized_expression "(uVar23 == 0x8000)" ( (binary_expression "uVar23 == 0x8000" identifier == number_literal) )) (compound_statement "{\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }" { (expression_statement "*puVar16 = 0x8000;" (assignment_expression "*puVar16 = 0x8000" (pointer_expression "*puVar16" * identifier) = number_literal) ;) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (expression_statement "flush_window();" (call_expression "flush_window()" identifier (argument_list "()" ( ))) ;) })) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) (goto_statement "goto LAB_000181c8;" goto statement_identifier ;) (labeled_statement "code_r0x0001823c:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);" statement_identifier : (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" * (cast_expression "(uint **)(puVar24 + 0x1e29c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e29c)" ( (binary_expression "puVar24 + 0x1e29c" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_00018240:\n  uVar18 = *puVar19;" statement_identifier : (expression_statement "uVar18 = *puVar19;" (assignment_expression "uVar18 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;)) (if_statement "if (uVar18 < *puVar21) {\n    uVar12 = (uint)*(byte *)(iVar20 + uVar18);\n    *puVar19 = uVar18 + 1;\n  }\n  else {\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }" if (parenthesized_expression "(uVar18 < *puVar21)" ( (binary_expression "uVar18 < *puVar21" identifier < (pointer_expression "*puVar21" * identifier)) )) (compound_statement "{\n    uVar12 = (uint)*(byte *)(iVar20 + uVar18);\n    *puVar19 = uVar18 + 1;\n  }" { (expression_statement "uVar12 = (uint)*(byte *)(iVar20 + uVar18);" (assignment_expression "uVar12 = (uint)*(byte *)(iVar20 + uVar18)" identifier = (binary_expression "(uint)*(byte *)(iVar20 + uVar18)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar20 + uVar18)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar18)" ( (binary_expression "iVar20 + uVar18" identifier + identifier) ))))) ;) (expression_statement "*puVar19 = uVar18 + 1;" (assignment_expression "*puVar19 = uVar18 + 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }" else (compound_statement "{\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }" { (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "uVar12 = fill_inbuf(0);" (assignment_expression "uVar12 = fill_inbuf(0)" identifier = (call_expression "fill_inbuf(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "uVar12 = uVar12 & 0xff;" (assignment_expression "uVar12 = uVar12 & 0xff" identifier = (binary_expression "uVar12 & 0xff" identifier & number_literal)) ;) }))) (expression_statement "uVar18 = uVar26 & 0x1f;" (assignment_expression "uVar18 = uVar26 & 0x1f" identifier = (binary_expression "uVar26 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar26 = uVar26 + 8;" (assignment_expression "uVar26 = uVar26 + 8" identifier = (binary_expression "uVar26 + 8" identifier + number_literal)) ;) (expression_statement "uVar22 = uVar22 | uVar12 << uVar18;" (assignment_expression "uVar22 = uVar22 | uVar12 << uVar18" identifier = (binary_expression "uVar22 | uVar12 << uVar18" identifier | (binary_expression "uVar12 << uVar18" identifier << identifier))) ;) (goto_statement "goto LAB_000181c8;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n\nvoid abort_gzip(void)\n\n{\n  remove_output_file();\n                    /* WARNING: Subroutine does not return */\n  do_exit(1);\n}\n\n" comment (function_definition "void abort_gzip(void)\n\n{\n  remove_output_file();\n                    /* WARNING: Subroutine does not return */\n  do_exit(1);\n}" primitive_type (function_declarator "abort_gzip(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  remove_output_file();\n                    /* WARNING: Subroutine does not return */\n  do_exit(1);\n}" { (expression_statement "remove_output_file();" (call_expression "remove_output_file()" identifier (argument_list "()" ( ))) ;) comment (expression_statement "do_exit(1);" (call_expression "do_exit(1)" identifier (argument_list "(1)" ( number_literal ))) ;) })))
(translation_unit "undefined4 abort_gzip(undefined4 param_1,int param_2,uint param_3,uint param_4)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort uVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined1 *puVar8;\n  undefined1 *puVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  uint *puVar16;\n  byte *pbVar17;\n  uint uVar18;\n  uint *puVar19;\n  int iVar20;\n  uint *puVar21;\n  uint uVar22;\n  uint uVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  uint uVar26;\n  byte *pbStack_74;\n  \n  FUN_0001463c();\n  puVar24 = PTR_00036394 + 0x6084;\n  iVar11 = 1;\n  FUN_00016084();\n  iVar14 = *(int *)(puVar24 + 0x1e268);\n  iVar13 = *(int *)(puVar24 + 0x1e268);\n  iVar10 = *(int *)(puVar24 + 0x1e278) + 0x4e40;\n  puVar16 = *(uint **)(puVar24 + 0x1e368);\n  uVar2 = *(ushort *)(iVar10 + param_3 * 2);\n  uVar3 = *(ushort *)(iVar10 + param_4 * 2);\n  puVar19 = *(uint **)(puVar24 + 0x1e298);\n  uVar22 = *(uint *)(iVar13 + 0x6d38);\n  uVar26 = *(uint *)(iVar14 + 0x6d34);\n  uVar23 = *puVar16;\n  iVar20 = *(int *)(puVar24 + 0x1e2a0);\nLAB_000181c8:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\n  if (param_3 <= uVar26) goto LAB_000181d8;\n  goto LAB_00018240;\nLAB_000181d8:\n  pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8);\n  uVar18 = (uint)*pbVar17;\n  if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    if (uVar18 == 99) {\n      return 1;\n    }\n    do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );\n  }\n  uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n  uVar26 = uVar26 - pbVar17[1];\n  if (uVar18 == 0x10) {\n    uVar18 = uVar23 + 1;\n    *(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);\n    if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }\n    uVar23 = uVar18;\n    if (uVar26 < param_3) goto code_r0x0001823c;\n    goto LAB_000181d8;\n  }\n  if (uVar18 == 0xf) {\n    *puVar16 = uVar23;\n    *(uint *)(iVar13 + 0x6d38) = uVar22;\n    *(uint *)(iVar14 + 0x6d34) = uVar26;\n    return 0;\n  }\n  if (uVar26 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);\n  }\n  uVar4 = *(ushort *)(pbVar17 + 4);\n  uVar26 = uVar26 - uVar18;\n  uVar12 = uVar22 >> (uVar18 & 0x1f);\n  uVar5 = *(ushort *)(iVar10 + uVar18 * 2);\n  if (uVar26 < param_4) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);\n  }\nLAB_0001839c:\n  pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8);\n  uVar18 = (uint)*pbStack_74;\n  if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);\n  }\n  uVar26 = uVar26 - pbStack_74[1];\n  uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\n  if (uVar26 < uVar18) {\n    uVar7 = *puVar19;\n    uVar6 = uVar26;\n    while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }\n  }\n  iVar15 = *(int *)(puVar24 + 0x1e37c);\n  uVar26 = uVar26 - uVar18;\n  uVar6 = uVar5 & uVar22;\n  uVar22 = uVar12 >> (uVar18 & 0x1f);\n  uVar6 = uVar6 + uVar4;\n  uVar18 = (uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12);\n  do {\n    uVar18 = uVar18 & 0x7fff;\n    if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }\n    uVar23 = uVar23 + uVar12;\n    uVar18 = uVar12 + uVar18;\n    if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }\n  } while (uVar6 != 0);\n  goto LAB_000181c8;\ncode_r0x0001823c:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\nLAB_00018240:\n  uVar18 = *puVar19;\n  if (uVar18 < *puVar21) {\n    uVar12 = (uint)*(byte *)(iVar20 + uVar18);\n    *puVar19 = uVar18 + 1;\n  }\n  else {\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }\n  uVar18 = uVar26 & 0x1f;\n  uVar26 = uVar26 + 8;\n  uVar22 = uVar22 | uVar12 << uVar18;\n  goto LAB_000181c8;\n}\n\n" (function_definition "undefined4 abort_gzip(undefined4 param_1,int param_2,uint param_3,uint param_4)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort uVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined1 *puVar8;\n  undefined1 *puVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  uint *puVar16;\n  byte *pbVar17;\n  uint uVar18;\n  uint *puVar19;\n  int iVar20;\n  uint *puVar21;\n  uint uVar22;\n  uint uVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  uint uVar26;\n  byte *pbStack_74;\n  \n  FUN_0001463c();\n  puVar24 = PTR_00036394 + 0x6084;\n  iVar11 = 1;\n  FUN_00016084();\n  iVar14 = *(int *)(puVar24 + 0x1e268);\n  iVar13 = *(int *)(puVar24 + 0x1e268);\n  iVar10 = *(int *)(puVar24 + 0x1e278) + 0x4e40;\n  puVar16 = *(uint **)(puVar24 + 0x1e368);\n  uVar2 = *(ushort *)(iVar10 + param_3 * 2);\n  uVar3 = *(ushort *)(iVar10 + param_4 * 2);\n  puVar19 = *(uint **)(puVar24 + 0x1e298);\n  uVar22 = *(uint *)(iVar13 + 0x6d38);\n  uVar26 = *(uint *)(iVar14 + 0x6d34);\n  uVar23 = *puVar16;\n  iVar20 = *(int *)(puVar24 + 0x1e2a0);\nLAB_000181c8:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\n  if (param_3 <= uVar26) goto LAB_000181d8;\n  goto LAB_00018240;\nLAB_000181d8:\n  pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8);\n  uVar18 = (uint)*pbVar17;\n  if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    if (uVar18 == 99) {\n      return 1;\n    }\n    do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );\n  }\n  uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n  uVar26 = uVar26 - pbVar17[1];\n  if (uVar18 == 0x10) {\n    uVar18 = uVar23 + 1;\n    *(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);\n    if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }\n    uVar23 = uVar18;\n    if (uVar26 < param_3) goto code_r0x0001823c;\n    goto LAB_000181d8;\n  }\n  if (uVar18 == 0xf) {\n    *puVar16 = uVar23;\n    *(uint *)(iVar13 + 0x6d38) = uVar22;\n    *(uint *)(iVar14 + 0x6d34) = uVar26;\n    return 0;\n  }\n  if (uVar26 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);\n  }\n  uVar4 = *(ushort *)(pbVar17 + 4);\n  uVar26 = uVar26 - uVar18;\n  uVar12 = uVar22 >> (uVar18 & 0x1f);\n  uVar5 = *(ushort *)(iVar10 + uVar18 * 2);\n  if (uVar26 < param_4) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);\n  }\nLAB_0001839c:\n  pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8);\n  uVar18 = (uint)*pbStack_74;\n  if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);\n  }\n  uVar26 = uVar26 - pbStack_74[1];\n  uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\n  if (uVar26 < uVar18) {\n    uVar7 = *puVar19;\n    uVar6 = uVar26;\n    while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }\n  }\n  iVar15 = *(int *)(puVar24 + 0x1e37c);\n  uVar26 = uVar26 - uVar18;\n  uVar6 = uVar5 & uVar22;\n  uVar22 = uVar12 >> (uVar18 & 0x1f);\n  uVar6 = uVar6 + uVar4;\n  uVar18 = (uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12);\n  do {\n    uVar18 = uVar18 & 0x7fff;\n    if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }\n    uVar23 = uVar23 + uVar12;\n    uVar18 = uVar12 + uVar18;\n    if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }\n  } while (uVar6 != 0);\n  goto LAB_000181c8;\ncode_r0x0001823c:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\nLAB_00018240:\n  uVar18 = *puVar19;\n  if (uVar18 < *puVar21) {\n    uVar12 = (uint)*(byte *)(iVar20 + uVar18);\n    *puVar19 = uVar18 + 1;\n  }\n  else {\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }\n  uVar18 = uVar26 & 0x1f;\n  uVar26 = uVar26 + 8;\n  uVar22 = uVar22 | uVar12 << uVar18;\n  goto LAB_000181c8;\n}" type_identifier (function_declarator "abort_gzip(undefined4 param_1,int param_2,uint param_3,uint param_4)" identifier (parameter_list "(undefined4 param_1,int param_2,uint param_3,uint param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  ushort uVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort uVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined1 *puVar8;\n  undefined1 *puVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  uint *puVar16;\n  byte *pbVar17;\n  uint uVar18;\n  uint *puVar19;\n  int iVar20;\n  uint *puVar21;\n  uint uVar22;\n  uint uVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  uint uVar26;\n  byte *pbStack_74;\n  \n  FUN_0001463c();\n  puVar24 = PTR_00036394 + 0x6084;\n  iVar11 = 1;\n  FUN_00016084();\n  iVar14 = *(int *)(puVar24 + 0x1e268);\n  iVar13 = *(int *)(puVar24 + 0x1e268);\n  iVar10 = *(int *)(puVar24 + 0x1e278) + 0x4e40;\n  puVar16 = *(uint **)(puVar24 + 0x1e368);\n  uVar2 = *(ushort *)(iVar10 + param_3 * 2);\n  uVar3 = *(ushort *)(iVar10 + param_4 * 2);\n  puVar19 = *(uint **)(puVar24 + 0x1e298);\n  uVar22 = *(uint *)(iVar13 + 0x6d38);\n  uVar26 = *(uint *)(iVar14 + 0x6d34);\n  uVar23 = *puVar16;\n  iVar20 = *(int *)(puVar24 + 0x1e2a0);\nLAB_000181c8:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\n  if (param_3 <= uVar26) goto LAB_000181d8;\n  goto LAB_00018240;\nLAB_000181d8:\n  pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8);\n  uVar18 = (uint)*pbVar17;\n  if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    if (uVar18 == 99) {\n      return 1;\n    }\n    do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );\n  }\n  uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n  uVar26 = uVar26 - pbVar17[1];\n  if (uVar18 == 0x10) {\n    uVar18 = uVar23 + 1;\n    *(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);\n    if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }\n    uVar23 = uVar18;\n    if (uVar26 < param_3) goto code_r0x0001823c;\n    goto LAB_000181d8;\n  }\n  if (uVar18 == 0xf) {\n    *puVar16 = uVar23;\n    *(uint *)(iVar13 + 0x6d38) = uVar22;\n    *(uint *)(iVar14 + 0x6d34) = uVar26;\n    return 0;\n  }\n  if (uVar26 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);\n  }\n  uVar4 = *(ushort *)(pbVar17 + 4);\n  uVar26 = uVar26 - uVar18;\n  uVar12 = uVar22 >> (uVar18 & 0x1f);\n  uVar5 = *(ushort *)(iVar10 + uVar18 * 2);\n  if (uVar26 < param_4) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);\n  }\nLAB_0001839c:\n  pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8);\n  uVar18 = (uint)*pbStack_74;\n  if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);\n  }\n  uVar26 = uVar26 - pbStack_74[1];\n  uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\n  if (uVar26 < uVar18) {\n    uVar7 = *puVar19;\n    uVar6 = uVar26;\n    while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }\n  }\n  iVar15 = *(int *)(puVar24 + 0x1e37c);\n  uVar26 = uVar26 - uVar18;\n  uVar6 = uVar5 & uVar22;\n  uVar22 = uVar12 >> (uVar18 & 0x1f);\n  uVar6 = uVar6 + uVar4;\n  uVar18 = (uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12);\n  do {\n    uVar18 = uVar18 & 0x7fff;\n    if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }\n    uVar23 = uVar23 + uVar12;\n    uVar18 = uVar12 + uVar18;\n    if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }\n  } while (uVar6 != 0);\n  goto LAB_000181c8;\ncode_r0x0001823c:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\nLAB_00018240:\n  uVar18 = *puVar19;\n  if (uVar18 < *puVar21) {\n    uVar12 = (uint)*(byte *)(iVar20 + uVar18);\n    *puVar19 = uVar18 + 1;\n  }\n  else {\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }\n  uVar18 = uVar26 & 0x1f;\n  uVar26 = uVar26 + 8;\n  uVar22 = uVar22 | uVar12 << uVar18;\n  goto LAB_000181c8;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "ushort uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "uint *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "uint *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "undefined *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "code *pcVar25;" type_identifier (pointer_declarator "*pcVar25" * identifier) ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "byte *pbStack_74;" type_identifier (pointer_declarator "*pbStack_74" * identifier) ;) (expression_statement "FUN_0001463c();" (call_expression "FUN_0001463c()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar24 = PTR_00036394 + 0x6084;" (assignment_expression "puVar24 = PTR_00036394 + 0x6084" identifier = (binary_expression "PTR_00036394 + 0x6084" identifier + number_literal)) ;) (expression_statement "iVar11 = 1;" (assignment_expression "iVar11 = 1" identifier = number_literal) ;) (expression_statement "FUN_00016084();" (call_expression "FUN_00016084()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar14 = *(int *)(puVar24 + 0x1e268);" (assignment_expression "iVar14 = *(int *)(puVar24 + 0x1e268)" identifier = (pointer_expression "*(int *)(puVar24 + 0x1e268)" * (cast_expression "(int *)(puVar24 + 0x1e268)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x1e268)" ( (binary_expression "puVar24 + 0x1e268" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(puVar24 + 0x1e268);" (assignment_expression "iVar13 = *(int *)(puVar24 + 0x1e268)" identifier = (pointer_expression "*(int *)(puVar24 + 0x1e268)" * (cast_expression "(int *)(puVar24 + 0x1e268)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x1e268)" ( (binary_expression "puVar24 + 0x1e268" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *(int *)(puVar24 + 0x1e278) + 0x4e40;" (assignment_expression "iVar10 = *(int *)(puVar24 + 0x1e278) + 0x4e40" identifier = (binary_expression "*(int *)(puVar24 + 0x1e278) + 0x4e40" (pointer_expression "*(int *)(puVar24 + 0x1e278)" * (cast_expression "(int *)(puVar24 + 0x1e278)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x1e278)" ( (binary_expression "puVar24 + 0x1e278" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puVar16 = *(uint **)(puVar24 + 0x1e368);" (assignment_expression "puVar16 = *(uint **)(puVar24 + 0x1e368)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e368)" * (cast_expression "(uint **)(puVar24 + 0x1e368)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e368)" ( (binary_expression "puVar24 + 0x1e368" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(ushort *)(iVar10 + param_3 * 2);" (assignment_expression "uVar2 = *(ushort *)(iVar10 + param_3 * 2)" identifier = (pointer_expression "*(ushort *)(iVar10 + param_3 * 2)" * (cast_expression "(ushort *)(iVar10 + param_3 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + param_3 * 2)" ( (binary_expression "iVar10 + param_3 * 2" identifier + (binary_expression "param_3 * 2" identifier * number_literal)) ))))) ;) (expression_statement "uVar3 = *(ushort *)(iVar10 + param_4 * 2);" (assignment_expression "uVar3 = *(ushort *)(iVar10 + param_4 * 2)" identifier = (pointer_expression "*(ushort *)(iVar10 + param_4 * 2)" * (cast_expression "(ushort *)(iVar10 + param_4 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + param_4 * 2)" ( (binary_expression "iVar10 + param_4 * 2" identifier + (binary_expression "param_4 * 2" identifier * number_literal)) ))))) ;) (expression_statement "puVar19 = *(uint **)(puVar24 + 0x1e298);" (assignment_expression "puVar19 = *(uint **)(puVar24 + 0x1e298)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e298)" * (cast_expression "(uint **)(puVar24 + 0x1e298)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e298)" ( (binary_expression "puVar24 + 0x1e298" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = *(uint *)(iVar13 + 0x6d38);" (assignment_expression "uVar22 = *(uint *)(iVar13 + 0x6d38)" identifier = (pointer_expression "*(uint *)(iVar13 + 0x6d38)" * (cast_expression "(uint *)(iVar13 + 0x6d38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x6d38)" ( (binary_expression "iVar13 + 0x6d38" identifier + number_literal) ))))) ;) (expression_statement "uVar26 = *(uint *)(iVar14 + 0x6d34);" (assignment_expression "uVar26 = *(uint *)(iVar14 + 0x6d34)" identifier = (pointer_expression "*(uint *)(iVar14 + 0x6d34)" * (cast_expression "(uint *)(iVar14 + 0x6d34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x6d34)" ( (binary_expression "iVar14 + 0x6d34" identifier + number_literal) ))))) ;) (expression_statement "uVar23 = *puVar16;" (assignment_expression "uVar23 = *puVar16" identifier = (pointer_expression "*puVar16" * identifier)) ;) (expression_statement "iVar20 = *(int *)(puVar24 + 0x1e2a0);" (assignment_expression "iVar20 = *(int *)(puVar24 + 0x1e2a0)" identifier = (pointer_expression "*(int *)(puVar24 + 0x1e2a0)" * (cast_expression "(int *)(puVar24 + 0x1e2a0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x1e2a0)" ( (binary_expression "puVar24 + 0x1e2a0" identifier + number_literal) ))))) ;) (labeled_statement "LAB_000181c8:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);" statement_identifier : (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" * (cast_expression "(uint **)(puVar24 + 0x1e29c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e29c)" ( (binary_expression "puVar24 + 0x1e29c" identifier + number_literal) ))))) ;)) (if_statement "if (param_3 <= uVar26) goto LAB_000181d8;" if (parenthesized_expression "(param_3 <= uVar26)" ( (binary_expression "param_3 <= uVar26" identifier <= identifier) )) (goto_statement "goto LAB_000181d8;" goto statement_identifier ;)) (goto_statement "goto LAB_00018240;" goto statement_identifier ;) (labeled_statement "LAB_000181d8:\n  pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8);" statement_identifier : (expression_statement "pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8);" (assignment_expression "pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8)" identifier = (cast_expression "(byte *)(iVar11 + (uVar22 & uVar2) * 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + (uVar22 & uVar2) * 8)" ( (binary_expression "iVar11 + (uVar22 & uVar2) * 8" identifier + (binary_expression "(uVar22 & uVar2) * 8" (parenthesized_expression "(uVar22 & uVar2)" ( (binary_expression "uVar22 & uVar2" identifier & identifier) )) * number_literal)) )))) ;)) (expression_statement "uVar18 = (uint)*pbVar17;" (assignment_expression "uVar18 = (uint)*pbVar17" identifier = (binary_expression "(uint)*pbVar17" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    if (uVar18 == 99) {\n      return 1;\n    }\n    do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );\n  }" if (parenthesized_expression "(0x10 < uVar18)" ( (binary_expression "0x10 < uVar18" number_literal < identifier) )) (compound_statement "{\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    if (uVar18 == 99) {\n      return 1;\n    }\n    do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );\n  }" { (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" * (cast_expression "(uint **)(puVar24 + 0x1e29c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e29c)" ( (binary_expression "puVar24 + 0x1e29c" identifier + number_literal) ))))) ;) (if_statement "if (uVar18 == 99) {\n      return 1;\n    }" if (parenthesized_expression "(uVar18 == 99)" ( (binary_expression "uVar18 == 99" identifier == number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (do_statement "do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );" do (compound_statement "{\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    }" { (expression_statement "uVar18 = uVar18 - 0x10;" (assignment_expression "uVar18 = uVar18 - 0x10" identifier = (binary_expression "uVar18 - 0x10" identifier - number_literal)) ;) (expression_statement "uVar26 = uVar26 - pbVar17[1];" (assignment_expression "uVar26 = uVar26 - pbVar17[1]" identifier = (binary_expression "uVar26 - pbVar17[1]" identifier - (subscript_expression "pbVar17[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar22 = uVar22 >> (pbVar17[1] & 0x1f);" (assignment_expression "uVar22 = uVar22 >> (pbVar17[1] & 0x1f)" identifier = (binary_expression "uVar22 >> (pbVar17[1] & 0x1f)" identifier >> (parenthesized_expression "(pbVar17[1] & 0x1f)" ( (binary_expression "pbVar17[1] & 0x1f" (subscript_expression "pbVar17[1]" identifier [ number_literal ]) & number_literal) )))) ;) (if_statement "if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }" if (parenthesized_expression "(uVar26 < uVar18)" ( (binary_expression "uVar26 < uVar18" identifier < identifier) )) (compound_statement "{\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }" { (do_statement "do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);" do (compound_statement "{\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        }" { (while_statement "while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }" { (expression_statement "uVar12 = uVar26;" (assignment_expression "uVar12 = uVar26" identifier = identifier) ;) (expression_statement "uVar26 = *puVar19;" (assignment_expression "uVar26 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (if_statement "if (uVar26 < *puVar21) break;" if (parenthesized_expression "(uVar26 < *puVar21)" ( (binary_expression "uVar26 < *puVar21" identifier < (pointer_expression "*puVar21" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "uVar26 = fill_inbuf(0);" (assignment_expression "uVar26 = fill_inbuf(0)" identifier = (call_expression "fill_inbuf(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);" (assignment_expression "uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f)" identifier = (binary_expression "uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f)" identifier | (binary_expression "(uVar26 & 0xff) << (uVar12 & 0x1f)" (parenthesized_expression "(uVar26 & 0xff)" ( (binary_expression "uVar26 & 0xff" identifier & number_literal) )) << (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar26 = uVar12 + 8;" (assignment_expression "uVar26 = uVar12 + 8" identifier = (binary_expression "uVar12 + 8" identifier + number_literal)) ;) (if_statement "if (uVar18 <= uVar12 + 8) goto LAB_0001856c;" if (parenthesized_expression "(uVar18 <= uVar12 + 8)" ( (binary_expression "uVar18 <= uVar12 + 8" identifier <= (binary_expression "uVar12 + 8" identifier + number_literal)) )) (goto_statement "goto LAB_0001856c;" goto statement_identifier ;)) })) (expression_statement "uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);" (assignment_expression "uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f)" identifier = (binary_expression "uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f)" identifier | (binary_expression "(uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f)" (binary_expression "(uint)*(byte *)(iVar20 + uVar26)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar20 + uVar26)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar26)" ( (binary_expression "iVar20 + uVar26" identifier + identifier) )))) << (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "*puVar19 = uVar26 + 1;" (assignment_expression "*puVar19 = uVar26 + 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "uVar26 = uVar12 + 8;" (assignment_expression "uVar26 = uVar12 + 8" identifier = (binary_expression "uVar12 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar12 + 8 < uVar18)" ( (binary_expression "uVar12 + 8 < uVar18" (binary_expression "uVar12 + 8" identifier + number_literal) < identifier) )) ;) (labeled_statement "LAB_0001856c:\n        uVar26 = uVar12 + 8;" statement_identifier : (expression_statement "uVar26 = uVar12 + 8;" (assignment_expression "uVar26 = uVar12 + 8" identifier = (binary_expression "uVar12 + 8" identifier + number_literal)) ;)) })) (expression_statement "pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);" (assignment_expression "pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8)" identifier = (cast_expression "(byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8)" ( (binary_expression "*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8" (pointer_expression "*(int *)(pbVar17 + 4)" * (cast_expression "(int *)(pbVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar17 + 4)" ( (binary_expression "pbVar17 + 4" identifier + number_literal) )))) + (binary_expression "(*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8" (parenthesized_expression "(*(ushort *)(iVar10 + uVar18 * 2) & uVar22)" ( (binary_expression "*(ushort *)(iVar10 + uVar18 * 2) & uVar22" (pointer_expression "*(ushort *)(iVar10 + uVar18 * 2)" * (cast_expression "(ushort *)(iVar10 + uVar18 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar18 * 2)" ( (binary_expression "iVar10 + uVar18 * 2" identifier + (binary_expression "uVar18 * 2" identifier * number_literal)) )))) & identifier) )) * number_literal)) )))) ;) (expression_statement "uVar18 = (uint)*pbVar17;" (assignment_expression "uVar18 = (uint)*pbVar17" identifier = (binary_expression "(uint)*pbVar17" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (uVar18 < 0x11) break;" if (parenthesized_expression "(uVar18 < 0x11)" ( (binary_expression "uVar18 < 0x11" identifier < number_literal) )) (break_statement "break;" break ;)) (if_statement "if (uVar18 == 99) {\n        return 1;\n      }" if (parenthesized_expression "(uVar18 == 99)" ( (binary_expression "uVar18 == 99" identifier == number_literal) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "uVar22 = uVar22 >> (pbVar17[1] & 0x1f);" (assignment_expression "uVar22 = uVar22 >> (pbVar17[1] & 0x1f)" identifier = (binary_expression "uVar22 >> (pbVar17[1] & 0x1f)" identifier >> (parenthesized_expression "(pbVar17[1] & 0x1f)" ( (binary_expression "pbVar17[1] & 0x1f" (subscript_expression "pbVar17[1]" identifier [ number_literal ]) & number_literal) )))) ;) (expression_statement "uVar26 = uVar26 - pbVar17[1];" (assignment_expression "uVar26 = uVar26 - pbVar17[1]" identifier = (binary_expression "uVar26 - pbVar17[1]" identifier - (subscript_expression "pbVar17[1]" identifier [ number_literal ]))) ;) (if_statement "if (uVar18 == 0x10) {\n    uVar18 = uVar23 + 1;\n    *(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);\n    if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }\n    uVar23 = uVar18;\n    if (uVar26 < param_3) goto code_r0x0001823c;\n    goto LAB_000181d8;\n  }" if (parenthesized_expression "(uVar18 == 0x10)" ( (binary_expression "uVar18 == 0x10" identifier == number_literal) )) (compound_statement "{\n    uVar18 = uVar23 + 1;\n    *(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);\n    if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }\n    uVar23 = uVar18;\n    if (uVar26 < param_3) goto code_r0x0001823c;\n    goto LAB_000181d8;\n  }" { (expression_statement "uVar18 = uVar23 + 1;" (assignment_expression "uVar18 = uVar23 + 1" identifier = (binary_expression "uVar23 + 1" identifier + number_literal)) ;) (expression_statement "*(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);" (assignment_expression "*(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4)" (pointer_expression "*(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23)" * (cast_expression "(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar24 + 0x1e37c) + uVar23)" ( (binary_expression "*(int *)(puVar24 + 0x1e37c) + uVar23" (pointer_expression "*(int *)(puVar24 + 0x1e37c)" * (cast_expression "(int *)(puVar24 + 0x1e37c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x1e37c)" ( (binary_expression "puVar24 + 0x1e37c" identifier + number_literal) )))) + identifier) )))) = (cast_expression "(char)*(undefined2 *)(pbVar17 + 4)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(undefined2 *)(pbVar17 + 4)" * (cast_expression "(undefined2 *)(pbVar17 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar17 + 4)" ( (binary_expression "pbVar17 + 4" identifier + number_literal) )))))) ;) (if_statement "if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }" if (parenthesized_expression "(uVar18 == 0x8000)" ( (binary_expression "uVar18 == 0x8000" identifier == number_literal) )) (compound_statement "{\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }" { (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (expression_statement "*puVar16 = 0x8000;" (assignment_expression "*puVar16 = 0x8000" (pointer_expression "*puVar16" * identifier) = number_literal) ;) (expression_statement "flush_window();" (call_expression "flush_window()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000181c8;" goto statement_identifier ;) })) (expression_statement "uVar23 = uVar18;" (assignment_expression "uVar23 = uVar18" identifier = identifier) ;) (if_statement "if (uVar26 < param_3) goto code_r0x0001823c;" if (parenthesized_expression "(uVar26 < param_3)" ( (binary_expression "uVar26 < param_3" identifier < identifier) )) (goto_statement "goto code_r0x0001823c;" goto statement_identifier ;)) (goto_statement "goto LAB_000181d8;" goto statement_identifier ;) })) (if_statement "if (uVar18 == 0xf) {\n    *puVar16 = uVar23;\n    *(uint *)(iVar13 + 0x6d38) = uVar22;\n    *(uint *)(iVar14 + 0x6d34) = uVar26;\n    return 0;\n  }" if (parenthesized_expression "(uVar18 == 0xf)" ( (binary_expression "uVar18 == 0xf" identifier == number_literal) )) (compound_statement "{\n    *puVar16 = uVar23;\n    *(uint *)(iVar13 + 0x6d38) = uVar22;\n    *(uint *)(iVar14 + 0x6d34) = uVar26;\n    return 0;\n  }" { (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "*(uint *)(iVar13 + 0x6d38) = uVar22;" (assignment_expression "*(uint *)(iVar13 + 0x6d38) = uVar22" (pointer_expression "*(uint *)(iVar13 + 0x6d38)" * (cast_expression "(uint *)(iVar13 + 0x6d38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x6d38)" ( (binary_expression "iVar13 + 0x6d38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar14 + 0x6d34) = uVar26;" (assignment_expression "*(uint *)(iVar14 + 0x6d34) = uVar26" (pointer_expression "*(uint *)(iVar14 + 0x6d34)" * (cast_expression "(uint *)(iVar14 + 0x6d34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x6d34)" ( (binary_expression "iVar14 + 0x6d34" identifier + number_literal) )))) = identifier) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (uVar26 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);\n  }" if (parenthesized_expression "(uVar26 < uVar18)" ( (binary_expression "uVar26 < uVar18" identifier < identifier) )) (compound_statement "{\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);\n  }" { (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" * (cast_expression "(uint **)(puVar24 + 0x1e29c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e29c)" ( (binary_expression "puVar24 + 0x1e29c" identifier + number_literal) ))))) ;) (do_statement "do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);" do (compound_statement "{\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    }" { (expression_statement "uVar12 = *puVar19;" (assignment_expression "uVar12 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (if_statement "if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }" if (parenthesized_expression "(uVar12 < *puVar21)" ( (binary_expression "uVar12 < *puVar21" identifier < (pointer_expression "*puVar21" * identifier)) )) (compound_statement "{\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }" { (expression_statement "uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);" (assignment_expression "uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f)" identifier = (binary_expression "(uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f)" (binary_expression "(uint)*(byte *)(iVar20 + uVar12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar20 + uVar12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar12)" ( (binary_expression "iVar20 + uVar12" identifier + identifier) )))) << (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "*puVar19 = uVar12 + 1;" (assignment_expression "*puVar19 = uVar12 + 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }" else (compound_statement "{\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }" { (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "uVar12 = fill_inbuf(0);" (assignment_expression "uVar12 = fill_inbuf(0)" identifier = (call_expression "fill_inbuf(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);" (assignment_expression "uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f)" identifier = (binary_expression "(uVar12 & 0xff) << (uVar26 & 0x1f)" (parenthesized_expression "(uVar12 & 0xff)" ( (binary_expression "uVar12 & 0xff" identifier & number_literal) )) << (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) )))) ;) }))) (expression_statement "uVar22 = uVar22 | uVar6;" (assignment_expression "uVar22 = uVar22 | uVar6" identifier = (binary_expression "uVar22 | uVar6" identifier | identifier)) ;) (expression_statement "uVar26 = uVar26 + 8;" (assignment_expression "uVar26 = uVar26 + 8" identifier = (binary_expression "uVar26 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 < uVar18)" ( (binary_expression "uVar26 < uVar18" identifier < identifier) )) ;) })) (expression_statement "uVar4 = *(ushort *)(pbVar17 + 4);" (assignment_expression "uVar4 = *(ushort *)(pbVar17 + 4)" identifier = (pointer_expression "*(ushort *)(pbVar17 + 4)" * (cast_expression "(ushort *)(pbVar17 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar17 + 4)" ( (binary_expression "pbVar17 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar26 = uVar26 - uVar18;" (assignment_expression "uVar26 = uVar26 - uVar18" identifier = (binary_expression "uVar26 - uVar18" identifier - identifier)) ;) (expression_statement "uVar12 = uVar22 >> (uVar18 & 0x1f);" (assignment_expression "uVar12 = uVar22 >> (uVar18 & 0x1f)" identifier = (binary_expression "uVar22 >> (uVar18 & 0x1f)" identifier >> (parenthesized_expression "(uVar18 & 0x1f)" ( (binary_expression "uVar18 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar5 = *(ushort *)(iVar10 + uVar18 * 2);" (assignment_expression "uVar5 = *(ushort *)(iVar10 + uVar18 * 2)" identifier = (pointer_expression "*(ushort *)(iVar10 + uVar18 * 2)" * (cast_expression "(ushort *)(iVar10 + uVar18 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar18 * 2)" ( (binary_expression "iVar10 + uVar18 * 2" identifier + (binary_expression "uVar18 * 2" identifier * number_literal)) ))))) ;) (if_statement "if (uVar26 < param_4) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);\n  }" if (parenthesized_expression "(uVar26 < param_4)" ( (binary_expression "uVar26 < param_4" identifier < identifier) )) (compound_statement "{\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);\n  }" { (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" * (cast_expression "(uint **)(puVar24 + 0x1e29c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e29c)" ( (binary_expression "puVar24 + 0x1e29c" identifier + number_literal) ))))) ;) (do_statement "do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);" do (compound_statement "{\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    }" { (while_statement "while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }" { (expression_statement "uVar18 = *puVar19;" (assignment_expression "uVar18 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (if_statement "if (uVar18 < *puVar21) break;" if (parenthesized_expression "(uVar18 < *puVar21)" ( (binary_expression "uVar18 < *puVar21" identifier < (pointer_expression "*puVar21" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "uVar6 = fill_inbuf(0);" (assignment_expression "uVar6 = fill_inbuf(0)" identifier = (call_expression "fill_inbuf(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "uVar18 = uVar26 & 0x1f;" (assignment_expression "uVar18 = uVar26 & 0x1f" identifier = (binary_expression "uVar26 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar26 = uVar26 + 8;" (assignment_expression "uVar26 = uVar26 + 8" identifier = (binary_expression "uVar26 + 8" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;" (assignment_expression "uVar12 = uVar12 | (uVar6 & 0xff) << uVar18" identifier = (binary_expression "uVar12 | (uVar6 & 0xff) << uVar18" identifier | (binary_expression "(uVar6 & 0xff) << uVar18" (parenthesized_expression "(uVar6 & 0xff)" ( (binary_expression "uVar6 & 0xff" identifier & number_literal) )) << identifier))) ;) (if_statement "if (param_4 <= uVar26) goto LAB_0001839c;" if (parenthesized_expression "(param_4 <= uVar26)" ( (binary_expression "param_4 <= uVar26" identifier <= identifier) )) (goto_statement "goto LAB_0001839c;" goto statement_identifier ;)) })) (expression_statement "bVar1 = *(byte *)(iVar20 + uVar18);" (assignment_expression "bVar1 = *(byte *)(iVar20 + uVar18)" identifier = (pointer_expression "*(byte *)(iVar20 + uVar18)" * (cast_expression "(byte *)(iVar20 + uVar18)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar18)" ( (binary_expression "iVar20 + uVar18" identifier + identifier) ))))) ;) (expression_statement "*puVar19 = uVar18 + 1;" (assignment_expression "*puVar19 = uVar18 + 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "uVar18 = uVar26 & 0x1f;" (assignment_expression "uVar18 = uVar26 & 0x1f" identifier = (binary_expression "uVar26 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar26 = uVar26 + 8;" (assignment_expression "uVar26 = uVar26 + 8" identifier = (binary_expression "uVar26 + 8" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar12 | (uint)bVar1 << uVar18;" (assignment_expression "uVar12 = uVar12 | (uint)bVar1 << uVar18" identifier = (binary_expression "uVar12 | (uint)bVar1 << uVar18" identifier | (binary_expression "(uint)bVar1 << uVar18" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) << identifier))) ;) }) while (parenthesized_expression "(uVar26 < param_4)" ( (binary_expression "uVar26 < param_4" identifier < identifier) )) ;) })) (labeled_statement "LAB_0001839c:\n  pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8);" statement_identifier : (expression_statement "pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8);" (assignment_expression "pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8)" identifier = (cast_expression "(byte *)(param_2 + (uVar3 & uVar12) * 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + (uVar3 & uVar12) * 8)" ( (binary_expression "param_2 + (uVar3 & uVar12) * 8" identifier + (binary_expression "(uVar3 & uVar12) * 8" (parenthesized_expression "(uVar3 & uVar12)" ( (binary_expression "uVar3 & uVar12" identifier & identifier) )) * number_literal)) )))) ;)) (expression_statement "uVar18 = (uint)*pbStack_74;" (assignment_expression "uVar18 = (uint)*pbStack_74" identifier = (binary_expression "(uint)*pbStack_74" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);\n  }" if (parenthesized_expression "(0x10 < uVar18)" ( (binary_expression "0x10 < uVar18" number_literal < identifier) )) (compound_statement "{\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);\n  }" { (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" * (cast_expression "(uint **)(puVar24 + 0x1e29c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e29c)" ( (binary_expression "puVar24 + 0x1e29c" identifier + number_literal) ))))) ;) (do_statement "do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);" do (compound_statement "{\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    }" { (if_statement "if (uVar18 == 99) {\n        return 1;\n      }" if (parenthesized_expression "(uVar18 == 99)" ( (binary_expression "uVar18 == 99" identifier == number_literal) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar18 = uVar18 - 0x10;" (assignment_expression "uVar18 = uVar18 - 0x10" identifier = (binary_expression "uVar18 - 0x10" identifier - number_literal)) ;) (expression_statement "uVar26 = uVar26 - pbStack_74[1];" (assignment_expression "uVar26 = uVar26 - pbStack_74[1]" identifier = (binary_expression "uVar26 - pbStack_74[1]" identifier - (subscript_expression "pbStack_74[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);" (assignment_expression "uVar12 = uVar12 >> (pbStack_74[1] & 0x1f)" identifier = (binary_expression "uVar12 >> (pbStack_74[1] & 0x1f)" identifier >> (parenthesized_expression "(pbStack_74[1] & 0x1f)" ( (binary_expression "pbStack_74[1] & 0x1f" (subscript_expression "pbStack_74[1]" identifier [ number_literal ]) & number_literal) )))) ;) (if_statement "if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }" if (parenthesized_expression "(uVar26 < uVar18)" ( (binary_expression "uVar26 < uVar18" identifier < identifier) )) (compound_statement "{\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }" { (do_statement "do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);" do (compound_statement "{\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        }" { (while_statement "while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }" { (expression_statement "uVar6 = uVar26;" (assignment_expression "uVar6 = uVar26" identifier = identifier) ;) (expression_statement "uVar26 = *puVar19;" (assignment_expression "uVar26 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (if_statement "if (uVar26 < *puVar21) break;" if (parenthesized_expression "(uVar26 < *puVar21)" ( (binary_expression "uVar26 < *puVar21" identifier < (pointer_expression "*puVar21" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "uVar26 = fill_inbuf(0);" (assignment_expression "uVar26 = fill_inbuf(0)" identifier = (call_expression "fill_inbuf(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);" (assignment_expression "uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f)" identifier = (binary_expression "uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f)" identifier | (binary_expression "(uVar26 & 0xff) << (uVar6 & 0x1f)" (parenthesized_expression "(uVar26 & 0xff)" ( (binary_expression "uVar26 & 0xff" identifier & number_literal) )) << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar26 = uVar6 + 8;" (assignment_expression "uVar26 = uVar6 + 8" identifier = (binary_expression "uVar6 + 8" identifier + number_literal)) ;) (if_statement "if (uVar18 <= uVar6 + 8) goto LAB_00018454;" if (parenthesized_expression "(uVar18 <= uVar6 + 8)" ( (binary_expression "uVar18 <= uVar6 + 8" identifier <= (binary_expression "uVar6 + 8" identifier + number_literal)) )) (goto_statement "goto LAB_00018454;" goto statement_identifier ;)) })) (expression_statement "uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);" (assignment_expression "uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f)" identifier = (binary_expression "uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f)" identifier | (binary_expression "(uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f)" (binary_expression "(uint)*(byte *)(iVar20 + uVar26)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar20 + uVar26)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar26)" ( (binary_expression "iVar20 + uVar26" identifier + identifier) )))) << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "*puVar19 = uVar26 + 1;" (assignment_expression "*puVar19 = uVar26 + 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "uVar26 = uVar6 + 8;" (assignment_expression "uVar26 = uVar6 + 8" identifier = (binary_expression "uVar6 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 + 8 < uVar18)" ( (binary_expression "uVar6 + 8 < uVar18" (binary_expression "uVar6 + 8" identifier + number_literal) < identifier) )) ;) (labeled_statement "LAB_00018454:\n        uVar26 = uVar6 + 8;" statement_identifier : (expression_statement "uVar26 = uVar6 + 8;" (assignment_expression "uVar26 = uVar6 + 8" identifier = (binary_expression "uVar6 + 8" identifier + number_literal)) ;)) })) (expression_statement "pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);" (assignment_expression "pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8)" identifier = (cast_expression "(byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8)" ( (binary_expression "*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8" (pointer_expression "*(int *)(pbStack_74 + 4)" * (cast_expression "(int *)(pbStack_74 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbStack_74 + 4)" ( (binary_expression "pbStack_74 + 4" identifier + number_literal) )))) + (binary_expression "(*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8" (parenthesized_expression "(*(ushort *)(iVar10 + uVar18 * 2) & uVar12)" ( (binary_expression "*(ushort *)(iVar10 + uVar18 * 2) & uVar12" (pointer_expression "*(ushort *)(iVar10 + uVar18 * 2)" * (cast_expression "(ushort *)(iVar10 + uVar18 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar18 * 2)" ( (binary_expression "iVar10 + uVar18 * 2" identifier + (binary_expression "uVar18 * 2" identifier * number_literal)) )))) & identifier) )) * number_literal)) )))) ;) (expression_statement "uVar18 = (uint)*pbStack_74;" (assignment_expression "uVar18 = (uint)*pbStack_74" identifier = (binary_expression "(uint)*pbStack_74" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) while (parenthesized_expression "(0x10 < uVar18)" ( (binary_expression "0x10 < uVar18" number_literal < identifier) )) ;) })) (expression_statement "uVar26 = uVar26 - pbStack_74[1];" (assignment_expression "uVar26 = uVar26 - pbStack_74[1]" identifier = (binary_expression "uVar26 - pbStack_74[1]" identifier - (subscript_expression "pbStack_74[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);" (assignment_expression "uVar12 = uVar12 >> (pbStack_74[1] & 0x1f)" identifier = (binary_expression "uVar12 >> (pbStack_74[1] & 0x1f)" identifier >> (parenthesized_expression "(pbStack_74[1] & 0x1f)" ( (binary_expression "pbStack_74[1] & 0x1f" (subscript_expression "pbStack_74[1]" identifier [ number_literal ]) & number_literal) )))) ;) (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" * (cast_expression "(uint **)(puVar24 + 0x1e29c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e29c)" ( (binary_expression "puVar24 + 0x1e29c" identifier + number_literal) ))))) ;) (if_statement "if (uVar26 < uVar18) {\n    uVar7 = *puVar19;\n    uVar6 = uVar26;\n    while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }\n  }" if (parenthesized_expression "(uVar26 < uVar18)" ( (binary_expression "uVar26 < uVar18" identifier < identifier) )) (compound_statement "{\n    uVar7 = *puVar19;\n    uVar6 = uVar26;\n    while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }\n  }" { (expression_statement "uVar7 = *puVar19;" (assignment_expression "uVar7 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "uVar6 = uVar26;" (assignment_expression "uVar6 = uVar26" identifier = identifier) ;) (while_statement "while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }" { (if_statement "if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }" if (parenthesized_expression "(uVar7 < *puVar21)" ( (binary_expression "uVar7 < *puVar21" identifier < (pointer_expression "*puVar21" * identifier)) )) (compound_statement "{\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }" { (expression_statement "uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);" (assignment_expression "uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f)" identifier = (binary_expression "(uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f)" (binary_expression "(uint)*(byte *)(iVar20 + uVar7)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar20 + uVar7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar7)" ( (binary_expression "iVar20 + uVar7" identifier + identifier) )))) << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "*puVar19 = uVar7 + 1;" (assignment_expression "*puVar19 = uVar7 + 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }" else (compound_statement "{\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }" { (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "uVar26 = fill_inbuf(0);" (assignment_expression "uVar26 = fill_inbuf(0)" identifier = (call_expression "fill_inbuf(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);" (assignment_expression "uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f)" identifier = (binary_expression "(uVar26 & 0xff) << (uVar6 & 0x1f)" (parenthesized_expression "(uVar26 & 0xff)" ( (binary_expression "uVar26 & 0xff" identifier & number_literal) )) << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) )))) ;) }))) (expression_statement "uVar12 = uVar12 | uVar26;" (assignment_expression "uVar12 = uVar12 | uVar26" identifier = (binary_expression "uVar12 | uVar26" identifier | identifier)) ;) (expression_statement "uVar26 = uVar6 + 8;" (assignment_expression "uVar26 = uVar6 + 8" identifier = (binary_expression "uVar6 + 8" identifier + number_literal)) ;) (if_statement "if (uVar18 <= uVar26) break;" if (parenthesized_expression "(uVar18 <= uVar26)" ( (binary_expression "uVar18 <= uVar26" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 + 8;" (assignment_expression "uVar6 = uVar6 + 8" identifier = (binary_expression "uVar6 + 8" identifier + number_literal)) ;) (expression_statement "uVar7 = *puVar19;" (assignment_expression "uVar7 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) })) })) (expression_statement "iVar15 = *(int *)(puVar24 + 0x1e37c);" (assignment_expression "iVar15 = *(int *)(puVar24 + 0x1e37c)" identifier = (pointer_expression "*(int *)(puVar24 + 0x1e37c)" * (cast_expression "(int *)(puVar24 + 0x1e37c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x1e37c)" ( (binary_expression "puVar24 + 0x1e37c" identifier + number_literal) ))))) ;) (expression_statement "uVar26 = uVar26 - uVar18;" (assignment_expression "uVar26 = uVar26 - uVar18" identifier = (binary_expression "uVar26 - uVar18" identifier - identifier)) ;) (expression_statement "uVar6 = uVar5 & uVar22;" (assignment_expression "uVar6 = uVar5 & uVar22" identifier = (binary_expression "uVar5 & uVar22" identifier & identifier)) ;) (expression_statement "uVar22 = uVar12 >> (uVar18 & 0x1f);" (assignment_expression "uVar22 = uVar12 >> (uVar18 & 0x1f)" identifier = (binary_expression "uVar12 >> (uVar18 & 0x1f)" identifier >> (parenthesized_expression "(uVar18 & 0x1f)" ( (binary_expression "uVar18 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar6 = uVar6 + uVar4;" (assignment_expression "uVar6 = uVar6 + uVar4" identifier = (binary_expression "uVar6 + uVar4" identifier + identifier)) ;) (expression_statement "uVar18 = (uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12);" (assignment_expression "uVar18 = (uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12)" identifier = (binary_expression "(uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12)" (parenthesized_expression "(uVar23 - *(ushort *)(pbStack_74 + 4))" ( (binary_expression "uVar23 - *(ushort *)(pbStack_74 + 4)" identifier - (pointer_expression "*(ushort *)(pbStack_74 + 4)" * (cast_expression "(ushort *)(pbStack_74 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbStack_74 + 4)" ( (binary_expression "pbStack_74 + 4" identifier + number_literal) ))))) )) - (parenthesized_expression "(*(ushort *)(iVar10 + uVar18 * 2) & uVar12)" ( (binary_expression "*(ushort *)(iVar10 + uVar18 * 2) & uVar12" (pointer_expression "*(ushort *)(iVar10 + uVar18 * 2)" * (cast_expression "(ushort *)(iVar10 + uVar18 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar18 * 2)" ( (binary_expression "iVar10 + uVar18 * 2" identifier + (binary_expression "uVar18 * 2" identifier * number_literal)) )))) & identifier) )))) ;) (do_statement "do {\n    uVar18 = uVar18 & 0x7fff;\n    if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }\n    uVar23 = uVar23 + uVar12;\n    uVar18 = uVar12 + uVar18;\n    if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }\n  } while (uVar6 != 0);" do (compound_statement "{\n    uVar18 = uVar18 & 0x7fff;\n    if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }\n    uVar23 = uVar23 + uVar12;\n    uVar18 = uVar12 + uVar18;\n    if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }\n  }" { (expression_statement "uVar18 = uVar18 & 0x7fff;" (assignment_expression "uVar18 = uVar18 & 0x7fff" identifier = (binary_expression "uVar18 & 0x7fff" identifier & number_literal)) ;) (if_statement "if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }" if (parenthesized_expression "(uVar23 < uVar18)" ( (binary_expression "uVar23 < uVar18" identifier < identifier) )) (compound_statement "{\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }" { (expression_statement "uVar12 = 0x8000 - uVar18;" (assignment_expression "uVar12 = 0x8000 - uVar18" identifier = (binary_expression "0x8000 - uVar18" number_literal - identifier)) ;) (if_statement "if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }" if (parenthesized_expression "(uVar6 <= 0x8000 - uVar18)" ( (binary_expression "uVar6 <= 0x8000 - uVar18" identifier <= (binary_expression "0x8000 - uVar18" number_literal - identifier)) )) (compound_statement "{\n        uVar12 = uVar6;\n      }" { (expression_statement "uVar12 = uVar6;" (assignment_expression "uVar12 = uVar6" identifier = identifier) ;) })) (expression_statement "uVar6 = uVar6 - uVar12;" (assignment_expression "uVar6 = uVar6 - uVar12" identifier = (binary_expression "uVar6 - uVar12" identifier - identifier)) ;) (if_statement "if (uVar18 < uVar23) goto LAB_000186a8;" if (parenthesized_expression "(uVar18 < uVar23)" ( (binary_expression "uVar18 < uVar23" identifier < identifier) )) (goto_statement "goto LAB_000186a8;" goto statement_identifier ;)) (labeled_statement "LAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);" statement_identifier : (expression_statement "pcVar25 = *(code **)(puVar24 + 0x1e578);" (assignment_expression "pcVar25 = *(code **)(puVar24 + 0x1e578)" identifier = (pointer_expression "*(code **)(puVar24 + 0x1e578)" * (cast_expression "(code **)(puVar24 + 0x1e578)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e578)" ( (binary_expression "puVar24 + 0x1e578" identifier + number_literal) ))))) ;)) (if_statement "if (uVar18 - uVar23 < uVar12) goto LAB_00018738;" if (parenthesized_expression "(uVar18 - uVar23 < uVar12)" ( (binary_expression "uVar18 - uVar23 < uVar12" (binary_expression "uVar18 - uVar23" identifier - identifier) < identifier) )) (goto_statement "goto LAB_00018738;" goto statement_identifier ;)) (labeled_statement "LAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);" statement_identifier : (expression_statement "(*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);" (call_expression "(*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12)" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "(iVar15 + uVar23,iVar15 + uVar18,uVar12)" ( (binary_expression "iVar15 + uVar23" identifier + identifier) , (binary_expression "iVar15 + uVar18" identifier + identifier) , identifier ))) ;)) }) (else_clause "else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }" else (compound_statement "{\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }" { (expression_statement "uVar12 = 0x8000 - uVar23;" (assignment_expression "uVar12 = 0x8000 - uVar23" identifier = (binary_expression "0x8000 - uVar23" number_literal - identifier)) ;) (if_statement "if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }" if (parenthesized_expression "(uVar6 <= 0x8000 - uVar23)" ( (binary_expression "uVar6 <= 0x8000 - uVar23" identifier <= (binary_expression "0x8000 - uVar23" number_literal - identifier)) )) (compound_statement "{\n        uVar12 = uVar6;\n      }" { (expression_statement "uVar12 = uVar6;" (assignment_expression "uVar12 = uVar6" identifier = identifier) ;) })) (expression_statement "uVar6 = uVar6 - uVar12;" (assignment_expression "uVar6 = uVar6 - uVar12" identifier = (binary_expression "uVar6 - uVar12" identifier - identifier)) ;) (if_statement "if (uVar23 <= uVar18) goto LAB_00018724;" if (parenthesized_expression "(uVar23 <= uVar18)" ( (binary_expression "uVar23 <= uVar18" identifier <= identifier) )) (goto_statement "goto LAB_00018724;" goto statement_identifier ;)) (labeled_statement "LAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }" statement_identifier : (if_statement "if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }" if (parenthesized_expression "(uVar12 <= uVar23 - uVar18)" ( (binary_expression "uVar12 <= uVar23 - uVar18" identifier <= (binary_expression "uVar23 - uVar18" identifier - identifier)) )) (compound_statement "{\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }" { (expression_statement "pcVar25 = *(code **)(puVar24 + 0x1e578);" (assignment_expression "pcVar25 = *(code **)(puVar24 + 0x1e578)" identifier = (pointer_expression "*(code **)(puVar24 + 0x1e578)" * (cast_expression "(code **)(puVar24 + 0x1e578)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e578)" ( (binary_expression "puVar24 + 0x1e578" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000186bc;" goto statement_identifier ;) }))) (labeled_statement "LAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);" statement_identifier : (expression_statement "puVar8 = (undefined1 *)(iVar15 + uVar18);" (assignment_expression "puVar8 = (undefined1 *)(iVar15 + uVar18)" identifier = (cast_expression "(undefined1 *)(iVar15 + uVar18)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + uVar18)" ( (binary_expression "iVar15 + uVar18" identifier + identifier) )))) ;)) (do_statement "do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);" do (compound_statement "{\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      }" { (expression_statement "puVar9 = puVar8 + 1;" (assignment_expression "puVar9 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "puVar8[uVar23 - uVar18] = *puVar8;" (assignment_expression "puVar8[uVar23 - uVar18] = *puVar8" (subscript_expression "puVar8[uVar23 - uVar18]" identifier [ (binary_expression "uVar23 - uVar18" identifier - identifier) ]) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9)" ( (binary_expression "(undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9" (binary_expression "(undefined1 *)(iVar15 + uVar18) + uVar12" (cast_expression "(undefined1 *)(iVar15 + uVar18)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + uVar18)" ( (binary_expression "iVar15 + uVar18" identifier + identifier) ))) + identifier) != identifier) )) ;) }))) (expression_statement "uVar23 = uVar23 + uVar12;" (assignment_expression "uVar23 = uVar23 + uVar12" identifier = (binary_expression "uVar23 + uVar12" identifier + identifier)) ;) (expression_statement "uVar18 = uVar12 + uVar18;" (assignment_expression "uVar18 = uVar12 + uVar18" identifier = (binary_expression "uVar12 + uVar18" identifier + identifier)) ;) (if_statement "if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }" if (parenthesized_expression "(uVar23 == 0x8000)" ( (binary_expression "uVar23 == 0x8000" identifier == number_literal) )) (compound_statement "{\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }" { (expression_statement "*puVar16 = 0x8000;" (assignment_expression "*puVar16 = 0x8000" (pointer_expression "*puVar16" * identifier) = number_literal) ;) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (expression_statement "flush_window();" (call_expression "flush_window()" identifier (argument_list "()" ( ))) ;) })) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) (goto_statement "goto LAB_000181c8;" goto statement_identifier ;) (labeled_statement "code_r0x0001823c:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);" statement_identifier : (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" identifier = (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" * (cast_expression "(uint **)(puVar24 + 0x1e29c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1e29c)" ( (binary_expression "puVar24 + 0x1e29c" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_00018240:\n  uVar18 = *puVar19;" statement_identifier : (expression_statement "uVar18 = *puVar19;" (assignment_expression "uVar18 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;)) (if_statement "if (uVar18 < *puVar21) {\n    uVar12 = (uint)*(byte *)(iVar20 + uVar18);\n    *puVar19 = uVar18 + 1;\n  }\n  else {\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }" if (parenthesized_expression "(uVar18 < *puVar21)" ( (binary_expression "uVar18 < *puVar21" identifier < (pointer_expression "*puVar21" * identifier)) )) (compound_statement "{\n    uVar12 = (uint)*(byte *)(iVar20 + uVar18);\n    *puVar19 = uVar18 + 1;\n  }" { (expression_statement "uVar12 = (uint)*(byte *)(iVar20 + uVar18);" (assignment_expression "uVar12 = (uint)*(byte *)(iVar20 + uVar18)" identifier = (binary_expression "(uint)*(byte *)(iVar20 + uVar18)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar20 + uVar18)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar18)" ( (binary_expression "iVar20 + uVar18" identifier + identifier) ))))) ;) (expression_statement "*puVar19 = uVar18 + 1;" (assignment_expression "*puVar19 = uVar18 + 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }" else (compound_statement "{\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }" { (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "uVar12 = fill_inbuf(0);" (assignment_expression "uVar12 = fill_inbuf(0)" identifier = (call_expression "fill_inbuf(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "uVar12 = uVar12 & 0xff;" (assignment_expression "uVar12 = uVar12 & 0xff" identifier = (binary_expression "uVar12 & 0xff" identifier & number_literal)) ;) }))) (expression_statement "uVar18 = uVar26 & 0x1f;" (assignment_expression "uVar18 = uVar26 & 0x1f" identifier = (binary_expression "uVar26 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar26 = uVar26 + 8;" (assignment_expression "uVar26 = uVar26 + 8" identifier = (binary_expression "uVar26 + 8" identifier + number_literal)) ;) (expression_statement "uVar22 = uVar22 | uVar12 << uVar18;" (assignment_expression "uVar22 = uVar22 | uVar12 << uVar18" identifier = (binary_expression "uVar22 | uVar12 << uVar18" identifier | (binary_expression "uVar12 << uVar18" identifier << identifier))) ;) (goto_statement "goto LAB_000181c8;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) * LIT)) )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) (break_statement break ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < IDENT) )) ;) (labeled_statement statement_identifier : (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) & IDENT) )) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) }) while (parenthesized_expression ( BOOL )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) (break_statement break ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (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 | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) * LIT)) )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) (break_statement break ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < IDENT) )) ;) (labeled_statement statement_identifier : (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) & IDENT) )) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression LIT < IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) - (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) & IDENT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression LIT - IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + IDENT) , (binary_expression IDENT + IDENT) , IDENT ))) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression LIT - IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT - IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT - IDENT) ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) + IDENT) != IDENT) )) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (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)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT << IDENT))) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "undefined4 abort_gzip(undefined4 param_1,int param_2,uint param_3,uint param_4)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort uVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined1 *puVar8;\n  undefined1 *puVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  uint *puVar16;\n  byte *pbVar17;\n  uint uVar18;\n  uint *puVar19;\n  int iVar20;\n  uint *puVar21;\n  uint uVar22;\n  uint uVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  uint uVar26;\n  byte *pbStack_74;\n  \n  FUN_0001463c();\n  puVar24 = PTR_00036394 + 0x6084;\n  iVar11 = 1;\n  FUN_00016084();\n  iVar14 = *(int *)(puVar24 + 0x1e268);\n  iVar13 = *(int *)(puVar24 + 0x1e268);\n  iVar10 = *(int *)(puVar24 + 0x1e278) + 0x4e40;\n  puVar16 = *(uint **)(puVar24 + 0x1e368);\n  uVar2 = *(ushort *)(iVar10 + param_3 * 2);\n  uVar3 = *(ushort *)(iVar10 + param_4 * 2);\n  puVar19 = *(uint **)(puVar24 + 0x1e298);\n  uVar22 = *(uint *)(iVar13 + 0x6d38);\n  uVar26 = *(uint *)(iVar14 + 0x6d34);\n  uVar23 = *puVar16;\n  iVar20 = *(int *)(puVar24 + 0x1e2a0);\nLAB_000181c8:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\n  if (param_3 <= uVar26) goto LAB_000181d8;\n  goto LAB_00018240;\nLAB_000181d8:\n  pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8);\n  uVar18 = (uint)*pbVar17;\n  if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    if (uVar18 == 99) {\n      return 1;\n    }\n    do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );\n  }\n  uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n  uVar26 = uVar26 - pbVar17[1];\n  if (uVar18 == 0x10) {\n    uVar18 = uVar23 + 1;\n    *(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);\n    if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }\n    uVar23 = uVar18;\n    if (uVar26 < param_3) goto code_r0x0001823c;\n    goto LAB_000181d8;\n  }\n  if (uVar18 == 0xf) {\n    *puVar16 = uVar23;\n    *(uint *)(iVar13 + 0x6d38) = uVar22;\n    *(uint *)(iVar14 + 0x6d34) = uVar26;\n    return 0;\n  }\n  if (uVar26 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);\n  }\n  uVar4 = *(ushort *)(pbVar17 + 4);\n  uVar26 = uVar26 - uVar18;\n  uVar12 = uVar22 >> (uVar18 & 0x1f);\n  uVar5 = *(ushort *)(iVar10 + uVar18 * 2);\n  if (uVar26 < param_4) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);\n  }\nLAB_0001839c:\n  pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8);\n  uVar18 = (uint)*pbStack_74;\n  if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);\n  }\n  uVar26 = uVar26 - pbStack_74[1];\n  uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\n  if (uVar26 < uVar18) {\n    uVar7 = *puVar19;\n    uVar6 = uVar26;\n    while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }\n  }\n  iVar15 = *(int *)(puVar24 + 0x1e37c);\n  uVar26 = uVar26 - uVar18;\n  uVar6 = uVar5 & uVar22;\n  uVar22 = uVar12 >> (uVar18 & 0x1f);\n  uVar6 = uVar6 + uVar4;\n  uVar18 = (uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12);\n  do {\n    uVar18 = uVar18 & 0x7fff;\n    if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }\n    uVar23 = uVar23 + uVar12;\n    uVar18 = uVar12 + uVar18;\n    if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }\n  } while (uVar6 != 0);\n  goto LAB_000181c8;\ncode_r0x0001823c:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\nLAB_00018240:\n  uVar18 = *puVar19;\n  if (uVar18 < *puVar21) {\n    uVar12 = (uint)*(byte *)(iVar20 + uVar18);\n    *puVar19 = uVar18 + 1;\n  }\n  else {\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }\n  uVar18 = uVar26 & 0x1f;\n  uVar26 = uVar26 + 8;\n  uVar22 = uVar22 | uVar12 << uVar18;\n  goto LAB_000181c8;\n}" (type_identifier "undefined4") (function_declarator "abort_gzip(undefined4 param_1,int param_2,uint param_3,uint param_4)" (identifier "abort_gzip") (parameter_list "(undefined4 param_1,int param_2,uint param_3,uint param_4)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) () ")"))) (compound_statement "{\n  byte bVar1;\n  ushort uVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort uVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined1 *puVar8;\n  undefined1 *puVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  uint *puVar16;\n  byte *pbVar17;\n  uint uVar18;\n  uint *puVar19;\n  int iVar20;\n  uint *puVar21;\n  uint uVar22;\n  uint uVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  uint uVar26;\n  byte *pbStack_74;\n  \n  FUN_0001463c();\n  puVar24 = PTR_00036394 + 0x6084;\n  iVar11 = 1;\n  FUN_00016084();\n  iVar14 = *(int *)(puVar24 + 0x1e268);\n  iVar13 = *(int *)(puVar24 + 0x1e268);\n  iVar10 = *(int *)(puVar24 + 0x1e278) + 0x4e40;\n  puVar16 = *(uint **)(puVar24 + 0x1e368);\n  uVar2 = *(ushort *)(iVar10 + param_3 * 2);\n  uVar3 = *(ushort *)(iVar10 + param_4 * 2);\n  puVar19 = *(uint **)(puVar24 + 0x1e298);\n  uVar22 = *(uint *)(iVar13 + 0x6d38);\n  uVar26 = *(uint *)(iVar14 + 0x6d34);\n  uVar23 = *puVar16;\n  iVar20 = *(int *)(puVar24 + 0x1e2a0);\nLAB_000181c8:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\n  if (param_3 <= uVar26) goto LAB_000181d8;\n  goto LAB_00018240;\nLAB_000181d8:\n  pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8);\n  uVar18 = (uint)*pbVar17;\n  if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    if (uVar18 == 99) {\n      return 1;\n    }\n    do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );\n  }\n  uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n  uVar26 = uVar26 - pbVar17[1];\n  if (uVar18 == 0x10) {\n    uVar18 = uVar23 + 1;\n    *(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);\n    if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }\n    uVar23 = uVar18;\n    if (uVar26 < param_3) goto code_r0x0001823c;\n    goto LAB_000181d8;\n  }\n  if (uVar18 == 0xf) {\n    *puVar16 = uVar23;\n    *(uint *)(iVar13 + 0x6d38) = uVar22;\n    *(uint *)(iVar14 + 0x6d34) = uVar26;\n    return 0;\n  }\n  if (uVar26 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);\n  }\n  uVar4 = *(ushort *)(pbVar17 + 4);\n  uVar26 = uVar26 - uVar18;\n  uVar12 = uVar22 >> (uVar18 & 0x1f);\n  uVar5 = *(ushort *)(iVar10 + uVar18 * 2);\n  if (uVar26 < param_4) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);\n  }\nLAB_0001839c:\n  pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8);\n  uVar18 = (uint)*pbStack_74;\n  if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);\n  }\n  uVar26 = uVar26 - pbStack_74[1];\n  uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\n  if (uVar26 < uVar18) {\n    uVar7 = *puVar19;\n    uVar6 = uVar26;\n    while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }\n  }\n  iVar15 = *(int *)(puVar24 + 0x1e37c);\n  uVar26 = uVar26 - uVar18;\n  uVar6 = uVar5 & uVar22;\n  uVar22 = uVar12 >> (uVar18 & 0x1f);\n  uVar6 = uVar6 + uVar4;\n  uVar18 = (uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12);\n  do {\n    uVar18 = uVar18 & 0x7fff;\n    if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }\n    uVar23 = uVar23 + uVar12;\n    uVar18 = uVar12 + uVar18;\n    if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }\n  } while (uVar6 != 0);\n  goto LAB_000181c8;\ncode_r0x0001823c:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);\nLAB_00018240:\n  uVar18 = *puVar19;\n  if (uVar18 < *puVar21) {\n    uVar12 = (uint)*(byte *)(iVar20 + uVar18);\n    *puVar19 = uVar18 + 1;\n  }\n  else {\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }\n  uVar18 = uVar26 & 0x1f;\n  uVar26 = uVar26 + 8;\n  uVar22 = uVar22 | uVar12 << uVar18;\n  goto LAB_000181c8;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "ushort uVar2;" (type_identifier "ushort") (identifier "uVar2") (; ";")) (declaration "ushort uVar3;" (type_identifier "ushort") (identifier "uVar3") (; ";")) (declaration "ushort uVar4;" (type_identifier "ushort") (identifier "uVar4") (; ";")) (declaration "ushort uVar5;" (type_identifier "ushort") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "undefined1 *puVar8;" (type_identifier "undefined1") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined1 *puVar9;" (type_identifier "undefined1") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "uint *puVar16;" (type_identifier "uint") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "byte *pbVar17;" (type_identifier "byte") (pointer_declarator "*pbVar17" (* "*") (identifier "pbVar17")) (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "uint *puVar19;" (type_identifier "uint") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "int iVar20;" (primitive_type "int") (identifier "iVar20") (; ";")) (declaration "uint *puVar21;" (type_identifier "uint") (pointer_declarator "*puVar21" (* "*") (identifier "puVar21")) (; ";")) (declaration "uint uVar22;" (type_identifier "uint") (identifier "uVar22") (; ";")) (declaration "uint uVar23;" (type_identifier "uint") (identifier "uVar23") (; ";")) (declaration "undefined *puVar24;" (type_identifier "undefined") (pointer_declarator "*puVar24" (* "*") (identifier "puVar24")) (; ";")) (declaration "code *pcVar25;" (type_identifier "code") (pointer_declarator "*pcVar25" (* "*") (identifier "pcVar25")) (; ";")) (declaration "uint uVar26;" (type_identifier "uint") (identifier "uVar26") (; ";")) (declaration "byte *pbStack_74;" (type_identifier "byte") (pointer_declarator "*pbStack_74" (* "*") (identifier "pbStack_74")) (; ";")) (expression_statement "FUN_0001463c();" (call_expression "FUN_0001463c()" (identifier "FUN_0001463c") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar24 = PTR_00036394 + 0x6084;" (assignment_expression "puVar24 = PTR_00036394 + 0x6084" (identifier "puVar24") (= "=") (binary_expression "PTR_00036394 + 0x6084" (identifier "PTR_00036394") (+ "+") (number_literal "0x6084"))) (; ";")) (expression_statement "iVar11 = 1;" (assignment_expression "iVar11 = 1" (identifier "iVar11") (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_00016084();" (call_expression "FUN_00016084()" (identifier "FUN_00016084") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar14 = *(int *)(puVar24 + 0x1e268);" (assignment_expression "iVar14 = *(int *)(puVar24 + 0x1e268)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(puVar24 + 0x1e268)" (* "*") (cast_expression "(int *)(puVar24 + 0x1e268)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x1e268)" (( "(") (binary_expression "puVar24 + 0x1e268" (identifier "puVar24") (+ "+") (number_literal "0x1e268")) () ")"))))) (; ";")) (expression_statement "iVar13 = *(int *)(puVar24 + 0x1e268);" (assignment_expression "iVar13 = *(int *)(puVar24 + 0x1e268)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(puVar24 + 0x1e268)" (* "*") (cast_expression "(int *)(puVar24 + 0x1e268)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x1e268)" (( "(") (binary_expression "puVar24 + 0x1e268" (identifier "puVar24") (+ "+") (number_literal "0x1e268")) () ")"))))) (; ";")) (expression_statement "iVar10 = *(int *)(puVar24 + 0x1e278) + 0x4e40;" (assignment_expression "iVar10 = *(int *)(puVar24 + 0x1e278) + 0x4e40" (identifier "iVar10") (= "=") (binary_expression "*(int *)(puVar24 + 0x1e278) + 0x4e40" (pointer_expression "*(int *)(puVar24 + 0x1e278)" (* "*") (cast_expression "(int *)(puVar24 + 0x1e278)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x1e278)" (( "(") (binary_expression "puVar24 + 0x1e278" (identifier "puVar24") (+ "+") (number_literal "0x1e278")) () ")")))) (+ "+") (number_literal "0x4e40"))) (; ";")) (expression_statement "puVar16 = *(uint **)(puVar24 + 0x1e368);" (assignment_expression "puVar16 = *(uint **)(puVar24 + 0x1e368)" (identifier "puVar16") (= "=") (pointer_expression "*(uint **)(puVar24 + 0x1e368)" (* "*") (cast_expression "(uint **)(puVar24 + 0x1e368)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x1e368)" (( "(") (binary_expression "puVar24 + 0x1e368" (identifier "puVar24") (+ "+") (number_literal "0x1e368")) () ")"))))) (; ";")) (expression_statement "uVar2 = *(ushort *)(iVar10 + param_3 * 2);" (assignment_expression "uVar2 = *(ushort *)(iVar10 + param_3 * 2)" (identifier "uVar2") (= "=") (pointer_expression "*(ushort *)(iVar10 + param_3 * 2)" (* "*") (cast_expression "(ushort *)(iVar10 + param_3 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + param_3 * 2)" (( "(") (binary_expression "iVar10 + param_3 * 2" (identifier "iVar10") (+ "+") (binary_expression "param_3 * 2" (identifier "param_3") (* "*") (number_literal "2"))) () ")"))))) (; ";")) (expression_statement "uVar3 = *(ushort *)(iVar10 + param_4 * 2);" (assignment_expression "uVar3 = *(ushort *)(iVar10 + param_4 * 2)" (identifier "uVar3") (= "=") (pointer_expression "*(ushort *)(iVar10 + param_4 * 2)" (* "*") (cast_expression "(ushort *)(iVar10 + param_4 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + param_4 * 2)" (( "(") (binary_expression "iVar10 + param_4 * 2" (identifier "iVar10") (+ "+") (binary_expression "param_4 * 2" (identifier "param_4") (* "*") (number_literal "2"))) () ")"))))) (; ";")) (expression_statement "puVar19 = *(uint **)(puVar24 + 0x1e298);" (assignment_expression "puVar19 = *(uint **)(puVar24 + 0x1e298)" (identifier "puVar19") (= "=") (pointer_expression "*(uint **)(puVar24 + 0x1e298)" (* "*") (cast_expression "(uint **)(puVar24 + 0x1e298)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x1e298)" (( "(") (binary_expression "puVar24 + 0x1e298" (identifier "puVar24") (+ "+") (number_literal "0x1e298")) () ")"))))) (; ";")) (expression_statement "uVar22 = *(uint *)(iVar13 + 0x6d38);" (assignment_expression "uVar22 = *(uint *)(iVar13 + 0x6d38)" (identifier "uVar22") (= "=") (pointer_expression "*(uint *)(iVar13 + 0x6d38)" (* "*") (cast_expression "(uint *)(iVar13 + 0x6d38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x6d38)" (( "(") (binary_expression "iVar13 + 0x6d38" (identifier "iVar13") (+ "+") (number_literal "0x6d38")) () ")"))))) (; ";")) (expression_statement "uVar26 = *(uint *)(iVar14 + 0x6d34);" (assignment_expression "uVar26 = *(uint *)(iVar14 + 0x6d34)" (identifier "uVar26") (= "=") (pointer_expression "*(uint *)(iVar14 + 0x6d34)" (* "*") (cast_expression "(uint *)(iVar14 + 0x6d34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x6d34)" (( "(") (binary_expression "iVar14 + 0x6d34" (identifier "iVar14") (+ "+") (number_literal "0x6d34")) () ")"))))) (; ";")) (expression_statement "uVar23 = *puVar16;" (assignment_expression "uVar23 = *puVar16" (identifier "uVar23") (= "=") (pointer_expression "*puVar16" (* "*") (identifier "puVar16"))) (; ";")) (expression_statement "iVar20 = *(int *)(puVar24 + 0x1e2a0);" (assignment_expression "iVar20 = *(int *)(puVar24 + 0x1e2a0)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(puVar24 + 0x1e2a0)" (* "*") (cast_expression "(int *)(puVar24 + 0x1e2a0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x1e2a0)" (( "(") (binary_expression "puVar24 + 0x1e2a0" (identifier "puVar24") (+ "+") (number_literal "0x1e2a0")) () ")"))))) (; ";")) (labeled_statement "LAB_000181c8:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);" (statement_identifier "LAB_000181c8") (: ":") (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" (identifier "puVar21") (= "=") (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" (* "*") (cast_expression "(uint **)(puVar24 + 0x1e29c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x1e29c)" (( "(") (binary_expression "puVar24 + 0x1e29c" (identifier "puVar24") (+ "+") (number_literal "0x1e29c")) () ")"))))) (; ";"))) (if_statement "if (param_3 <= uVar26) goto LAB_000181d8;" (if "if") (parenthesized_expression "(param_3 <= uVar26)" (( "(") (binary_expression "param_3 <= uVar26" (identifier "param_3") (<= "<=") (identifier "uVar26")) () ")")) (goto_statement "goto LAB_000181d8;" (goto "goto") (statement_identifier "LAB_000181d8") (; ";"))) (goto_statement "goto LAB_00018240;" (goto "goto") (statement_identifier "LAB_00018240") (; ";")) (labeled_statement "LAB_000181d8:\n  pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8);" (statement_identifier "LAB_000181d8") (: ":") (expression_statement "pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8);" (assignment_expression "pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8)" (identifier "pbVar17") (= "=") (cast_expression "(byte *)(iVar11 + (uVar22 & uVar2) * 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + (uVar22 & uVar2) * 8)" (( "(") (binary_expression "iVar11 + (uVar22 & uVar2) * 8" (identifier "iVar11") (+ "+") (binary_expression "(uVar22 & uVar2) * 8" (parenthesized_expression "(uVar22 & uVar2)" (( "(") (binary_expression "uVar22 & uVar2" (identifier "uVar22") (& "&") (identifier "uVar2")) () ")")) (* "*") (number_literal "8"))) () ")")))) (; ";"))) (expression_statement "uVar18 = (uint)*pbVar17;" (assignment_expression "uVar18 = (uint)*pbVar17" (identifier "uVar18") (= "=") (binary_expression "(uint)*pbVar17" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar17"))) (; ";")) (if_statement "if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    if (uVar18 == 99) {\n      return 1;\n    }\n    do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );\n  }" (if "if") (parenthesized_expression "(0x10 < uVar18)" (( "(") (binary_expression "0x10 < uVar18" (number_literal "0x10") (< "<") (identifier "uVar18")) () ")")) (compound_statement "{\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    if (uVar18 == 99) {\n      return 1;\n    }\n    do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );\n  }" ({ "{") (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" (identifier "puVar21") (= "=") (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" (* "*") (cast_expression "(uint **)(puVar24 + 0x1e29c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x1e29c)" (( "(") (binary_expression "puVar24 + 0x1e29c" (identifier "puVar24") (+ "+") (number_literal "0x1e29c")) () ")"))))) (; ";")) (if_statement "if (uVar18 == 99) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(uVar18 == 99)" (( "(") (binary_expression "uVar18 == 99" (identifier "uVar18") (== "==") (number_literal "99")) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (do_statement "do {\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    } while( true );" (do "do") (compound_statement "{\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbVar17[1];\n      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }\n      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);\n      uVar18 = (uint)*pbVar17;\n      if (uVar18 < 0x11) break;\n      if (uVar18 == 99) {\n        return 1;\n      }\n    }" ({ "{") (expression_statement "uVar18 = uVar18 - 0x10;" (assignment_expression "uVar18 = uVar18 - 0x10" (identifier "uVar18") (= "=") (binary_expression "uVar18 - 0x10" (identifier "uVar18") (- "-") (number_literal "0x10"))) (; ";")) (expression_statement "uVar26 = uVar26 - pbVar17[1];" (assignment_expression "uVar26 = uVar26 - pbVar17[1]" (identifier "uVar26") (= "=") (binary_expression "uVar26 - pbVar17[1]" (identifier "uVar26") (- "-") (subscript_expression "pbVar17[1]" (identifier "pbVar17") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar22 = uVar22 >> (pbVar17[1] & 0x1f);" (assignment_expression "uVar22 = uVar22 >> (pbVar17[1] & 0x1f)" (identifier "uVar22") (= "=") (binary_expression "uVar22 >> (pbVar17[1] & 0x1f)" (identifier "uVar22") (>> ">>") (parenthesized_expression "(pbVar17[1] & 0x1f)" (( "(") (binary_expression "pbVar17[1] & 0x1f" (subscript_expression "pbVar17[1]" (identifier "pbVar17") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }" (if "if") (parenthesized_expression "(uVar26 < uVar18)" (( "(") (binary_expression "uVar26 < uVar18" (identifier "uVar26") (< "<") (identifier "uVar18")) () ")")) (compound_statement "{\n        do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);\nLAB_0001856c:\n        uVar26 = uVar12 + 8;\n      }" ({ "{") (do_statement "do {\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        } while (uVar12 + 8 < uVar18);" (do "do") (compound_statement "{\n          while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }\n          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar12 + 8;\n        }" ({ "{") (while_statement "while( true ) {\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            uVar12 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);\n            uVar26 = uVar12 + 8;\n            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;\n          }" ({ "{") (expression_statement "uVar12 = uVar26;" (assignment_expression "uVar12 = uVar26" (identifier "uVar12") (= "=") (identifier "uVar26")) (; ";")) (expression_statement "uVar26 = *puVar19;" (assignment_expression "uVar26 = *puVar19" (identifier "uVar26") (= "=") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (; ";")) (if_statement "if (uVar26 < *puVar21) break;" (if "if") (parenthesized_expression "(uVar26 < *puVar21)" (( "(") (binary_expression "uVar26 < *puVar21" (identifier "uVar26") (< "<") (pointer_expression "*puVar21" (* "*") (identifier "puVar21"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (identifier "uVar23")) (; ";")) (expression_statement "uVar26 = fill_inbuf(0);" (assignment_expression "uVar26 = fill_inbuf(0)" (identifier "uVar26") (= "=") (call_expression "fill_inbuf(0)" (identifier "fill_inbuf") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);" (assignment_expression "uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f)" (identifier "uVar22") (= "=") (binary_expression "uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f)" (identifier "uVar22") (| "|") (binary_expression "(uVar26 & 0xff) << (uVar12 & 0x1f)" (parenthesized_expression "(uVar26 & 0xff)" (( "(") (binary_expression "uVar26 & 0xff" (identifier "uVar26") (& "&") (number_literal "0xff")) () ")")) (<< "<<") (parenthesized_expression "(uVar12 & 0x1f)" (( "(") (binary_expression "uVar12 & 0x1f" (identifier "uVar12") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "uVar26 = uVar12 + 8;" (assignment_expression "uVar26 = uVar12 + 8" (identifier "uVar26") (= "=") (binary_expression "uVar12 + 8" (identifier "uVar12") (+ "+") (number_literal "8"))) (; ";")) (if_statement "if (uVar18 <= uVar12 + 8) goto LAB_0001856c;" (if "if") (parenthesized_expression "(uVar18 <= uVar12 + 8)" (( "(") (binary_expression "uVar18 <= uVar12 + 8" (identifier "uVar18") (<= "<=") (binary_expression "uVar12 + 8" (identifier "uVar12") (+ "+") (number_literal "8"))) () ")")) (goto_statement "goto LAB_0001856c;" (goto "goto") (statement_identifier "LAB_0001856c") (; ";"))) (} "}"))) (expression_statement "uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);" (assignment_expression "uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f)" (identifier "uVar22") (= "=") (binary_expression "uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f)" (identifier "uVar22") (| "|") (binary_expression "(uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f)" (binary_expression "(uint)*(byte *)(iVar20 + uVar26)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar20 + uVar26)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + uVar26)" (( "(") (binary_expression "iVar20 + uVar26" (identifier "iVar20") (+ "+") (identifier "uVar26")) () ")")))) (<< "<<") (parenthesized_expression "(uVar12 & 0x1f)" (( "(") (binary_expression "uVar12 & 0x1f" (identifier "uVar12") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "*puVar19 = uVar26 + 1;" (assignment_expression "*puVar19 = uVar26 + 1" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (binary_expression "uVar26 + 1" (identifier "uVar26") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar26 = uVar12 + 8;" (assignment_expression "uVar26 = uVar12 + 8" (identifier "uVar26") (= "=") (binary_expression "uVar12 + 8" (identifier "uVar12") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar12 + 8 < uVar18)" (( "(") (binary_expression "uVar12 + 8 < uVar18" (binary_expression "uVar12 + 8" (identifier "uVar12") (+ "+") (number_literal "8")) (< "<") (identifier "uVar18")) () ")")) (; ";")) (labeled_statement "LAB_0001856c:\n        uVar26 = uVar12 + 8;" (statement_identifier "LAB_0001856c") (: ":") (expression_statement "uVar26 = uVar12 + 8;" (assignment_expression "uVar26 = uVar12 + 8" (identifier "uVar26") (= "=") (binary_expression "uVar12 + 8" (identifier "uVar12") (+ "+") (number_literal "8"))) (; ";"))) (} "}"))) (expression_statement "pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);" (assignment_expression "pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8)" (identifier "pbVar17") (= "=") (cast_expression "(byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8)" (( "(") (binary_expression "*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8" (pointer_expression "*(int *)(pbVar17 + 4)" (* "*") (cast_expression "(int *)(pbVar17 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar17 + 4)" (( "(") (binary_expression "pbVar17 + 4" (identifier "pbVar17") (+ "+") (number_literal "4")) () ")")))) (+ "+") (binary_expression "(*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8" (parenthesized_expression "(*(ushort *)(iVar10 + uVar18 * 2) & uVar22)" (( "(") (binary_expression "*(ushort *)(iVar10 + uVar18 * 2) & uVar22" (pointer_expression "*(ushort *)(iVar10 + uVar18 * 2)" (* "*") (cast_expression "(ushort *)(iVar10 + uVar18 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + uVar18 * 2)" (( "(") (binary_expression "iVar10 + uVar18 * 2" (identifier "iVar10") (+ "+") (binary_expression "uVar18 * 2" (identifier "uVar18") (* "*") (number_literal "2"))) () ")")))) (& "&") (identifier "uVar22")) () ")")) (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "uVar18 = (uint)*pbVar17;" (assignment_expression "uVar18 = (uint)*pbVar17" (identifier "uVar18") (= "=") (binary_expression "(uint)*pbVar17" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar17"))) (; ";")) (if_statement "if (uVar18 < 0x11) break;" (if "if") (parenthesized_expression "(uVar18 < 0x11)" (( "(") (binary_expression "uVar18 < 0x11" (identifier "uVar18") (< "<") (number_literal "0x11")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (uVar18 == 99) {\n        return 1;\n      }" (if "if") (parenthesized_expression "(uVar18 == 99)" (( "(") (binary_expression "uVar18 == 99" (identifier "uVar18") (== "==") (number_literal "99")) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "uVar22 = uVar22 >> (pbVar17[1] & 0x1f);" (assignment_expression "uVar22 = uVar22 >> (pbVar17[1] & 0x1f)" (identifier "uVar22") (= "=") (binary_expression "uVar22 >> (pbVar17[1] & 0x1f)" (identifier "uVar22") (>> ">>") (parenthesized_expression "(pbVar17[1] & 0x1f)" (( "(") (binary_expression "pbVar17[1] & 0x1f" (subscript_expression "pbVar17[1]" (identifier "pbVar17") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar26 = uVar26 - pbVar17[1];" (assignment_expression "uVar26 = uVar26 - pbVar17[1]" (identifier "uVar26") (= "=") (binary_expression "uVar26 - pbVar17[1]" (identifier "uVar26") (- "-") (subscript_expression "pbVar17[1]" (identifier "pbVar17") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (uVar18 == 0x10) {\n    uVar18 = uVar23 + 1;\n    *(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);\n    if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }\n    uVar23 = uVar18;\n    if (uVar26 < param_3) goto code_r0x0001823c;\n    goto LAB_000181d8;\n  }" (if "if") (parenthesized_expression "(uVar18 == 0x10)" (( "(") (binary_expression "uVar18 == 0x10" (identifier "uVar18") (== "==") (number_literal "0x10")) () ")")) (compound_statement "{\n    uVar18 = uVar23 + 1;\n    *(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);\n    if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }\n    uVar23 = uVar18;\n    if (uVar26 < param_3) goto code_r0x0001823c;\n    goto LAB_000181d8;\n  }" ({ "{") (expression_statement "uVar18 = uVar23 + 1;" (assignment_expression "uVar18 = uVar23 + 1" (identifier "uVar18") (= "=") (binary_expression "uVar23 + 1" (identifier "uVar23") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);" (assignment_expression "*(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4)" (pointer_expression "*(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23)" (* "*") (cast_expression "(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar24 + 0x1e37c) + uVar23)" (( "(") (binary_expression "*(int *)(puVar24 + 0x1e37c) + uVar23" (pointer_expression "*(int *)(puVar24 + 0x1e37c)" (* "*") (cast_expression "(int *)(puVar24 + 0x1e37c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x1e37c)" (( "(") (binary_expression "puVar24 + 0x1e37c" (identifier "puVar24") (+ "+") (number_literal "0x1e37c")) () ")")))) (+ "+") (identifier "uVar23")) () ")")))) (= "=") (cast_expression "(char)*(undefined2 *)(pbVar17 + 4)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*(undefined2 *)(pbVar17 + 4)" (* "*") (cast_expression "(undefined2 *)(pbVar17 + 4)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar17 + 4)" (( "(") (binary_expression "pbVar17 + 4" (identifier "pbVar17") (+ "+") (number_literal "4")) () ")")))))) (; ";")) (if_statement "if (uVar18 == 0x8000) {\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }" (if "if") (parenthesized_expression "(uVar18 == 0x8000)" (( "(") (binary_expression "uVar18 == 0x8000" (identifier "uVar18") (== "==") (number_literal "0x8000")) () ")")) (compound_statement "{\n      uVar23 = 0;\n      *puVar16 = 0x8000;\n      flush_window();\n      goto LAB_000181c8;\n    }" ({ "{") (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" (identifier "uVar23") (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar16 = 0x8000;" (assignment_expression "*puVar16 = 0x8000" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (number_literal "0x8000")) (; ";")) (expression_statement "flush_window();" (call_expression "flush_window()" (identifier "flush_window") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_000181c8;" (goto "goto") (statement_identifier "LAB_000181c8") (; ";")) (} "}"))) (expression_statement "uVar23 = uVar18;" (assignment_expression "uVar23 = uVar18" (identifier "uVar23") (= "=") (identifier "uVar18")) (; ";")) (if_statement "if (uVar26 < param_3) goto code_r0x0001823c;" (if "if") (parenthesized_expression "(uVar26 < param_3)" (( "(") (binary_expression "uVar26 < param_3" (identifier "uVar26") (< "<") (identifier "param_3")) () ")")) (goto_statement "goto code_r0x0001823c;" (goto "goto") (statement_identifier "code_r0x0001823c") (; ";"))) (goto_statement "goto LAB_000181d8;" (goto "goto") (statement_identifier "LAB_000181d8") (; ";")) (} "}"))) (if_statement "if (uVar18 == 0xf) {\n    *puVar16 = uVar23;\n    *(uint *)(iVar13 + 0x6d38) = uVar22;\n    *(uint *)(iVar14 + 0x6d34) = uVar26;\n    return 0;\n  }" (if "if") (parenthesized_expression "(uVar18 == 0xf)" (( "(") (binary_expression "uVar18 == 0xf" (identifier "uVar18") (== "==") (number_literal "0xf")) () ")")) (compound_statement "{\n    *puVar16 = uVar23;\n    *(uint *)(iVar13 + 0x6d38) = uVar22;\n    *(uint *)(iVar14 + 0x6d34) = uVar26;\n    return 0;\n  }" ({ "{") (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (identifier "uVar23")) (; ";")) (expression_statement "*(uint *)(iVar13 + 0x6d38) = uVar22;" (assignment_expression "*(uint *)(iVar13 + 0x6d38) = uVar22" (pointer_expression "*(uint *)(iVar13 + 0x6d38)" (* "*") (cast_expression "(uint *)(iVar13 + 0x6d38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x6d38)" (( "(") (binary_expression "iVar13 + 0x6d38" (identifier "iVar13") (+ "+") (number_literal "0x6d38")) () ")")))) (= "=") (identifier "uVar22")) (; ";")) (expression_statement "*(uint *)(iVar14 + 0x6d34) = uVar26;" (assignment_expression "*(uint *)(iVar14 + 0x6d34) = uVar26" (pointer_expression "*(uint *)(iVar14 + 0x6d34)" (* "*") (cast_expression "(uint *)(iVar14 + 0x6d34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x6d34)" (( "(") (binary_expression "iVar14 + 0x6d34" (identifier "iVar14") (+ "+") (number_literal "0x6d34")) () ")")))) (= "=") (identifier "uVar26")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (uVar26 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);\n  }" (if "if") (parenthesized_expression "(uVar26 < uVar18)" (( "(") (binary_expression "uVar26 < uVar18" (identifier "uVar26") (< "<") (identifier "uVar18")) () ")")) (compound_statement "{\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);\n  }" ({ "{") (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" (identifier "puVar21") (= "=") (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" (* "*") (cast_expression "(uint **)(puVar24 + 0x1e29c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x1e29c)" (( "(") (binary_expression "puVar24 + 0x1e29c" (identifier "puVar24") (+ "+") (number_literal "0x1e29c")) () ")"))))) (; ";")) (do_statement "do {\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    } while (uVar26 < uVar18);" (do "do") (compound_statement "{\n      uVar12 = *puVar19;\n      if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }\n      uVar22 = uVar22 | uVar6;\n      uVar26 = uVar26 + 8;\n    }" ({ "{") (expression_statement "uVar12 = *puVar19;" (assignment_expression "uVar12 = *puVar19" (identifier "uVar12") (= "=") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (; ";")) (if_statement "if (uVar12 < *puVar21) {\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }" (if "if") (parenthesized_expression "(uVar12 < *puVar21)" (( "(") (binary_expression "uVar12 < *puVar21" (identifier "uVar12") (< "<") (pointer_expression "*puVar21" (* "*") (identifier "puVar21"))) () ")")) (compound_statement "{\n        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);\n        *puVar19 = uVar12 + 1;\n      }" ({ "{") (expression_statement "uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);" (assignment_expression "uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f)" (identifier "uVar6") (= "=") (binary_expression "(uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f)" (binary_expression "(uint)*(byte *)(iVar20 + uVar12)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar20 + uVar12)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + uVar12)" (( "(") (binary_expression "iVar20 + uVar12" (identifier "iVar20") (+ "+") (identifier "uVar12")) () ")")))) (<< "<<") (parenthesized_expression "(uVar26 & 0x1f)" (( "(") (binary_expression "uVar26 & 0x1f" (identifier "uVar26") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "*puVar19 = uVar12 + 1;" (assignment_expression "*puVar19 = uVar12 + 1" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }" (else "else") (compound_statement "{\n        *puVar16 = uVar23;\n        uVar12 = fill_inbuf(0);\n        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);\n      }" ({ "{") (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (identifier "uVar23")) (; ";")) (expression_statement "uVar12 = fill_inbuf(0);" (assignment_expression "uVar12 = fill_inbuf(0)" (identifier "uVar12") (= "=") (call_expression "fill_inbuf(0)" (identifier "fill_inbuf") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);" (assignment_expression "uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f)" (identifier "uVar6") (= "=") (binary_expression "(uVar12 & 0xff) << (uVar26 & 0x1f)" (parenthesized_expression "(uVar12 & 0xff)" (( "(") (binary_expression "uVar12 & 0xff" (identifier "uVar12") (& "&") (number_literal "0xff")) () ")")) (<< "<<") (parenthesized_expression "(uVar26 & 0x1f)" (( "(") (binary_expression "uVar26 & 0x1f" (identifier "uVar26") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}")))) (expression_statement "uVar22 = uVar22 | uVar6;" (assignment_expression "uVar22 = uVar22 | uVar6" (identifier "uVar22") (= "=") (binary_expression "uVar22 | uVar6" (identifier "uVar22") (| "|") (identifier "uVar6"))) (; ";")) (expression_statement "uVar26 = uVar26 + 8;" (assignment_expression "uVar26 = uVar26 + 8" (identifier "uVar26") (= "=") (binary_expression "uVar26 + 8" (identifier "uVar26") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar26 < uVar18)" (( "(") (binary_expression "uVar26 < uVar18" (identifier "uVar26") (< "<") (identifier "uVar18")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar4 = *(ushort *)(pbVar17 + 4);" (assignment_expression "uVar4 = *(ushort *)(pbVar17 + 4)" (identifier "uVar4") (= "=") (pointer_expression "*(ushort *)(pbVar17 + 4)" (* "*") (cast_expression "(ushort *)(pbVar17 + 4)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar17 + 4)" (( "(") (binary_expression "pbVar17 + 4" (identifier "pbVar17") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar26 = uVar26 - uVar18;" (assignment_expression "uVar26 = uVar26 - uVar18" (identifier "uVar26") (= "=") (binary_expression "uVar26 - uVar18" (identifier "uVar26") (- "-") (identifier "uVar18"))) (; ";")) (expression_statement "uVar12 = uVar22 >> (uVar18 & 0x1f);" (assignment_expression "uVar12 = uVar22 >> (uVar18 & 0x1f)" (identifier "uVar12") (= "=") (binary_expression "uVar22 >> (uVar18 & 0x1f)" (identifier "uVar22") (>> ">>") (parenthesized_expression "(uVar18 & 0x1f)" (( "(") (binary_expression "uVar18 & 0x1f" (identifier "uVar18") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar5 = *(ushort *)(iVar10 + uVar18 * 2);" (assignment_expression "uVar5 = *(ushort *)(iVar10 + uVar18 * 2)" (identifier "uVar5") (= "=") (pointer_expression "*(ushort *)(iVar10 + uVar18 * 2)" (* "*") (cast_expression "(ushort *)(iVar10 + uVar18 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + uVar18 * 2)" (( "(") (binary_expression "iVar10 + uVar18 * 2" (identifier "iVar10") (+ "+") (binary_expression "uVar18 * 2" (identifier "uVar18") (* "*") (number_literal "2"))) () ")"))))) (; ";")) (if_statement "if (uVar26 < param_4) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);\n  }" (if "if") (parenthesized_expression "(uVar26 < param_4)" (( "(") (binary_expression "uVar26 < param_4" (identifier "uVar26") (< "<") (identifier "param_4")) () ")")) (compound_statement "{\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);\n  }" ({ "{") (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" (identifier "puVar21") (= "=") (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" (* "*") (cast_expression "(uint **)(puVar24 + 0x1e29c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x1e29c)" (( "(") (binary_expression "puVar24 + 0x1e29c" (identifier "puVar24") (+ "+") (number_literal "0x1e29c")) () ")"))))) (; ";")) (do_statement "do {\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    } while (uVar26 < param_4);" (do "do") (compound_statement "{\n      while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }\n      bVar1 = *(byte *)(iVar20 + uVar18);\n      *puVar19 = uVar18 + 1;\n      uVar18 = uVar26 & 0x1f;\n      uVar26 = uVar26 + 8;\n      uVar12 = uVar12 | (uint)bVar1 << uVar18;\n    }" ({ "{") (while_statement "while( true ) {\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        uVar18 = *puVar19;\n        if (uVar18 < *puVar21) break;\n        *puVar16 = uVar23;\n        uVar6 = fill_inbuf(0);\n        uVar18 = uVar26 & 0x1f;\n        uVar26 = uVar26 + 8;\n        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;\n        if (param_4 <= uVar26) goto LAB_0001839c;\n      }" ({ "{") (expression_statement "uVar18 = *puVar19;" (assignment_expression "uVar18 = *puVar19" (identifier "uVar18") (= "=") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (; ";")) (if_statement "if (uVar18 < *puVar21) break;" (if "if") (parenthesized_expression "(uVar18 < *puVar21)" (( "(") (binary_expression "uVar18 < *puVar21" (identifier "uVar18") (< "<") (pointer_expression "*puVar21" (* "*") (identifier "puVar21"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (identifier "uVar23")) (; ";")) (expression_statement "uVar6 = fill_inbuf(0);" (assignment_expression "uVar6 = fill_inbuf(0)" (identifier "uVar6") (= "=") (call_expression "fill_inbuf(0)" (identifier "fill_inbuf") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar18 = uVar26 & 0x1f;" (assignment_expression "uVar18 = uVar26 & 0x1f" (identifier "uVar18") (= "=") (binary_expression "uVar26 & 0x1f" (identifier "uVar26") (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar26 = uVar26 + 8;" (assignment_expression "uVar26 = uVar26 + 8" (identifier "uVar26") (= "=") (binary_expression "uVar26 + 8" (identifier "uVar26") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;" (assignment_expression "uVar12 = uVar12 | (uVar6 & 0xff) << uVar18" (identifier "uVar12") (= "=") (binary_expression "uVar12 | (uVar6 & 0xff) << uVar18" (identifier "uVar12") (| "|") (binary_expression "(uVar6 & 0xff) << uVar18" (parenthesized_expression "(uVar6 & 0xff)" (( "(") (binary_expression "uVar6 & 0xff" (identifier "uVar6") (& "&") (number_literal "0xff")) () ")")) (<< "<<") (identifier "uVar18")))) (; ";")) (if_statement "if (param_4 <= uVar26) goto LAB_0001839c;" (if "if") (parenthesized_expression "(param_4 <= uVar26)" (( "(") (binary_expression "param_4 <= uVar26" (identifier "param_4") (<= "<=") (identifier "uVar26")) () ")")) (goto_statement "goto LAB_0001839c;" (goto "goto") (statement_identifier "LAB_0001839c") (; ";"))) (} "}"))) (expression_statement "bVar1 = *(byte *)(iVar20 + uVar18);" (assignment_expression "bVar1 = *(byte *)(iVar20 + uVar18)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(iVar20 + uVar18)" (* "*") (cast_expression "(byte *)(iVar20 + uVar18)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + uVar18)" (( "(") (binary_expression "iVar20 + uVar18" (identifier "iVar20") (+ "+") (identifier "uVar18")) () ")"))))) (; ";")) (expression_statement "*puVar19 = uVar18 + 1;" (assignment_expression "*puVar19 = uVar18 + 1" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar18 = uVar26 & 0x1f;" (assignment_expression "uVar18 = uVar26 & 0x1f" (identifier "uVar18") (= "=") (binary_expression "uVar26 & 0x1f" (identifier "uVar26") (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar26 = uVar26 + 8;" (assignment_expression "uVar26 = uVar26 + 8" (identifier "uVar26") (= "=") (binary_expression "uVar26 + 8" (identifier "uVar26") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "uVar12 = uVar12 | (uint)bVar1 << uVar18;" (assignment_expression "uVar12 = uVar12 | (uint)bVar1 << uVar18" (identifier "uVar12") (= "=") (binary_expression "uVar12 | (uint)bVar1 << uVar18" (identifier "uVar12") (| "|") (binary_expression "(uint)bVar1 << uVar18" (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")) (<< "<<") (identifier "uVar18")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar26 < param_4)" (( "(") (binary_expression "uVar26 < param_4" (identifier "uVar26") (< "<") (identifier "param_4")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0001839c:\n  pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8);" (statement_identifier "LAB_0001839c") (: ":") (expression_statement "pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8);" (assignment_expression "pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8)" (identifier "pbStack_74") (= "=") (cast_expression "(byte *)(param_2 + (uVar3 & uVar12) * 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + (uVar3 & uVar12) * 8)" (( "(") (binary_expression "param_2 + (uVar3 & uVar12) * 8" (identifier "param_2") (+ "+") (binary_expression "(uVar3 & uVar12) * 8" (parenthesized_expression "(uVar3 & uVar12)" (( "(") (binary_expression "uVar3 & uVar12" (identifier "uVar3") (& "&") (identifier "uVar12")) () ")")) (* "*") (number_literal "8"))) () ")")))) (; ";"))) (expression_statement "uVar18 = (uint)*pbStack_74;" (assignment_expression "uVar18 = (uint)*pbStack_74" (identifier "uVar18") (= "=") (binary_expression "(uint)*pbStack_74" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbStack_74"))) (; ";")) (if_statement "if (0x10 < uVar18) {\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);\n  }" (if "if") (parenthesized_expression "(0x10 < uVar18)" (( "(") (binary_expression "0x10 < uVar18" (number_literal "0x10") (< "<") (identifier "uVar18")) () ")")) (compound_statement "{\n    puVar21 = *(uint **)(puVar24 + 0x1e29c);\n    do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);\n  }" ({ "{") (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" (identifier "puVar21") (= "=") (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" (* "*") (cast_expression "(uint **)(puVar24 + 0x1e29c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x1e29c)" (( "(") (binary_expression "puVar24 + 0x1e29c" (identifier "puVar24") (+ "+") (number_literal "0x1e29c")) () ")"))))) (; ";")) (do_statement "do {\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    } while (0x10 < uVar18);" (do "do") (compound_statement "{\n      if (uVar18 == 99) {\n        return 1;\n      }\n      uVar18 = uVar18 - 0x10;\n      uVar26 = uVar26 - pbStack_74[1];\n      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);\n      if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }\n      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);\n      uVar18 = (uint)*pbStack_74;\n    }" ({ "{") (if_statement "if (uVar18 == 99) {\n        return 1;\n      }" (if "if") (parenthesized_expression "(uVar18 == 99)" (( "(") (binary_expression "uVar18 == 99" (identifier "uVar18") (== "==") (number_literal "99")) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "uVar18 = uVar18 - 0x10;" (assignment_expression "uVar18 = uVar18 - 0x10" (identifier "uVar18") (= "=") (binary_expression "uVar18 - 0x10" (identifier "uVar18") (- "-") (number_literal "0x10"))) (; ";")) (expression_statement "uVar26 = uVar26 - pbStack_74[1];" (assignment_expression "uVar26 = uVar26 - pbStack_74[1]" (identifier "uVar26") (= "=") (binary_expression "uVar26 - pbStack_74[1]" (identifier "uVar26") (- "-") (subscript_expression "pbStack_74[1]" (identifier "pbStack_74") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);" (assignment_expression "uVar12 = uVar12 >> (pbStack_74[1] & 0x1f)" (identifier "uVar12") (= "=") (binary_expression "uVar12 >> (pbStack_74[1] & 0x1f)" (identifier "uVar12") (>> ">>") (parenthesized_expression "(pbStack_74[1] & 0x1f)" (( "(") (binary_expression "pbStack_74[1] & 0x1f" (subscript_expression "pbStack_74[1]" (identifier "pbStack_74") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (uVar26 < uVar18) {\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }" (if "if") (parenthesized_expression "(uVar26 < uVar18)" (( "(") (binary_expression "uVar26 < uVar18" (identifier "uVar26") (< "<") (identifier "uVar18")) () ")")) (compound_statement "{\n        do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);\nLAB_00018454:\n        uVar26 = uVar6 + 8;\n      }" ({ "{") (do_statement "do {\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        } while (uVar6 + 8 < uVar18);" (do "do") (compound_statement "{\n          while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }\n          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);\n          *puVar19 = uVar26 + 1;\n          uVar26 = uVar6 + 8;\n        }" ({ "{") (while_statement "while( true ) {\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            uVar6 = uVar26;\n            uVar26 = *puVar19;\n            if (uVar26 < *puVar21) break;\n            *puVar16 = uVar23;\n            uVar26 = fill_inbuf(0);\n            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);\n            uVar26 = uVar6 + 8;\n            if (uVar18 <= uVar6 + 8) goto LAB_00018454;\n          }" ({ "{") (expression_statement "uVar6 = uVar26;" (assignment_expression "uVar6 = uVar26" (identifier "uVar6") (= "=") (identifier "uVar26")) (; ";")) (expression_statement "uVar26 = *puVar19;" (assignment_expression "uVar26 = *puVar19" (identifier "uVar26") (= "=") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (; ";")) (if_statement "if (uVar26 < *puVar21) break;" (if "if") (parenthesized_expression "(uVar26 < *puVar21)" (( "(") (binary_expression "uVar26 < *puVar21" (identifier "uVar26") (< "<") (pointer_expression "*puVar21" (* "*") (identifier "puVar21"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (identifier "uVar23")) (; ";")) (expression_statement "uVar26 = fill_inbuf(0);" (assignment_expression "uVar26 = fill_inbuf(0)" (identifier "uVar26") (= "=") (call_expression "fill_inbuf(0)" (identifier "fill_inbuf") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);" (assignment_expression "uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f)" (identifier "uVar12") (= "=") (binary_expression "uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f)" (identifier "uVar12") (| "|") (binary_expression "(uVar26 & 0xff) << (uVar6 & 0x1f)" (parenthesized_expression "(uVar26 & 0xff)" (( "(") (binary_expression "uVar26 & 0xff" (identifier "uVar26") (& "&") (number_literal "0xff")) () ")")) (<< "<<") (parenthesized_expression "(uVar6 & 0x1f)" (( "(") (binary_expression "uVar6 & 0x1f" (identifier "uVar6") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "uVar26 = uVar6 + 8;" (assignment_expression "uVar26 = uVar6 + 8" (identifier "uVar26") (= "=") (binary_expression "uVar6 + 8" (identifier "uVar6") (+ "+") (number_literal "8"))) (; ";")) (if_statement "if (uVar18 <= uVar6 + 8) goto LAB_00018454;" (if "if") (parenthesized_expression "(uVar18 <= uVar6 + 8)" (( "(") (binary_expression "uVar18 <= uVar6 + 8" (identifier "uVar18") (<= "<=") (binary_expression "uVar6 + 8" (identifier "uVar6") (+ "+") (number_literal "8"))) () ")")) (goto_statement "goto LAB_00018454;" (goto "goto") (statement_identifier "LAB_00018454") (; ";"))) (} "}"))) (expression_statement "uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);" (assignment_expression "uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f)" (identifier "uVar12") (= "=") (binary_expression "uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f)" (identifier "uVar12") (| "|") (binary_expression "(uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f)" (binary_expression "(uint)*(byte *)(iVar20 + uVar26)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar20 + uVar26)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + uVar26)" (( "(") (binary_expression "iVar20 + uVar26" (identifier "iVar20") (+ "+") (identifier "uVar26")) () ")")))) (<< "<<") (parenthesized_expression "(uVar6 & 0x1f)" (( "(") (binary_expression "uVar6 & 0x1f" (identifier "uVar6") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "*puVar19 = uVar26 + 1;" (assignment_expression "*puVar19 = uVar26 + 1" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (binary_expression "uVar26 + 1" (identifier "uVar26") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar26 = uVar6 + 8;" (assignment_expression "uVar26 = uVar6 + 8" (identifier "uVar26") (= "=") (binary_expression "uVar6 + 8" (identifier "uVar6") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar6 + 8 < uVar18)" (( "(") (binary_expression "uVar6 + 8 < uVar18" (binary_expression "uVar6 + 8" (identifier "uVar6") (+ "+") (number_literal "8")) (< "<") (identifier "uVar18")) () ")")) (; ";")) (labeled_statement "LAB_00018454:\n        uVar26 = uVar6 + 8;" (statement_identifier "LAB_00018454") (: ":") (expression_statement "uVar26 = uVar6 + 8;" (assignment_expression "uVar26 = uVar6 + 8" (identifier "uVar26") (= "=") (binary_expression "uVar6 + 8" (identifier "uVar6") (+ "+") (number_literal "8"))) (; ";"))) (} "}"))) (expression_statement "pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);" (assignment_expression "pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8)" (identifier "pbStack_74") (= "=") (cast_expression "(byte *)(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8)" (( "(") (binary_expression "*(int *)(pbStack_74 + 4) +\n                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8" (pointer_expression "*(int *)(pbStack_74 + 4)" (* "*") (cast_expression "(int *)(pbStack_74 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbStack_74 + 4)" (( "(") (binary_expression "pbStack_74 + 4" (identifier "pbStack_74") (+ "+") (number_literal "4")) () ")")))) (+ "+") (binary_expression "(*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8" (parenthesized_expression "(*(ushort *)(iVar10 + uVar18 * 2) & uVar12)" (( "(") (binary_expression "*(ushort *)(iVar10 + uVar18 * 2) & uVar12" (pointer_expression "*(ushort *)(iVar10 + uVar18 * 2)" (* "*") (cast_expression "(ushort *)(iVar10 + uVar18 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + uVar18 * 2)" (( "(") (binary_expression "iVar10 + uVar18 * 2" (identifier "iVar10") (+ "+") (binary_expression "uVar18 * 2" (identifier "uVar18") (* "*") (number_literal "2"))) () ")")))) (& "&") (identifier "uVar12")) () ")")) (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "uVar18 = (uint)*pbStack_74;" (assignment_expression "uVar18 = (uint)*pbStack_74" (identifier "uVar18") (= "=") (binary_expression "(uint)*pbStack_74" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbStack_74"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0x10 < uVar18)" (( "(") (binary_expression "0x10 < uVar18" (number_literal "0x10") (< "<") (identifier "uVar18")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar26 = uVar26 - pbStack_74[1];" (assignment_expression "uVar26 = uVar26 - pbStack_74[1]" (identifier "uVar26") (= "=") (binary_expression "uVar26 - pbStack_74[1]" (identifier "uVar26") (- "-") (subscript_expression "pbStack_74[1]" (identifier "pbStack_74") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);" (assignment_expression "uVar12 = uVar12 >> (pbStack_74[1] & 0x1f)" (identifier "uVar12") (= "=") (binary_expression "uVar12 >> (pbStack_74[1] & 0x1f)" (identifier "uVar12") (>> ">>") (parenthesized_expression "(pbStack_74[1] & 0x1f)" (( "(") (binary_expression "pbStack_74[1] & 0x1f" (subscript_expression "pbStack_74[1]" (identifier "pbStack_74") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" (identifier "puVar21") (= "=") (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" (* "*") (cast_expression "(uint **)(puVar24 + 0x1e29c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x1e29c)" (( "(") (binary_expression "puVar24 + 0x1e29c" (identifier "puVar24") (+ "+") (number_literal "0x1e29c")) () ")"))))) (; ";")) (if_statement "if (uVar26 < uVar18) {\n    uVar7 = *puVar19;\n    uVar6 = uVar26;\n    while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }\n  }" (if "if") (parenthesized_expression "(uVar26 < uVar18)" (( "(") (binary_expression "uVar26 < uVar18" (identifier "uVar26") (< "<") (identifier "uVar18")) () ")")) (compound_statement "{\n    uVar7 = *puVar19;\n    uVar6 = uVar26;\n    while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }\n  }" ({ "{") (expression_statement "uVar7 = *puVar19;" (assignment_expression "uVar7 = *puVar19" (identifier "uVar7") (= "=") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (; ";")) (expression_statement "uVar6 = uVar26;" (assignment_expression "uVar6 = uVar26" (identifier "uVar6") (= "=") (identifier "uVar26")) (; ";")) (while_statement "while( true ) {\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }\n      uVar12 = uVar12 | uVar26;\n      uVar26 = uVar6 + 8;\n      if (uVar18 <= uVar26) break;\n      uVar6 = uVar6 + 8;\n      uVar7 = *puVar19;\n    }" ({ "{") (if_statement "if (uVar7 < *puVar21) {\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }\n      else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }" (if "if") (parenthesized_expression "(uVar7 < *puVar21)" (( "(") (binary_expression "uVar7 < *puVar21" (identifier "uVar7") (< "<") (pointer_expression "*puVar21" (* "*") (identifier "puVar21"))) () ")")) (compound_statement "{\n        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);\n        *puVar19 = uVar7 + 1;\n      }" ({ "{") (expression_statement "uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);" (assignment_expression "uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f)" (identifier "uVar26") (= "=") (binary_expression "(uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f)" (binary_expression "(uint)*(byte *)(iVar20 + uVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar20 + uVar7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + uVar7)" (( "(") (binary_expression "iVar20 + uVar7" (identifier "iVar20") (+ "+") (identifier "uVar7")) () ")")))) (<< "<<") (parenthesized_expression "(uVar6 & 0x1f)" (( "(") (binary_expression "uVar6 & 0x1f" (identifier "uVar6") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "*puVar19 = uVar7 + 1;" (assignment_expression "*puVar19 = uVar7 + 1" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }" (else "else") (compound_statement "{\n        *puVar16 = uVar23;\n        uVar26 = fill_inbuf(0);\n        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);\n      }" ({ "{") (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (identifier "uVar23")) (; ";")) (expression_statement "uVar26 = fill_inbuf(0);" (assignment_expression "uVar26 = fill_inbuf(0)" (identifier "uVar26") (= "=") (call_expression "fill_inbuf(0)" (identifier "fill_inbuf") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);" (assignment_expression "uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f)" (identifier "uVar26") (= "=") (binary_expression "(uVar26 & 0xff) << (uVar6 & 0x1f)" (parenthesized_expression "(uVar26 & 0xff)" (( "(") (binary_expression "uVar26 & 0xff" (identifier "uVar26") (& "&") (number_literal "0xff")) () ")")) (<< "<<") (parenthesized_expression "(uVar6 & 0x1f)" (( "(") (binary_expression "uVar6 & 0x1f" (identifier "uVar6") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}")))) (expression_statement "uVar12 = uVar12 | uVar26;" (assignment_expression "uVar12 = uVar12 | uVar26" (identifier "uVar12") (= "=") (binary_expression "uVar12 | uVar26" (identifier "uVar12") (| "|") (identifier "uVar26"))) (; ";")) (expression_statement "uVar26 = uVar6 + 8;" (assignment_expression "uVar26 = uVar6 + 8" (identifier "uVar26") (= "=") (binary_expression "uVar6 + 8" (identifier "uVar6") (+ "+") (number_literal "8"))) (; ";")) (if_statement "if (uVar18 <= uVar26) break;" (if "if") (parenthesized_expression "(uVar18 <= uVar26)" (( "(") (binary_expression "uVar18 <= uVar26" (identifier "uVar18") (<= "<=") (identifier "uVar26")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar6 = uVar6 + 8;" (assignment_expression "uVar6 = uVar6 + 8" (identifier "uVar6") (= "=") (binary_expression "uVar6 + 8" (identifier "uVar6") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "uVar7 = *puVar19;" (assignment_expression "uVar7 = *puVar19" (identifier "uVar7") (= "=") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar15 = *(int *)(puVar24 + 0x1e37c);" (assignment_expression "iVar15 = *(int *)(puVar24 + 0x1e37c)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar24 + 0x1e37c)" (* "*") (cast_expression "(int *)(puVar24 + 0x1e37c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x1e37c)" (( "(") (binary_expression "puVar24 + 0x1e37c" (identifier "puVar24") (+ "+") (number_literal "0x1e37c")) () ")"))))) (; ";")) (expression_statement "uVar26 = uVar26 - uVar18;" (assignment_expression "uVar26 = uVar26 - uVar18" (identifier "uVar26") (= "=") (binary_expression "uVar26 - uVar18" (identifier "uVar26") (- "-") (identifier "uVar18"))) (; ";")) (expression_statement "uVar6 = uVar5 & uVar22;" (assignment_expression "uVar6 = uVar5 & uVar22" (identifier "uVar6") (= "=") (binary_expression "uVar5 & uVar22" (identifier "uVar5") (& "&") (identifier "uVar22"))) (; ";")) (expression_statement "uVar22 = uVar12 >> (uVar18 & 0x1f);" (assignment_expression "uVar22 = uVar12 >> (uVar18 & 0x1f)" (identifier "uVar22") (= "=") (binary_expression "uVar12 >> (uVar18 & 0x1f)" (identifier "uVar12") (>> ">>") (parenthesized_expression "(uVar18 & 0x1f)" (( "(") (binary_expression "uVar18 & 0x1f" (identifier "uVar18") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar6 = uVar6 + uVar4;" (assignment_expression "uVar6 = uVar6 + uVar4" (identifier "uVar6") (= "=") (binary_expression "uVar6 + uVar4" (identifier "uVar6") (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "uVar18 = (uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12);" (assignment_expression "uVar18 = (uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12)" (identifier "uVar18") (= "=") (binary_expression "(uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12)" (parenthesized_expression "(uVar23 - *(ushort *)(pbStack_74 + 4))" (( "(") (binary_expression "uVar23 - *(ushort *)(pbStack_74 + 4)" (identifier "uVar23") (- "-") (pointer_expression "*(ushort *)(pbStack_74 + 4)" (* "*") (cast_expression "(ushort *)(pbStack_74 + 4)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbStack_74 + 4)" (( "(") (binary_expression "pbStack_74 + 4" (identifier "pbStack_74") (+ "+") (number_literal "4")) () ")"))))) () ")")) (- "-") (parenthesized_expression "(*(ushort *)(iVar10 + uVar18 * 2) & uVar12)" (( "(") (binary_expression "*(ushort *)(iVar10 + uVar18 * 2) & uVar12" (pointer_expression "*(ushort *)(iVar10 + uVar18 * 2)" (* "*") (cast_expression "(ushort *)(iVar10 + uVar18 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + uVar18 * 2)" (( "(") (binary_expression "iVar10 + uVar18 * 2" (identifier "iVar10") (+ "+") (binary_expression "uVar18 * 2" (identifier "uVar18") (* "*") (number_literal "2"))) () ")")))) (& "&") (identifier "uVar12")) () ")")))) (; ";")) (do_statement "do {\n    uVar18 = uVar18 & 0x7fff;\n    if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }\n    uVar23 = uVar23 + uVar12;\n    uVar18 = uVar12 + uVar18;\n    if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }\n  } while (uVar6 != 0);" (do "do") (compound_statement "{\n    uVar18 = uVar18 & 0x7fff;\n    if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }\n    uVar23 = uVar23 + uVar12;\n    uVar18 = uVar12 + uVar18;\n    if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }\n  }" ({ "{") (expression_statement "uVar18 = uVar18 & 0x7fff;" (assignment_expression "uVar18 = uVar18 & 0x7fff" (identifier "uVar18") (= "=") (binary_expression "uVar18 & 0x7fff" (identifier "uVar18") (& "&") (number_literal "0x7fff"))) (; ";")) (if_statement "if (uVar23 < uVar18) {\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }\n    else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }" (if "if") (parenthesized_expression "(uVar23 < uVar18)" (( "(") (binary_expression "uVar23 < uVar18" (identifier "uVar23") (< "<") (identifier "uVar18")) () ")")) (compound_statement "{\n      uVar12 = 0x8000 - uVar18;\n      if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar18 < uVar23) goto LAB_000186a8;\nLAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);\n      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;\nLAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);\n    }" ({ "{") (expression_statement "uVar12 = 0x8000 - uVar18;" (assignment_expression "uVar12 = 0x8000 - uVar18" (identifier "uVar12") (= "=") (binary_expression "0x8000 - uVar18" (number_literal "0x8000") (- "-") (identifier "uVar18"))) (; ";")) (if_statement "if (uVar6 <= 0x8000 - uVar18) {\n        uVar12 = uVar6;\n      }" (if "if") (parenthesized_expression "(uVar6 <= 0x8000 - uVar18)" (( "(") (binary_expression "uVar6 <= 0x8000 - uVar18" (identifier "uVar6") (<= "<=") (binary_expression "0x8000 - uVar18" (number_literal "0x8000") (- "-") (identifier "uVar18"))) () ")")) (compound_statement "{\n        uVar12 = uVar6;\n      }" ({ "{") (expression_statement "uVar12 = uVar6;" (assignment_expression "uVar12 = uVar6" (identifier "uVar12") (= "=") (identifier "uVar6")) (; ";")) (} "}"))) (expression_statement "uVar6 = uVar6 - uVar12;" (assignment_expression "uVar6 = uVar6 - uVar12" (identifier "uVar6") (= "=") (binary_expression "uVar6 - uVar12" (identifier "uVar6") (- "-") (identifier "uVar12"))) (; ";")) (if_statement "if (uVar18 < uVar23) goto LAB_000186a8;" (if "if") (parenthesized_expression "(uVar18 < uVar23)" (( "(") (binary_expression "uVar18 < uVar23" (identifier "uVar18") (< "<") (identifier "uVar23")) () ")")) (goto_statement "goto LAB_000186a8;" (goto "goto") (statement_identifier "LAB_000186a8") (; ";"))) (labeled_statement "LAB_00018724:\n      pcVar25 = *(code **)(puVar24 + 0x1e578);" (statement_identifier "LAB_00018724") (: ":") (expression_statement "pcVar25 = *(code **)(puVar24 + 0x1e578);" (assignment_expression "pcVar25 = *(code **)(puVar24 + 0x1e578)" (identifier "pcVar25") (= "=") (pointer_expression "*(code **)(puVar24 + 0x1e578)" (* "*") (cast_expression "(code **)(puVar24 + 0x1e578)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x1e578)" (( "(") (binary_expression "puVar24 + 0x1e578" (identifier "puVar24") (+ "+") (number_literal "0x1e578")) () ")"))))) (; ";"))) (if_statement "if (uVar18 - uVar23 < uVar12) goto LAB_00018738;" (if "if") (parenthesized_expression "(uVar18 - uVar23 < uVar12)" (( "(") (binary_expression "uVar18 - uVar23 < uVar12" (binary_expression "uVar18 - uVar23" (identifier "uVar18") (- "-") (identifier "uVar23")) (< "<") (identifier "uVar12")) () ")")) (goto_statement "goto LAB_00018738;" (goto "goto") (statement_identifier "LAB_00018738") (; ";"))) (labeled_statement "LAB_000186bc:\n      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);" (statement_identifier "LAB_000186bc") (: ":") (expression_statement "(*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);" (call_expression "(*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12)" (parenthesized_expression "(*pcVar25)" (( "(") (pointer_expression "*pcVar25" (* "*") (identifier "pcVar25")) () ")")) (argument_list "(iVar15 + uVar23,iVar15 + uVar18,uVar12)" (( "(") (binary_expression "iVar15 + uVar23" (identifier "iVar15") (+ "+") (identifier "uVar23")) (, ",") (binary_expression "iVar15 + uVar18" (identifier "iVar15") (+ "+") (identifier "uVar18")) (, ",") (identifier "uVar12") () ")"))) (; ";"))) (} "}")) (else_clause "else {\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }" (else "else") (compound_statement "{\n      uVar12 = 0x8000 - uVar23;\n      if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }\n      uVar6 = uVar6 - uVar12;\n      if (uVar23 <= uVar18) goto LAB_00018724;\nLAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }\nLAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);\n      do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);\n    }" ({ "{") (expression_statement "uVar12 = 0x8000 - uVar23;" (assignment_expression "uVar12 = 0x8000 - uVar23" (identifier "uVar12") (= "=") (binary_expression "0x8000 - uVar23" (number_literal "0x8000") (- "-") (identifier "uVar23"))) (; ";")) (if_statement "if (uVar6 <= 0x8000 - uVar23) {\n        uVar12 = uVar6;\n      }" (if "if") (parenthesized_expression "(uVar6 <= 0x8000 - uVar23)" (( "(") (binary_expression "uVar6 <= 0x8000 - uVar23" (identifier "uVar6") (<= "<=") (binary_expression "0x8000 - uVar23" (number_literal "0x8000") (- "-") (identifier "uVar23"))) () ")")) (compound_statement "{\n        uVar12 = uVar6;\n      }" ({ "{") (expression_statement "uVar12 = uVar6;" (assignment_expression "uVar12 = uVar6" (identifier "uVar12") (= "=") (identifier "uVar6")) (; ";")) (} "}"))) (expression_statement "uVar6 = uVar6 - uVar12;" (assignment_expression "uVar6 = uVar6 - uVar12" (identifier "uVar6") (= "=") (binary_expression "uVar6 - uVar12" (identifier "uVar6") (- "-") (identifier "uVar12"))) (; ";")) (if_statement "if (uVar23 <= uVar18) goto LAB_00018724;" (if "if") (parenthesized_expression "(uVar23 <= uVar18)" (( "(") (binary_expression "uVar23 <= uVar18" (identifier "uVar23") (<= "<=") (identifier "uVar18")) () ")")) (goto_statement "goto LAB_00018724;" (goto "goto") (statement_identifier "LAB_00018724") (; ";"))) (labeled_statement "LAB_000186a8:\n      if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }" (statement_identifier "LAB_000186a8") (: ":") (if_statement "if (uVar12 <= uVar23 - uVar18) {\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }" (if "if") (parenthesized_expression "(uVar12 <= uVar23 - uVar18)" (( "(") (binary_expression "uVar12 <= uVar23 - uVar18" (identifier "uVar12") (<= "<=") (binary_expression "uVar23 - uVar18" (identifier "uVar23") (- "-") (identifier "uVar18"))) () ")")) (compound_statement "{\n        pcVar25 = *(code **)(puVar24 + 0x1e578);\n        goto LAB_000186bc;\n      }" ({ "{") (expression_statement "pcVar25 = *(code **)(puVar24 + 0x1e578);" (assignment_expression "pcVar25 = *(code **)(puVar24 + 0x1e578)" (identifier "pcVar25") (= "=") (pointer_expression "*(code **)(puVar24 + 0x1e578)" (* "*") (cast_expression "(code **)(puVar24 + 0x1e578)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x1e578)" (( "(") (binary_expression "puVar24 + 0x1e578" (identifier "puVar24") (+ "+") (number_literal "0x1e578")) () ")"))))) (; ";")) (goto_statement "goto LAB_000186bc;" (goto "goto") (statement_identifier "LAB_000186bc") (; ";")) (} "}")))) (labeled_statement "LAB_00018738:\n      puVar8 = (undefined1 *)(iVar15 + uVar18);" (statement_identifier "LAB_00018738") (: ":") (expression_statement "puVar8 = (undefined1 *)(iVar15 + uVar18);" (assignment_expression "puVar8 = (undefined1 *)(iVar15 + uVar18)" (identifier "puVar8") (= "=") (cast_expression "(undefined1 *)(iVar15 + uVar18)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + uVar18)" (( "(") (binary_expression "iVar15 + uVar18" (identifier "iVar15") (+ "+") (identifier "uVar18")) () ")")))) (; ";"))) (do_statement "do {\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);" (do "do") (compound_statement "{\n        puVar9 = puVar8 + 1;\n        puVar8[uVar23 - uVar18] = *puVar8;\n        puVar8 = puVar9;\n      }" ({ "{") (expression_statement "puVar9 = puVar8 + 1;" (assignment_expression "puVar9 = puVar8 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar8[uVar23 - uVar18] = *puVar8;" (assignment_expression "puVar8[uVar23 - uVar18] = *puVar8" (subscript_expression "puVar8[uVar23 - uVar18]" (identifier "puVar8") ([ "[") (binary_expression "uVar23 - uVar18" (identifier "uVar23") (- "-") (identifier "uVar18")) (] "]")) (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" (identifier "puVar8") (= "=") (identifier "puVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9)" (( "(") (binary_expression "(undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9" (binary_expression "(undefined1 *)(iVar15 + uVar18) + uVar12" (cast_expression "(undefined1 *)(iVar15 + uVar18)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + uVar18)" (( "(") (binary_expression "iVar15 + uVar18" (identifier "iVar15") (+ "+") (identifier "uVar18")) () ")"))) (+ "+") (identifier "uVar12")) (!= "!=") (identifier "puVar9")) () ")")) (; ";")) (} "}")))) (expression_statement "uVar23 = uVar23 + uVar12;" (assignment_expression "uVar23 = uVar23 + uVar12" (identifier "uVar23") (= "=") (binary_expression "uVar23 + uVar12" (identifier "uVar23") (+ "+") (identifier "uVar12"))) (; ";")) (expression_statement "uVar18 = uVar12 + uVar18;" (assignment_expression "uVar18 = uVar12 + uVar18" (identifier "uVar18") (= "=") (binary_expression "uVar12 + uVar18" (identifier "uVar12") (+ "+") (identifier "uVar18"))) (; ";")) (if_statement "if (uVar23 == 0x8000) {\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }" (if "if") (parenthesized_expression "(uVar23 == 0x8000)" (( "(") (binary_expression "uVar23 == 0x8000" (identifier "uVar23") (== "==") (number_literal "0x8000")) () ")")) (compound_statement "{\n      *puVar16 = 0x8000;\n      uVar23 = 0;\n      flush_window();\n    }" ({ "{") (expression_statement "*puVar16 = 0x8000;" (assignment_expression "*puVar16 = 0x8000" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (number_literal "0x8000")) (; ";")) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" (identifier "uVar23") (= "=") (number_literal "0")) (; ";")) (expression_statement "flush_window();" (call_expression "flush_window()" (identifier "flush_window") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (goto_statement "goto LAB_000181c8;" (goto "goto") (statement_identifier "LAB_000181c8") (; ";")) (labeled_statement "code_r0x0001823c:\n  puVar21 = *(uint **)(puVar24 + 0x1e29c);" (statement_identifier "code_r0x0001823c") (: ":") (expression_statement "puVar21 = *(uint **)(puVar24 + 0x1e29c);" (assignment_expression "puVar21 = *(uint **)(puVar24 + 0x1e29c)" (identifier "puVar21") (= "=") (pointer_expression "*(uint **)(puVar24 + 0x1e29c)" (* "*") (cast_expression "(uint **)(puVar24 + 0x1e29c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x1e29c)" (( "(") (binary_expression "puVar24 + 0x1e29c" (identifier "puVar24") (+ "+") (number_literal "0x1e29c")) () ")"))))) (; ";"))) (labeled_statement "LAB_00018240:\n  uVar18 = *puVar19;" (statement_identifier "LAB_00018240") (: ":") (expression_statement "uVar18 = *puVar19;" (assignment_expression "uVar18 = *puVar19" (identifier "uVar18") (= "=") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (; ";"))) (if_statement "if (uVar18 < *puVar21) {\n    uVar12 = (uint)*(byte *)(iVar20 + uVar18);\n    *puVar19 = uVar18 + 1;\n  }\n  else {\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }" (if "if") (parenthesized_expression "(uVar18 < *puVar21)" (( "(") (binary_expression "uVar18 < *puVar21" (identifier "uVar18") (< "<") (pointer_expression "*puVar21" (* "*") (identifier "puVar21"))) () ")")) (compound_statement "{\n    uVar12 = (uint)*(byte *)(iVar20 + uVar18);\n    *puVar19 = uVar18 + 1;\n  }" ({ "{") (expression_statement "uVar12 = (uint)*(byte *)(iVar20 + uVar18);" (assignment_expression "uVar12 = (uint)*(byte *)(iVar20 + uVar18)" (identifier "uVar12") (= "=") (binary_expression "(uint)*(byte *)(iVar20 + uVar18)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar20 + uVar18)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + uVar18)" (( "(") (binary_expression "iVar20 + uVar18" (identifier "iVar20") (+ "+") (identifier "uVar18")) () ")"))))) (; ";")) (expression_statement "*puVar19 = uVar18 + 1;" (assignment_expression "*puVar19 = uVar18 + 1" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }" (else "else") (compound_statement "{\n    *puVar16 = uVar23;\n    uVar12 = fill_inbuf(0);\n    uVar12 = uVar12 & 0xff;\n  }" ({ "{") (expression_statement "*puVar16 = uVar23;" (assignment_expression "*puVar16 = uVar23" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (identifier "uVar23")) (; ";")) (expression_statement "uVar12 = fill_inbuf(0);" (assignment_expression "uVar12 = fill_inbuf(0)" (identifier "uVar12") (= "=") (call_expression "fill_inbuf(0)" (identifier "fill_inbuf") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar12 = uVar12 & 0xff;" (assignment_expression "uVar12 = uVar12 & 0xff" (identifier "uVar12") (= "=") (binary_expression "uVar12 & 0xff" (identifier "uVar12") (& "&") (number_literal "0xff"))) (; ";")) (} "}")))) (expression_statement "uVar18 = uVar26 & 0x1f;" (assignment_expression "uVar18 = uVar26 & 0x1f" (identifier "uVar18") (= "=") (binary_expression "uVar26 & 0x1f" (identifier "uVar26") (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar26 = uVar26 + 8;" (assignment_expression "uVar26 = uVar26 + 8" (identifier "uVar26") (= "=") (binary_expression "uVar26 + 8" (identifier "uVar26") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "uVar22 = uVar22 | uVar12 << uVar18;" (assignment_expression "uVar22 = uVar22 | uVar12 << uVar18" (identifier "uVar22") (= "=") (binary_expression "uVar22 | uVar12 << uVar18" (identifier "uVar22") (| "|") (binary_expression "uVar12 << uVar18" (identifier "uVar12") (<< "<<") (identifier "uVar18")))) (; ";")) (goto_statement "goto LAB_000181c8;" (goto "goto") (statement_identifier "LAB_000181c8") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) 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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (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: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal))))) condition: (parenthesized_expression (true))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (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))))) 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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (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: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (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: (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: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (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: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (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: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier)))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (binary_expression left: (identifier) right: (identifier)) (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier))))) (labeled_statement label: (statement_identifier) (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: (identifier))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (identifier))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) right: (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (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)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (goto_statement label: (statement_identifier)))))

undefined4 MASKED(undefined4 param_1,int param_2,uint param_3,uint param_4)

{
  byte bVar1;
  ushort uVar2;
  ushort uVar3;
  ushort uVar4;
  ushort uVar5;
  uint uVar6;
  uint uVar7;
  undefined1 *puVar8;
  undefined1 *puVar9;
  int iVar10;
  int iVar11;
  uint uVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  uint *puVar16;
  byte *pbVar17;
  uint uVar18;
  uint *puVar19;
  int iVar20;
  uint *puVar21;
  uint uVar22;
  uint uVar23;
  undefined *puVar24;
  code *pcVar25;
  uint uVar26;
  byte *pbStack_74;
  
  FUN_0001463c();
  puVar24 = PTR_00036394 + 0x6084;
  iVar11 = 1;
  FUN_00016084();
  iVar14 = *(int *)(puVar24 + 0x1e268);
  iVar13 = *(int *)(puVar24 + 0x1e268);
  iVar10 = *(int *)(puVar24 + 0x1e278) + 0x4e40;
  puVar16 = *(uint **)(puVar24 + 0x1e368);
  uVar2 = *(ushort *)(iVar10 + param_3 * 2);
  uVar3 = *(ushort *)(iVar10 + param_4 * 2);
  puVar19 = *(uint **)(puVar24 + 0x1e298);
  uVar22 = *(uint *)(iVar13 + 0x6d38);
  uVar26 = *(uint *)(iVar14 + 0x6d34);
  uVar23 = *puVar16;
  iVar20 = *(int *)(puVar24 + 0x1e2a0);
LAB_000181c8:
  puVar21 = *(uint **)(puVar24 + 0x1e29c);
  if (param_3 <= uVar26) goto LAB_000181d8;
  goto LAB_00018240;
LAB_000181d8:
  pbVar17 = (byte *)(iVar11 + (uVar22 & uVar2) * 8);
  uVar18 = (uint)*pbVar17;
  if (0x10 < uVar18) {
    puVar21 = *(uint **)(puVar24 + 0x1e29c);
    if (uVar18 == 99) {
      return 1;
    }
    do {
      uVar18 = uVar18 - 0x10;
      uVar26 = uVar26 - pbVar17[1];
      uVar22 = uVar22 >> (pbVar17[1] & 0x1f);
      if (uVar26 < uVar18) {
        do {
          while( true ) {
            uVar12 = uVar26;
            uVar26 = *puVar19;
            if (uVar26 < *puVar21) break;
            *puVar16 = uVar23;
            uVar26 = fill_inbuf(0);
            uVar22 = uVar22 | (uVar26 & 0xff) << (uVar12 & 0x1f);
            uVar26 = uVar12 + 8;
            if (uVar18 <= uVar12 + 8) goto LAB_0001856c;
          }
          uVar22 = uVar22 | (uint)*(byte *)(iVar20 + uVar26) << (uVar12 & 0x1f);
          *puVar19 = uVar26 + 1;
          uVar26 = uVar12 + 8;
        } while (uVar12 + 8 < uVar18);
LAB_0001856c:
        uVar26 = uVar12 + 8;
      }
      pbVar17 = (byte *)(*(int *)(pbVar17 + 4) + (*(ushort *)(iVar10 + uVar18 * 2) & uVar22) * 8);
      uVar18 = (uint)*pbVar17;
      if (uVar18 < 0x11) break;
      if (uVar18 == 99) {
        return 1;
      }
    } while( true );
  }
  uVar22 = uVar22 >> (pbVar17[1] & 0x1f);
  uVar26 = uVar26 - pbVar17[1];
  if (uVar18 == 0x10) {
    uVar18 = uVar23 + 1;
    *(char *)(*(int *)(puVar24 + 0x1e37c) + uVar23) = (char)*(undefined2 *)(pbVar17 + 4);
    if (uVar18 == 0x8000) {
      uVar23 = 0;
      *puVar16 = 0x8000;
      flush_window();
      goto LAB_000181c8;
    }
    uVar23 = uVar18;
    if (uVar26 < param_3) goto code_r0x0001823c;
    goto LAB_000181d8;
  }
  if (uVar18 == 0xf) {
    *puVar16 = uVar23;
    *(uint *)(iVar13 + 0x6d38) = uVar22;
    *(uint *)(iVar14 + 0x6d34) = uVar26;
    return 0;
  }
  if (uVar26 < uVar18) {
    puVar21 = *(uint **)(puVar24 + 0x1e29c);
    do {
      uVar12 = *puVar19;
      if (uVar12 < *puVar21) {
        uVar6 = (uint)*(byte *)(iVar20 + uVar12) << (uVar26 & 0x1f);
        *puVar19 = uVar12 + 1;
      }
      else {
        *puVar16 = uVar23;
        uVar12 = fill_inbuf(0);
        uVar6 = (uVar12 & 0xff) << (uVar26 & 0x1f);
      }
      uVar22 = uVar22 | uVar6;
      uVar26 = uVar26 + 8;
    } while (uVar26 < uVar18);
  }
  uVar4 = *(ushort *)(pbVar17 + 4);
  uVar26 = uVar26 - uVar18;
  uVar12 = uVar22 >> (uVar18 & 0x1f);
  uVar5 = *(ushort *)(iVar10 + uVar18 * 2);
  if (uVar26 < param_4) {
    puVar21 = *(uint **)(puVar24 + 0x1e29c);
    do {
      while( true ) {
        uVar18 = *puVar19;
        if (uVar18 < *puVar21) break;
        *puVar16 = uVar23;
        uVar6 = fill_inbuf(0);
        uVar18 = uVar26 & 0x1f;
        uVar26 = uVar26 + 8;
        uVar12 = uVar12 | (uVar6 & 0xff) << uVar18;
        if (param_4 <= uVar26) goto LAB_0001839c;
      }
      bVar1 = *(byte *)(iVar20 + uVar18);
      *puVar19 = uVar18 + 1;
      uVar18 = uVar26 & 0x1f;
      uVar26 = uVar26 + 8;
      uVar12 = uVar12 | (uint)bVar1 << uVar18;
    } while (uVar26 < param_4);
  }
LAB_0001839c:
  pbStack_74 = (byte *)(param_2 + (uVar3 & uVar12) * 8);
  uVar18 = (uint)*pbStack_74;
  if (0x10 < uVar18) {
    puVar21 = *(uint **)(puVar24 + 0x1e29c);
    do {
      if (uVar18 == 99) {
        return 1;
      }
      uVar18 = uVar18 - 0x10;
      uVar26 = uVar26 - pbStack_74[1];
      uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);
      if (uVar26 < uVar18) {
        do {
          while( true ) {
            uVar6 = uVar26;
            uVar26 = *puVar19;
            if (uVar26 < *puVar21) break;
            *puVar16 = uVar23;
            uVar26 = fill_inbuf(0);
            uVar12 = uVar12 | (uVar26 & 0xff) << (uVar6 & 0x1f);
            uVar26 = uVar6 + 8;
            if (uVar18 <= uVar6 + 8) goto LAB_00018454;
          }
          uVar12 = uVar12 | (uint)*(byte *)(iVar20 + uVar26) << (uVar6 & 0x1f);
          *puVar19 = uVar26 + 1;
          uVar26 = uVar6 + 8;
        } while (uVar6 + 8 < uVar18);
LAB_00018454:
        uVar26 = uVar6 + 8;
      }
      pbStack_74 = (byte *)(*(int *)(pbStack_74 + 4) +
                           (*(ushort *)(iVar10 + uVar18 * 2) & uVar12) * 8);
      uVar18 = (uint)*pbStack_74;
    } while (0x10 < uVar18);
  }
  uVar26 = uVar26 - pbStack_74[1];
  uVar12 = uVar12 >> (pbStack_74[1] & 0x1f);
  puVar21 = *(uint **)(puVar24 + 0x1e29c);
  if (uVar26 < uVar18) {
    uVar7 = *puVar19;
    uVar6 = uVar26;
    while( true ) {
      if (uVar7 < *puVar21) {
        uVar26 = (uint)*(byte *)(iVar20 + uVar7) << (uVar6 & 0x1f);
        *puVar19 = uVar7 + 1;
      }
      else {
        *puVar16 = uVar23;
        uVar26 = fill_inbuf(0);
        uVar26 = (uVar26 & 0xff) << (uVar6 & 0x1f);
      }
      uVar12 = uVar12 | uVar26;
      uVar26 = uVar6 + 8;
      if (uVar18 <= uVar26) break;
      uVar6 = uVar6 + 8;
      uVar7 = *puVar19;
    }
  }
  iVar15 = *(int *)(puVar24 + 0x1e37c);
  uVar26 = uVar26 - uVar18;
  uVar6 = uVar5 & uVar22;
  uVar22 = uVar12 >> (uVar18 & 0x1f);
  uVar6 = uVar6 + uVar4;
  uVar18 = (uVar23 - *(ushort *)(pbStack_74 + 4)) - (*(ushort *)(iVar10 + uVar18 * 2) & uVar12);
  do {
    uVar18 = uVar18 & 0x7fff;
    if (uVar23 < uVar18) {
      uVar12 = 0x8000 - uVar18;
      if (uVar6 <= 0x8000 - uVar18) {
        uVar12 = uVar6;
      }
      uVar6 = uVar6 - uVar12;
      if (uVar18 < uVar23) goto LAB_000186a8;
LAB_00018724:
      pcVar25 = *(code **)(puVar24 + 0x1e578);
      if (uVar18 - uVar23 < uVar12) goto LAB_00018738;
LAB_000186bc:
      (*pcVar25)(iVar15 + uVar23,iVar15 + uVar18,uVar12);
    }
    else {
      uVar12 = 0x8000 - uVar23;
      if (uVar6 <= 0x8000 - uVar23) {
        uVar12 = uVar6;
      }
      uVar6 = uVar6 - uVar12;
      if (uVar23 <= uVar18) goto LAB_00018724;
LAB_000186a8:
      if (uVar12 <= uVar23 - uVar18) {
        pcVar25 = *(code **)(puVar24 + 0x1e578);
        goto LAB_000186bc;
      }
LAB_00018738:
      puVar8 = (undefined1 *)(iVar15 + uVar18);
      do {
        puVar9 = puVar8 + 1;
        puVar8[uVar23 - uVar18] = *puVar8;
        puVar8 = puVar9;
      } while ((undefined1 *)(iVar15 + uVar18) + uVar12 != puVar9);
    }
    uVar23 = uVar23 + uVar12;
    uVar18 = uVar12 + uVar18;
    if (uVar23 == 0x8000) {
      *puVar16 = 0x8000;
      uVar23 = 0;
      flush_window();
    }
  } while (uVar6 != 0);
  goto LAB_000181c8;
code_r0x0001823c:
  puVar21 = *(uint **)(puVar24 + 0x1e29c);
LAB_00018240:
  uVar18 = *puVar19;
  if (uVar18 < *puVar21) {
    uVar12 = (uint)*(byte *)(iVar20 + uVar18);
    *puVar19 = uVar18 + 1;
  }
  else {
    *puVar16 = uVar23;
    uVar12 = fill_inbuf(0);
    uVar12 = uVar12 & 0xff;
  }
  uVar18 = uVar26 & 0x1f;
  uVar26 = uVar26 + 8;
  uVar22 = uVar22 | uVar12 << uVar18;
  goto LAB_000181c8;
}

