
int zcatfd(int fd,int ofd,char *fn)

{
  undefined *puVar1;
  int iVar2;
  size_t nb;
  int iVar3;
  uint *puVar4;
  uint uVar5;
  uint *puVar6;
  int iVar7;
  int *piVar8;
  int iVar9;
  int *piVar10;
  undefined *puVar11;
  code *pcVar12;
  code *pcVar13;
  ushort uStack_1a4;
  ushort uStack_1a2;
  int iStack_19c;
  int iStack_198;
  int iStack_194;
  int iStack_190;
  code *pcStack_18c;
  undefined *puStack_178;
  uint *puStack_16c;
  uint auStack_164 [32];
  int iStack_e4;
  int *piStack_dc;
  int iStack_d8;
  int iStack_d4;
  undefined *puStack_d0;
  char lbuf [128];
  
  puVar1 = PTR___stack_chk_guard_001464dc;
  iVar2 = *(int *)PTR___stack_chk_guard_001464dc;
  do {
    piVar8 = (int *)lbuf;
    nb = zread(fd,lbuf,0x80);
    if (nb == 0) goto LAB_000dd394;
  } while ((-1 < (int)nb) && (piVar8 = (int *)lbuf, iVar7 = zwrite(ofd,lbuf,nb), -1 < iVar7));
  nb = 0xffffffff;
LAB_000dd394:
  if (iVar2 == *(int *)puVar1) {
    return nb;
  }
  puVar11 = PTR___stack_chk_fail_00146488;
  (*(code *)PTR___stack_chk_fail_00146488)();
  puStack_178 = puVar11 + 0x6f170;
  piVar10 = *(int **)(puVar11 + 0x6910c);
  puStack_d0 = puVar1;
  iVar9 = 0x40;
  iStack_e4 = *piVar10;
  piStack_dc = (int *)lbuf;
  iStack_d8 = fd;
  iStack_d4 = ofd;
  iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);
  iVar7 = 0;
  do {
    puVar6 = auStack_164;
    puVar4 = (uint *)zread(iVar2,(char *)auStack_164,0x80);
    if (puVar4 == (uint *)0x0) {
      if (iVar9 <= iVar7 + 1) {
        uVar5 = (iVar7 + 1) - iVar9;
        iVar9 = iVar9 + 0x80;
        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);
        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);
      }
      *(undefined1 *)(iVar3 + iVar7) = 0;
      if (piVar8 == (int *)0x0) {
        (**(code **)(puStack_178 + -0x6044))(iVar3);
      }
      else {
        *piVar8 = iVar3;
      }
LAB_000dd50c:
      if (iStack_e4 == *piVar10) {
        return iVar7;
      }
      pcVar12 = *(code **)(puStack_178 + -0x60b8);
      pcVar13 = get_new_window_size;
      (*pcVar12)();
      piVar8 = *(int **)(pcVar12 + 0x68f4c);
      iVar2 = **(int **)(pcVar12 + 0x67c08);
      iStack_19c = *piVar8;
      iStack_198 = iVar7;
      iStack_194 = fd;
      iStack_190 = iVar9;
      pcStack_18c = pcVar13;
      if (iVar2 == -1) {
        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));
      }
      if ((((-1 < iVar2) &&
           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&
          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {
        (**(code **)(pcVar12 + 0x68600))();
        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);
        if (puVar6 != (uint *)0x0) {
          *puVar6 = (uint)uStack_1a4;
        }
        if (puVar4 != (uint *)0x0) {
          *puVar4 = (uint)uStack_1a2;
        }
      }
      iVar2 = *piVar8;
      if (iStack_19c != iVar2) {
        pcVar12 = *(code **)(pcVar12 + 0x68ef8);
        (*pcVar12)();
        (**(code **)(pcVar12 + 0x68b90))();
        return 0;
      }
      return iVar2;
    }
    fd = iVar7 + (int)puVar4;
    if ((int)puVar4 < 0) {
      (**(code **)(puStack_178 + -0x6044))(iVar3);
      if (piVar8 == (int *)0x0) {
        iVar7 = -1;
      }
      else {
        *piVar8 = 0;
        iVar7 = -1;
      }
      goto LAB_000dd50c;
    }
    pcVar12 = *(code **)(puStack_178 + -0x605c);
    if (iVar9 <= fd) {
      iVar9 = (fd - iVar9 & 0xffffff80U) + iVar9 + 0x80;
      puStack_16c = puVar4;
      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);
      pcVar12 = *(code **)(puStack_178 + -0x605c);
      puVar4 = puStack_16c;
    }
    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);
    iVar7 = fd;
  } while( true );
}



int zcatfd(int param_1,undefined4 param_2)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  uint *puVar4;
  uint uVar5;
  uint *puVar6;
  int iVar7;
  int *piVar8;
  int iVar9;
  int *piVar10;
  undefined *puVar11;
  code *pcVar12;
  code *pcVar13;
  ushort uStack_1a4;
  ushort uStack_1a2;
  int iStack_19c;
  int iStack_198;
  int iStack_194;
  int iStack_190;
  code *pcStack_18c;
  undefined *puStack_178;
  uint *puStack_16c;
  uint auStack_164 [32];
  int iStack_e4;
  int *piStack_dc;
  int iStack_d8;
  undefined4 uStack_d4;
  undefined *puStack_d0;
  int aiStack_9c [32];
  int local_1c;
  
  puVar1 = PTR___stack_chk_guard_001464dc;
  local_1c = *(int *)PTR___stack_chk_guard_001464dc;
  do {
    piVar8 = aiStack_9c;
    iVar2 = zread(param_1,aiStack_9c,0x80);
    if (iVar2 == 0) goto LAB_000dd394;
  } while ((-1 < iVar2) &&
          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2));
  iVar2 = -1;
LAB_000dd394:
  if (local_1c == *(int *)puVar1) {
    return iVar2;
  }
  iVar2 = local_1c;
  puVar11 = PTR___stack_chk_fail_00146488;
  (*(code *)PTR___stack_chk_fail_00146488)();
  puStack_178 = puVar11 + 0x6f170;
  piVar10 = *(int **)(puVar11 + 0x6910c);
  puStack_d0 = puVar1;
  iVar9 = 0x40;
  iStack_e4 = *piVar10;
  piStack_dc = aiStack_9c;
  iStack_d8 = param_1;
  uStack_d4 = param_2;
  iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);
  iVar7 = 0;
  do {
    puVar6 = auStack_164;
    puVar4 = (uint *)zread(iVar2,auStack_164,0x80);
    if (puVar4 == (uint *)0x0) {
      if (iVar9 <= iVar7 + 1) {
        uVar5 = (iVar7 + 1) - iVar9;
        iVar9 = iVar9 + 0x80;
        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);
        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);
      }
      *(undefined1 *)(iVar3 + iVar7) = 0;
      if (piVar8 == (int *)0x0) {
        (**(code **)(puStack_178 + -0x6044))(iVar3);
      }
      else {
        *piVar8 = iVar3;
      }
LAB_000dd50c:
      if (iStack_e4 == *piVar10) {
        return iVar7;
      }
      pcVar12 = *(code **)(puStack_178 + -0x60b8);
      pcVar13 = get_new_window_size;
      (*pcVar12)();
      piVar8 = *(int **)(pcVar12 + 0x68f4c);
      iVar2 = **(int **)(pcVar12 + 0x67c08);
      iStack_19c = *piVar8;
      iStack_198 = iVar7;
      iStack_194 = param_1;
      iStack_190 = iVar9;
      pcStack_18c = pcVar13;
      if (iVar2 == -1) {
        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));
      }
      if ((((-1 < iVar2) &&
           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&
          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {
        (**(code **)(pcVar12 + 0x68600))();
        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);
        if (puVar6 != (uint *)0x0) {
          *puVar6 = (uint)uStack_1a4;
        }
        if (puVar4 != (uint *)0x0) {
          *puVar4 = (uint)uStack_1a2;
        }
      }
      iVar2 = *piVar8;
      if (iStack_19c != iVar2) {
        pcVar12 = *(code **)(pcVar12 + 0x68ef8);
        (*pcVar12)();
        (**(code **)(pcVar12 + 0x68b90))();
        return 0;
      }
      return iVar2;
    }
    param_1 = iVar7 + (int)puVar4;
    if ((int)puVar4 < 0) {
      (**(code **)(puStack_178 + -0x6044))(iVar3);
      if (piVar8 == (int *)0x0) {
        iVar7 = -1;
      }
      else {
        *piVar8 = 0;
        iVar7 = -1;
      }
      goto LAB_000dd50c;
    }
    pcVar12 = *(code **)(puStack_178 + -0x605c);
    if (iVar9 <= param_1) {
      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;
      puStack_16c = puVar4;
      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);
      pcVar12 = *(code **)(puStack_178 + -0x605c);
      puVar4 = puStack_16c;
    }
    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);
    iVar7 = param_1;
  } while( true );
}


lui gp,0x7
addiu gp,gp,-0xdd0
addu gp,gp,t9
addiu sp,sp,-0xb8
sw s3,0xb0(sp)
lw s3,-0x6064(gp)
sw gp,0x10(sp)
sw s2,0xac(sp)
or s2,a1,zero
sw s1,0xa8(sp)
or s1,a0,zero
sw s0,0xa4(sp)
addiu s0,sp,0x1c
sw ra,0xb4(sp)
lw v0,0x0(s3)
sw v0,0x9c(sp)
b 0x000dd37c
_lw t9,-0x72c8(gp)
bltz v0,0x000dd3bc
_lw t9,-0x69b4(gp)
or a2,v0,zero
or a1,s0,zero
bal 0x000dfe00
_or a0,s2,zero
bltz v0,0x000dd3bc
_lw gp,0x10(sp)
lw t9,-0x72c8(gp)
li a2,0x80
or a1,s0,zero
bal 0x000d65b0
_or a0,s1,zero
bne v0,zero,0x000dd358
_lw gp,0x10(sp)
lw a0,0x9c(sp)
lw v1,0x0(s3)
bne a0,v1,0x000dd3c4
_lw ra,0xb4(sp)
lw s3,0xb0(sp)
lw s2,0xac(sp)
lw s1,0xa8(sp)
lw s0,0xa4(sp)
jr ra
_addiu sp,sp,0xb8
b 0x000dd394
_li v0,-0x1
lw t9,-0x60b8(gp)
jalr t9
_nop
(translation_unit "int zcatfd(int param_1,undefined4 param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint *puVar6;\n  int iVar7;\n  int *piVar8;\n  int iVar9;\n  int *piVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ushort uStack_1a4;\n  ushort uStack_1a2;\n  int iStack_19c;\n  int iStack_198;\n  int iStack_194;\n  int iStack_190;\n  code *pcStack_18c;\n  undefined *puStack_178;\n  uint *puStack_16c;\n  uint auStack_164 [32];\n  int iStack_e4;\n  int *piStack_dc;\n  int iStack_d8;\n  undefined4 uStack_d4;\n  undefined *puStack_d0;\n  int aiStack_9c [32];\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_001464dc;\n  local_1c = *(int *)PTR___stack_chk_guard_001464dc;\n  do {\n    piVar8 = aiStack_9c;\n    iVar2 = zread(param_1,aiStack_9c,0x80);\n    if (iVar2 == 0) goto LAB_000dd394;\n  } while ((-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2));\n  iVar2 = -1;\nLAB_000dd394:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }\n  iVar2 = local_1c;\n  puVar11 = PTR___stack_chk_fail_00146488;\n  (*(code *)PTR___stack_chk_fail_00146488)();\n  puStack_178 = puVar11 + 0x6f170;\n  piVar10 = *(int **)(puVar11 + 0x6910c);\n  puStack_d0 = puVar1;\n  iVar9 = 0x40;\n  iStack_e4 = *piVar10;\n  piStack_dc = aiStack_9c;\n  iStack_d8 = param_1;\n  uStack_d4 = param_2;\n  iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);\n  iVar7 = 0;\n  do {\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    param_1 = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = param_1;\n  } while( true );\n}\n\n" (function_definition "int zcatfd(int param_1,undefined4 param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint *puVar6;\n  int iVar7;\n  int *piVar8;\n  int iVar9;\n  int *piVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ushort uStack_1a4;\n  ushort uStack_1a2;\n  int iStack_19c;\n  int iStack_198;\n  int iStack_194;\n  int iStack_190;\n  code *pcStack_18c;\n  undefined *puStack_178;\n  uint *puStack_16c;\n  uint auStack_164 [32];\n  int iStack_e4;\n  int *piStack_dc;\n  int iStack_d8;\n  undefined4 uStack_d4;\n  undefined *puStack_d0;\n  int aiStack_9c [32];\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_001464dc;\n  local_1c = *(int *)PTR___stack_chk_guard_001464dc;\n  do {\n    piVar8 = aiStack_9c;\n    iVar2 = zread(param_1,aiStack_9c,0x80);\n    if (iVar2 == 0) goto LAB_000dd394;\n  } while ((-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2));\n  iVar2 = -1;\nLAB_000dd394:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }\n  iVar2 = local_1c;\n  puVar11 = PTR___stack_chk_fail_00146488;\n  (*(code *)PTR___stack_chk_fail_00146488)();\n  puStack_178 = puVar11 + 0x6f170;\n  piVar10 = *(int **)(puVar11 + 0x6910c);\n  puStack_d0 = puVar1;\n  iVar9 = 0x40;\n  iStack_e4 = *piVar10;\n  piStack_dc = aiStack_9c;\n  iStack_d8 = param_1;\n  uStack_d4 = param_2;\n  iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);\n  iVar7 = 0;\n  do {\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    param_1 = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = param_1;\n  } while( true );\n}" primitive_type (function_declarator "zcatfd(int param_1,undefined4 param_2)" identifier (parameter_list "(int param_1,undefined4 param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint *puVar6;\n  int iVar7;\n  int *piVar8;\n  int iVar9;\n  int *piVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ushort uStack_1a4;\n  ushort uStack_1a2;\n  int iStack_19c;\n  int iStack_198;\n  int iStack_194;\n  int iStack_190;\n  code *pcStack_18c;\n  undefined *puStack_178;\n  uint *puStack_16c;\n  uint auStack_164 [32];\n  int iStack_e4;\n  int *piStack_dc;\n  int iStack_d8;\n  undefined4 uStack_d4;\n  undefined *puStack_d0;\n  int aiStack_9c [32];\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_001464dc;\n  local_1c = *(int *)PTR___stack_chk_guard_001464dc;\n  do {\n    piVar8 = aiStack_9c;\n    iVar2 = zread(param_1,aiStack_9c,0x80);\n    if (iVar2 == 0) goto LAB_000dd394;\n  } while ((-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2));\n  iVar2 = -1;\nLAB_000dd394:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }\n  iVar2 = local_1c;\n  puVar11 = PTR___stack_chk_fail_00146488;\n  (*(code *)PTR___stack_chk_fail_00146488)();\n  puStack_178 = puVar11 + 0x6f170;\n  piVar10 = *(int **)(puVar11 + 0x6910c);\n  puStack_d0 = puVar1;\n  iVar9 = 0x40;\n  iStack_e4 = *piVar10;\n  piStack_dc = aiStack_9c;\n  iStack_d8 = param_1;\n  uStack_d4 = param_2;\n  iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);\n  iVar7 = 0;\n  do {\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    param_1 = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = param_1;\n  } while( true );\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "ushort uStack_1a4;" type_identifier identifier ;) (declaration "ushort uStack_1a2;" type_identifier identifier ;) (declaration "int iStack_19c;" primitive_type identifier ;) (declaration "int iStack_198;" primitive_type identifier ;) (declaration "int iStack_194;" primitive_type identifier ;) (declaration "int iStack_190;" primitive_type identifier ;) (declaration "code *pcStack_18c;" type_identifier (pointer_declarator "*pcStack_18c" * identifier) ;) (declaration "undefined *puStack_178;" type_identifier (pointer_declarator "*puStack_178" * identifier) ;) (declaration "uint *puStack_16c;" type_identifier (pointer_declarator "*puStack_16c" * identifier) ;) (declaration "uint auStack_164 [32];" type_identifier (array_declarator "auStack_164 [32]" identifier [ number_literal ]) ;) (declaration "int iStack_e4;" primitive_type identifier ;) (declaration "int *piStack_dc;" primitive_type (pointer_declarator "*piStack_dc" * identifier) ;) (declaration "int iStack_d8;" primitive_type identifier ;) (declaration "undefined4 uStack_d4;" type_identifier identifier ;) (declaration "undefined *puStack_d0;" type_identifier (pointer_declarator "*puStack_d0" * identifier) ;) (declaration "int aiStack_9c [32];" primitive_type (array_declarator "aiStack_9c [32]" identifier [ number_literal ]) ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_001464dc;" (assignment_expression "puVar1 = PTR___stack_chk_guard_001464dc" identifier = identifier) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_001464dc;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_001464dc" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_001464dc" * (cast_expression "(int *)PTR___stack_chk_guard_001464dc" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (do_statement "do {\n    piVar8 = aiStack_9c;\n    iVar2 = zread(param_1,aiStack_9c,0x80);\n    if (iVar2 == 0) goto LAB_000dd394;\n  } while ((-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2));" do (compound_statement "{\n    piVar8 = aiStack_9c;\n    iVar2 = zread(param_1,aiStack_9c,0x80);\n    if (iVar2 == 0) goto LAB_000dd394;\n  }" { (expression_statement "piVar8 = aiStack_9c;" (assignment_expression "piVar8 = aiStack_9c" identifier = identifier) ;) (expression_statement "iVar2 = zread(param_1,aiStack_9c,0x80);" (assignment_expression "iVar2 = zread(param_1,aiStack_9c,0x80)" identifier = (call_expression "zread(param_1,aiStack_9c,0x80)" identifier (argument_list "(param_1,aiStack_9c,0x80)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) goto LAB_000dd394;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000dd394;" goto statement_identifier ;)) }) while (parenthesized_expression "((-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2))" ( (binary_expression "(-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2)" (parenthesized_expression "(-1 < iVar2)" ( (binary_expression "-1 < iVar2" number_literal < identifier) )) && (parenthesized_expression "(piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2)" ( (comma_expression "piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2" (assignment_expression "piVar8 = aiStack_9c" identifier = identifier) , (comma_expression "iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2" (assignment_expression "iVar2 = zwrite(param_2,aiStack_9c,iVar2)" identifier = (call_expression "zwrite(param_2,aiStack_9c,iVar2)" identifier (argument_list "(param_2,aiStack_9c,iVar2)" ( identifier , identifier , identifier )))) , (binary_expression "-1 < iVar2" number_literal < identifier))) ))) )) ;) (expression_statement "iVar2 = -1;" (assignment_expression "iVar2 = -1" identifier = number_literal) ;) (labeled_statement "LAB_000dd394:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }" statement_identifier : (if_statement "if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }" if (parenthesized_expression "(local_1c == *(int *)puVar1)" ( (binary_expression "local_1c == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) }))) (expression_statement "iVar2 = local_1c;" (assignment_expression "iVar2 = local_1c" identifier = identifier) ;) (expression_statement "puVar11 = PTR___stack_chk_fail_00146488;" (assignment_expression "puVar11 = PTR___stack_chk_fail_00146488" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00146488)();" (call_expression "(*(code *)PTR___stack_chk_fail_00146488)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00146488)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00146488" * (cast_expression "(code *)PTR___stack_chk_fail_00146488" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_178 = puVar11 + 0x6f170;" (assignment_expression "puStack_178 = puVar11 + 0x6f170" identifier = (binary_expression "puVar11 + 0x6f170" identifier + number_literal)) ;) (expression_statement "piVar10 = *(int **)(puVar11 + 0x6910c);" (assignment_expression "piVar10 = *(int **)(puVar11 + 0x6910c)" identifier = (pointer_expression "*(int **)(puVar11 + 0x6910c)" * (cast_expression "(int **)(puVar11 + 0x6910c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x6910c)" ( (binary_expression "puVar11 + 0x6910c" identifier + number_literal) ))))) ;) (expression_statement "puStack_d0 = puVar1;" (assignment_expression "puStack_d0 = puVar1" identifier = identifier) ;) (expression_statement "iVar9 = 0x40;" (assignment_expression "iVar9 = 0x40" identifier = number_literal) ;) (expression_statement "iStack_e4 = *piVar10;" (assignment_expression "iStack_e4 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "piStack_dc = aiStack_9c;" (assignment_expression "piStack_dc = aiStack_9c" identifier = identifier) ;) (expression_statement "iStack_d8 = param_1;" (assignment_expression "iStack_d8 = param_1" identifier = identifier) ;) (expression_statement "uStack_d4 = param_2;" (assignment_expression "uStack_d4 = param_2" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);" (assignment_expression "iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40)" identifier = (call_expression "(**(code **)(puVar11 + 0x671e0))(0x40)" (parenthesized_expression "(**(code **)(puVar11 + 0x671e0))" ( (pointer_expression "**(code **)(puVar11 + 0x671e0)" * (pointer_expression "*(code **)(puVar11 + 0x671e0)" * (cast_expression "(code **)(puVar11 + 0x671e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x671e0)" ( (binary_expression "puVar11 + 0x671e0" identifier + number_literal) ))))) )) (argument_list "(0x40)" ( number_literal )))) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    param_1 = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = param_1;\n  } while( true );" do (compound_statement "{\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    param_1 = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = param_1;\n  }" { (expression_statement "puVar6 = auStack_164;" (assignment_expression "puVar6 = auStack_164" identifier = identifier) ;) (expression_statement "puVar4 = (uint *)zread(iVar2,auStack_164,0x80);" (assignment_expression "puVar4 = (uint *)zread(iVar2,auStack_164,0x80)" identifier = (cast_expression "(uint *)zread(iVar2,auStack_164,0x80)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "zread(iVar2,auStack_164,0x80)" identifier (argument_list "(iVar2,auStack_164,0x80)" ( identifier , identifier , number_literal ))))) ;) (if_statement "if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }" if (parenthesized_expression "(puVar4 == (uint *)0x0)" ( (binary_expression "puVar4 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }" { (if_statement "if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }" if (parenthesized_expression "(iVar9 <= iVar7 + 1)" ( (binary_expression "iVar9 <= iVar7 + 1" identifier <= (binary_expression "iVar7 + 1" identifier + number_literal)) )) (compound_statement "{\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }" { (expression_statement "uVar5 = (iVar7 + 1) - iVar9;" (assignment_expression "uVar5 = (iVar7 + 1) - iVar9" identifier = (binary_expression "(iVar7 + 1) - iVar9" (parenthesized_expression "(iVar7 + 1)" ( (binary_expression "iVar7 + 1" identifier + number_literal) )) - identifier)) ;) (expression_statement "iVar9 = iVar9 + 0x80;" (assignment_expression "iVar9 = iVar9 + 0x80" identifier = (binary_expression "iVar9 + 0x80" identifier + number_literal)) ;) (expression_statement "puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);" (assignment_expression "puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9)" identifier = (cast_expression "(uint *)((uVar5 & 0xffffff80) + iVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar5 & 0xffffff80) + iVar9)" ( (binary_expression "(uVar5 & 0xffffff80) + iVar9" (parenthesized_expression "(uVar5 & 0xffffff80)" ( (binary_expression "uVar5 & 0xffffff80" identifier & number_literal) )) + identifier) )))) ;) (expression_statement "iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);" (assignment_expression "iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3)" identifier = (call_expression "(**(code **)(puStack_178 + -0x7e04))(iVar3)" (parenthesized_expression "(**(code **)(puStack_178 + -0x7e04))" ( (pointer_expression "**(code **)(puStack_178 + -0x7e04)" * (pointer_expression "*(code **)(puStack_178 + -0x7e04)" * (cast_expression "(code **)(puStack_178 + -0x7e04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x7e04)" ( (binary_expression "puStack_178 + -0x7e04" identifier + number_literal) ))))) )) (argument_list "(iVar3)" ( identifier )))) ;) })) (expression_statement "*(undefined1 *)(iVar3 + iVar7) = 0;" (assignment_expression "*(undefined1 *)(iVar3 + iVar7) = 0" (pointer_expression "*(undefined1 *)(iVar3 + iVar7)" * (cast_expression "(undefined1 *)(iVar3 + iVar7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar7)" ( (binary_expression "iVar3 + iVar7" identifier + identifier) )))) = number_literal) ;) (if_statement "if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }" if (parenthesized_expression "(piVar8 == (int *)0x0)" ( (binary_expression "piVar8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }" { (expression_statement "(**(code **)(puStack_178 + -0x6044))(iVar3);" (call_expression "(**(code **)(puStack_178 + -0x6044))(iVar3)" (parenthesized_expression "(**(code **)(puStack_178 + -0x6044))" ( (pointer_expression "**(code **)(puStack_178 + -0x6044)" * (pointer_expression "*(code **)(puStack_178 + -0x6044)" * (cast_expression "(code **)(puStack_178 + -0x6044)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x6044)" ( (binary_expression "puStack_178 + -0x6044" identifier + number_literal) ))))) )) (argument_list "(iVar3)" ( identifier ))) ;) }) (else_clause "else {\n        *piVar8 = iVar3;\n      }" else (compound_statement "{\n        *piVar8 = iVar3;\n      }" { (expression_statement "*piVar8 = iVar3;" (assignment_expression "*piVar8 = iVar3" (pointer_expression "*piVar8" * identifier) = identifier) ;) }))) (labeled_statement "LAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }" statement_identifier : (if_statement "if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }" if (parenthesized_expression "(iStack_e4 == *piVar10)" ( (binary_expression "iStack_e4 == *piVar10" identifier == (pointer_expression "*piVar10" * identifier)) )) (compound_statement "{\n        return iVar7;\n      }" { (return_statement "return iVar7;" return identifier ;) }))) (expression_statement "pcVar12 = *(code **)(puStack_178 + -0x60b8);" (assignment_expression "pcVar12 = *(code **)(puStack_178 + -0x60b8)" identifier = (pointer_expression "*(code **)(puStack_178 + -0x60b8)" * (cast_expression "(code **)(puStack_178 + -0x60b8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x60b8)" ( (binary_expression "puStack_178 + -0x60b8" identifier + number_literal) ))))) ;) (expression_statement "pcVar13 = get_new_window_size;" (assignment_expression "pcVar13 = get_new_window_size" identifier = identifier) ;) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar8 = *(int **)(pcVar12 + 0x68f4c);" (assignment_expression "piVar8 = *(int **)(pcVar12 + 0x68f4c)" identifier = (pointer_expression "*(int **)(pcVar12 + 0x68f4c)" * (cast_expression "(int **)(pcVar12 + 0x68f4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68f4c)" ( (binary_expression "pcVar12 + 0x68f4c" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = **(int **)(pcVar12 + 0x67c08);" (assignment_expression "iVar2 = **(int **)(pcVar12 + 0x67c08)" identifier = (pointer_expression "**(int **)(pcVar12 + 0x67c08)" * (pointer_expression "*(int **)(pcVar12 + 0x67c08)" * (cast_expression "(int **)(pcVar12 + 0x67c08)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x67c08)" ( (binary_expression "pcVar12 + 0x67c08" identifier + number_literal) )))))) ;) (expression_statement "iStack_19c = *piVar8;" (assignment_expression "iStack_19c = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "iStack_198 = iVar7;" (assignment_expression "iStack_198 = iVar7" identifier = identifier) ;) (expression_statement "iStack_194 = param_1;" (assignment_expression "iStack_194 = param_1" identifier = identifier) ;) (expression_statement "iStack_190 = iVar9;" (assignment_expression "iStack_190 = iVar9" identifier = identifier) ;) (expression_statement "pcStack_18c = pcVar13;" (assignment_expression "pcStack_18c = pcVar13" identifier = identifier) ;) (if_statement "if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }" { (expression_statement "iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));" (assignment_expression "iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88))" identifier = (call_expression "(**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88))" (parenthesized_expression "(**(code **)(pcVar12 + 0x68d98))" ( (pointer_expression "**(code **)(pcVar12 + 0x68d98)" * (pointer_expression "*(code **)(pcVar12 + 0x68d98)" * (cast_expression "(code **)(pcVar12 + 0x68d98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68d98)" ( (binary_expression "pcVar12 + 0x68d98" identifier + number_literal) ))))) )) (argument_list "(**(undefined4 **)(pcVar12 + 0x68f88))" ( (pointer_expression "**(undefined4 **)(pcVar12 + 0x68f88)" * (pointer_expression "*(undefined4 **)(pcVar12 + 0x68f88)" * (cast_expression "(undefined4 **)(pcVar12 + 0x68f88)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68f88)" ( (binary_expression "pcVar12 + 0x68f88" identifier + number_literal) ))))) )))) ;) })) (if_statement "if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }" if (parenthesized_expression "((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0))" ( (binary_expression "(((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)" (parenthesized_expression "(((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0))" ( (binary_expression "((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)" (parenthesized_expression "((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0))" ( (binary_expression "(-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)" (parenthesized_expression "(-1 < iVar2)" ( (binary_expression "-1 < iVar2" number_literal < identifier) )) && (parenthesized_expression "(iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)" ( (comma_expression "iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0" (assignment_expression "iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4)" identifier = (call_expression "(**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4)" (parenthesized_expression "(**(code **)(pcVar12 + 0x68eac))" ( (pointer_expression "**(code **)(pcVar12 + 0x68eac)" * (pointer_expression "*(code **)(pcVar12 + 0x68eac)" * (cast_expression "(code **)(pcVar12 + 0x68eac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68eac)" ( (binary_expression "pcVar12 + 0x68eac" identifier + number_literal) ))))) )) (argument_list "(iVar2,0x40087468,&uStack_1a4)" ( identifier , number_literal , (pointer_expression "&uStack_1a4" & identifier) )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(uStack_1a4 != 0)" ( (binary_expression "uStack_1a4 != 0" identifier != number_literal) ))) )) && (parenthesized_expression "(uStack_1a2 != 0)" ( (binary_expression "uStack_1a2 != 0" identifier != number_literal) ))) )) (compound_statement "{\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }" { (expression_statement "(**(code **)(pcVar12 + 0x68600))();" (call_expression "(**(code **)(pcVar12 + 0x68600))()" (parenthesized_expression "(**(code **)(pcVar12 + 0x68600))" ( (pointer_expression "**(code **)(pcVar12 + 0x68600)" * (pointer_expression "*(code **)(pcVar12 + 0x68600)" * (cast_expression "(code **)(pcVar12 + 0x68600)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68600)" ( (binary_expression "pcVar12 + 0x68600" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);" (call_expression "(**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2)" (parenthesized_expression "(**(code **)(pcVar12 + 0x68604))" ( (pointer_expression "**(code **)(pcVar12 + 0x68604)" * (pointer_expression "*(code **)(pcVar12 + 0x68604)" * (cast_expression "(code **)(pcVar12 + 0x68604)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68604)" ( (binary_expression "pcVar12 + 0x68604" identifier + number_literal) ))))) )) (argument_list "(uStack_1a4,uStack_1a2)" ( identifier , identifier ))) ;) (if_statement "if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }" if (parenthesized_expression "(puVar6 != (uint *)0x0)" ( (binary_expression "puVar6 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *puVar6 = (uint)uStack_1a4;\n        }" { (expression_statement "*puVar6 = (uint)uStack_1a4;" (assignment_expression "*puVar6 = (uint)uStack_1a4" (pointer_expression "*puVar6" * identifier) = (cast_expression "(uint)uStack_1a4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (if_statement "if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }" if (parenthesized_expression "(puVar4 != (uint *)0x0)" ( (binary_expression "puVar4 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *puVar4 = (uint)uStack_1a2;\n        }" { (expression_statement "*puVar4 = (uint)uStack_1a2;" (assignment_expression "*puVar4 = (uint)uStack_1a2" (pointer_expression "*puVar4" * identifier) = (cast_expression "(uint)uStack_1a2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) })) (expression_statement "iVar2 = *piVar8;" (assignment_expression "iVar2 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (if_statement "if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }" if (parenthesized_expression "(iStack_19c != iVar2)" ( (binary_expression "iStack_19c != iVar2" identifier != identifier) )) (compound_statement "{\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }" { (expression_statement "pcVar12 = *(code **)(pcVar12 + 0x68ef8);" (assignment_expression "pcVar12 = *(code **)(pcVar12 + 0x68ef8)" identifier = (pointer_expression "*(code **)(pcVar12 + 0x68ef8)" * (cast_expression "(code **)(pcVar12 + 0x68ef8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68ef8)" ( (binary_expression "pcVar12 + 0x68ef8" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(pcVar12 + 0x68b90))();" (call_expression "(**(code **)(pcVar12 + 0x68b90))()" (parenthesized_expression "(**(code **)(pcVar12 + 0x68b90))" ( (pointer_expression "**(code **)(pcVar12 + 0x68b90)" * (pointer_expression "*(code **)(pcVar12 + 0x68b90)" * (cast_expression "(code **)(pcVar12 + 0x68b90)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68b90)" ( (binary_expression "pcVar12 + 0x68b90" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (return_statement "return 0;" return number_literal ;) })) (return_statement "return iVar2;" return identifier ;) })) (expression_statement "param_1 = iVar7 + (int)puVar4;" (assignment_expression "param_1 = iVar7 + (int)puVar4" identifier = (binary_expression "iVar7 + (int)puVar4" identifier + (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }" if (parenthesized_expression "((int)puVar4 < 0)" ( (binary_expression "(int)puVar4 < 0" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }" { (expression_statement "(**(code **)(puStack_178 + -0x6044))(iVar3);" (call_expression "(**(code **)(puStack_178 + -0x6044))(iVar3)" (parenthesized_expression "(**(code **)(puStack_178 + -0x6044))" ( (pointer_expression "**(code **)(puStack_178 + -0x6044)" * (pointer_expression "*(code **)(puStack_178 + -0x6044)" * (cast_expression "(code **)(puStack_178 + -0x6044)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x6044)" ( (binary_expression "puStack_178 + -0x6044" identifier + number_literal) ))))) )) (argument_list "(iVar3)" ( identifier ))) ;) (if_statement "if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }" if (parenthesized_expression "(piVar8 == (int *)0x0)" ( (binary_expression "piVar8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar7 = -1;\n      }" { (expression_statement "iVar7 = -1;" (assignment_expression "iVar7 = -1" identifier = number_literal) ;) }) (else_clause "else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }" else (compound_statement "{\n        *piVar8 = 0;\n        iVar7 = -1;\n      }" { (expression_statement "*piVar8 = 0;" (assignment_expression "*piVar8 = 0" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (expression_statement "iVar7 = -1;" (assignment_expression "iVar7 = -1" identifier = number_literal) ;) }))) (goto_statement "goto LAB_000dd50c;" goto statement_identifier ;) })) (expression_statement "pcVar12 = *(code **)(puStack_178 + -0x605c);" (assignment_expression "pcVar12 = *(code **)(puStack_178 + -0x605c)" identifier = (pointer_expression "*(code **)(puStack_178 + -0x605c)" * (cast_expression "(code **)(puStack_178 + -0x605c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x605c)" ( (binary_expression "puStack_178 + -0x605c" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }" if (parenthesized_expression "(iVar9 <= param_1)" ( (binary_expression "iVar9 <= param_1" identifier <= identifier) )) (compound_statement "{\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }" { (expression_statement "iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;" (assignment_expression "iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80" identifier = (binary_expression "(param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80" (binary_expression "(param_1 - iVar9 & 0xffffff80U) + iVar9" (parenthesized_expression "(param_1 - iVar9 & 0xffffff80U)" ( (binary_expression "param_1 - iVar9 & 0xffffff80U" (binary_expression "param_1 - iVar9" identifier - identifier) & number_literal) )) + identifier) + number_literal)) ;) (expression_statement "puStack_16c = puVar4;" (assignment_expression "puStack_16c = puVar4" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);" (assignment_expression "iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9)" identifier = (call_expression "(**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9)" (parenthesized_expression "(**(code **)(puStack_178 + -0x7e04))" ( (pointer_expression "**(code **)(puStack_178 + -0x7e04)" * (pointer_expression "*(code **)(puStack_178 + -0x7e04)" * (cast_expression "(code **)(puStack_178 + -0x7e04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x7e04)" ( (binary_expression "puStack_178 + -0x7e04" identifier + number_literal) ))))) )) (argument_list "(iVar3,iVar9)" ( identifier , identifier )))) ;) (expression_statement "pcVar12 = *(code **)(puStack_178 + -0x605c);" (assignment_expression "pcVar12 = *(code **)(puStack_178 + -0x605c)" identifier = (pointer_expression "*(code **)(puStack_178 + -0x605c)" * (cast_expression "(code **)(puStack_178 + -0x605c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x605c)" ( (binary_expression "puStack_178 + -0x605c" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = puStack_16c;" (assignment_expression "puVar4 = puStack_16c" identifier = identifier) ;) })) (expression_statement "(*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);" (call_expression "(*pcVar12)(iVar3 + iVar7,auStack_164,puVar4)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(iVar3 + iVar7,auStack_164,puVar4)" ( (binary_expression "iVar3 + iVar7" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "iVar7 = param_1;" (assignment_expression "iVar7 = param_1" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int zcatfd(int fd,int ofd,char *fn)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  size_t nb;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint *puVar6;\n  int iVar7;\n  int *piVar8;\n  int iVar9;\n  int *piVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ushort uStack_1a4;\n  ushort uStack_1a2;\n  int iStack_19c;\n  int iStack_198;\n  int iStack_194;\n  int iStack_190;\n  code *pcStack_18c;\n  undefined *puStack_178;\n  uint *puStack_16c;\n  uint auStack_164 [32];\n  int iStack_e4;\n  int *piStack_dc;\n  int iStack_d8;\n  int iStack_d4;\n  undefined *puStack_d0;\n  char lbuf [128];\n  \n  puVar1 = PTR___stack_chk_guard_001464dc;\n  iVar2 = *(int *)PTR___stack_chk_guard_001464dc;\n  do {\n    piVar8 = (int *)lbuf;\n    nb = zread(fd,lbuf,0x80);\n    if (nb == 0) goto LAB_000dd394;\n  } while ((-1 < (int)nb) && (piVar8 = (int *)lbuf, iVar7 = zwrite(ofd,lbuf,nb), -1 < iVar7));\n  nb = 0xffffffff;\nLAB_000dd394:\n  if (iVar2 == *(int *)puVar1) {\n    return nb;\n  }\n  puVar11 = PTR___stack_chk_fail_00146488;\n  (*(code *)PTR___stack_chk_fail_00146488)();\n  puStack_178 = puVar11 + 0x6f170;\n  piVar10 = *(int **)(puVar11 + 0x6910c);\n  puStack_d0 = puVar1;\n  iVar9 = 0x40;\n  iStack_e4 = *piVar10;\n  piStack_dc = (int *)lbuf;\n  iStack_d8 = fd;\n  iStack_d4 = ofd;\n  iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);\n  iVar7 = 0;\n  do {\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,(char *)auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = fd;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    fd = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= fd) {\n      iVar9 = (fd - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = fd;\n  } while( true );\n}\n\n" (function_definition "int zcatfd(int fd,int ofd,char *fn)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  size_t nb;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint *puVar6;\n  int iVar7;\n  int *piVar8;\n  int iVar9;\n  int *piVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ushort uStack_1a4;\n  ushort uStack_1a2;\n  int iStack_19c;\n  int iStack_198;\n  int iStack_194;\n  int iStack_190;\n  code *pcStack_18c;\n  undefined *puStack_178;\n  uint *puStack_16c;\n  uint auStack_164 [32];\n  int iStack_e4;\n  int *piStack_dc;\n  int iStack_d8;\n  int iStack_d4;\n  undefined *puStack_d0;\n  char lbuf [128];\n  \n  puVar1 = PTR___stack_chk_guard_001464dc;\n  iVar2 = *(int *)PTR___stack_chk_guard_001464dc;\n  do {\n    piVar8 = (int *)lbuf;\n    nb = zread(fd,lbuf,0x80);\n    if (nb == 0) goto LAB_000dd394;\n  } while ((-1 < (int)nb) && (piVar8 = (int *)lbuf, iVar7 = zwrite(ofd,lbuf,nb), -1 < iVar7));\n  nb = 0xffffffff;\nLAB_000dd394:\n  if (iVar2 == *(int *)puVar1) {\n    return nb;\n  }\n  puVar11 = PTR___stack_chk_fail_00146488;\n  (*(code *)PTR___stack_chk_fail_00146488)();\n  puStack_178 = puVar11 + 0x6f170;\n  piVar10 = *(int **)(puVar11 + 0x6910c);\n  puStack_d0 = puVar1;\n  iVar9 = 0x40;\n  iStack_e4 = *piVar10;\n  piStack_dc = (int *)lbuf;\n  iStack_d8 = fd;\n  iStack_d4 = ofd;\n  iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);\n  iVar7 = 0;\n  do {\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,(char *)auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = fd;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    fd = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= fd) {\n      iVar9 = (fd - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = fd;\n  } while( true );\n}" primitive_type (function_declarator "zcatfd(int fd,int ofd,char *fn)" identifier (parameter_list "(int fd,int ofd,char *fn)" ( (parameter_declaration "int fd" primitive_type identifier) , (parameter_declaration "int ofd" primitive_type identifier) , (parameter_declaration "char *fn" primitive_type (pointer_declarator "*fn" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  size_t nb;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint *puVar6;\n  int iVar7;\n  int *piVar8;\n  int iVar9;\n  int *piVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ushort uStack_1a4;\n  ushort uStack_1a2;\n  int iStack_19c;\n  int iStack_198;\n  int iStack_194;\n  int iStack_190;\n  code *pcStack_18c;\n  undefined *puStack_178;\n  uint *puStack_16c;\n  uint auStack_164 [32];\n  int iStack_e4;\n  int *piStack_dc;\n  int iStack_d8;\n  int iStack_d4;\n  undefined *puStack_d0;\n  char lbuf [128];\n  \n  puVar1 = PTR___stack_chk_guard_001464dc;\n  iVar2 = *(int *)PTR___stack_chk_guard_001464dc;\n  do {\n    piVar8 = (int *)lbuf;\n    nb = zread(fd,lbuf,0x80);\n    if (nb == 0) goto LAB_000dd394;\n  } while ((-1 < (int)nb) && (piVar8 = (int *)lbuf, iVar7 = zwrite(ofd,lbuf,nb), -1 < iVar7));\n  nb = 0xffffffff;\nLAB_000dd394:\n  if (iVar2 == *(int *)puVar1) {\n    return nb;\n  }\n  puVar11 = PTR___stack_chk_fail_00146488;\n  (*(code *)PTR___stack_chk_fail_00146488)();\n  puStack_178 = puVar11 + 0x6f170;\n  piVar10 = *(int **)(puVar11 + 0x6910c);\n  puStack_d0 = puVar1;\n  iVar9 = 0x40;\n  iStack_e4 = *piVar10;\n  piStack_dc = (int *)lbuf;\n  iStack_d8 = fd;\n  iStack_d4 = ofd;\n  iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);\n  iVar7 = 0;\n  do {\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,(char *)auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = fd;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    fd = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= fd) {\n      iVar9 = (fd - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = fd;\n  } while( true );\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "size_t nb;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "ushort uStack_1a4;" type_identifier identifier ;) (declaration "ushort uStack_1a2;" type_identifier identifier ;) (declaration "int iStack_19c;" primitive_type identifier ;) (declaration "int iStack_198;" primitive_type identifier ;) (declaration "int iStack_194;" primitive_type identifier ;) (declaration "int iStack_190;" primitive_type identifier ;) (declaration "code *pcStack_18c;" type_identifier (pointer_declarator "*pcStack_18c" * identifier) ;) (declaration "undefined *puStack_178;" type_identifier (pointer_declarator "*puStack_178" * identifier) ;) (declaration "uint *puStack_16c;" type_identifier (pointer_declarator "*puStack_16c" * identifier) ;) (declaration "uint auStack_164 [32];" type_identifier (array_declarator "auStack_164 [32]" identifier [ number_literal ]) ;) (declaration "int iStack_e4;" primitive_type identifier ;) (declaration "int *piStack_dc;" primitive_type (pointer_declarator "*piStack_dc" * identifier) ;) (declaration "int iStack_d8;" primitive_type identifier ;) (declaration "int iStack_d4;" primitive_type identifier ;) (declaration "undefined *puStack_d0;" type_identifier (pointer_declarator "*puStack_d0" * identifier) ;) (declaration "char lbuf [128];" primitive_type (array_declarator "lbuf [128]" identifier [ number_literal ]) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_001464dc;" (assignment_expression "puVar1 = PTR___stack_chk_guard_001464dc" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)PTR___stack_chk_guard_001464dc;" (assignment_expression "iVar2 = *(int *)PTR___stack_chk_guard_001464dc" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_001464dc" * (cast_expression "(int *)PTR___stack_chk_guard_001464dc" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (do_statement "do {\n    piVar8 = (int *)lbuf;\n    nb = zread(fd,lbuf,0x80);\n    if (nb == 0) goto LAB_000dd394;\n  } while ((-1 < (int)nb) && (piVar8 = (int *)lbuf, iVar7 = zwrite(ofd,lbuf,nb), -1 < iVar7));" do (compound_statement "{\n    piVar8 = (int *)lbuf;\n    nb = zread(fd,lbuf,0x80);\n    if (nb == 0) goto LAB_000dd394;\n  }" { (expression_statement "piVar8 = (int *)lbuf;" (assignment_expression "piVar8 = (int *)lbuf" identifier = (cast_expression "(int *)lbuf" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "nb = zread(fd,lbuf,0x80);" (assignment_expression "nb = zread(fd,lbuf,0x80)" identifier = (call_expression "zread(fd,lbuf,0x80)" identifier (argument_list "(fd,lbuf,0x80)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (nb == 0) goto LAB_000dd394;" if (parenthesized_expression "(nb == 0)" ( (binary_expression "nb == 0" identifier == number_literal) )) (goto_statement "goto LAB_000dd394;" goto statement_identifier ;)) }) while (parenthesized_expression "((-1 < (int)nb) && (piVar8 = (int *)lbuf, iVar7 = zwrite(ofd,lbuf,nb), -1 < iVar7))" ( (binary_expression "(-1 < (int)nb) && (piVar8 = (int *)lbuf, iVar7 = zwrite(ofd,lbuf,nb), -1 < iVar7)" (parenthesized_expression "(-1 < (int)nb)" ( (binary_expression "-1 < (int)nb" number_literal < (cast_expression "(int)nb" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(piVar8 = (int *)lbuf, iVar7 = zwrite(ofd,lbuf,nb), -1 < iVar7)" ( (comma_expression "piVar8 = (int *)lbuf, iVar7 = zwrite(ofd,lbuf,nb), -1 < iVar7" (assignment_expression "piVar8 = (int *)lbuf" identifier = (cast_expression "(int *)lbuf" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) , (comma_expression "iVar7 = zwrite(ofd,lbuf,nb), -1 < iVar7" (assignment_expression "iVar7 = zwrite(ofd,lbuf,nb)" identifier = (call_expression "zwrite(ofd,lbuf,nb)" identifier (argument_list "(ofd,lbuf,nb)" ( identifier , identifier , identifier )))) , (binary_expression "-1 < iVar7" number_literal < identifier))) ))) )) ;) (expression_statement "nb = 0xffffffff;" (assignment_expression "nb = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_000dd394:\n  if (iVar2 == *(int *)puVar1) {\n    return nb;\n  }" statement_identifier : (if_statement "if (iVar2 == *(int *)puVar1) {\n    return nb;\n  }" if (parenthesized_expression "(iVar2 == *(int *)puVar1)" ( (binary_expression "iVar2 == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return nb;\n  }" { (return_statement "return nb;" return identifier ;) }))) (expression_statement "puVar11 = PTR___stack_chk_fail_00146488;" (assignment_expression "puVar11 = PTR___stack_chk_fail_00146488" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00146488)();" (call_expression "(*(code *)PTR___stack_chk_fail_00146488)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00146488)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00146488" * (cast_expression "(code *)PTR___stack_chk_fail_00146488" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_178 = puVar11 + 0x6f170;" (assignment_expression "puStack_178 = puVar11 + 0x6f170" identifier = (binary_expression "puVar11 + 0x6f170" identifier + number_literal)) ;) (expression_statement "piVar10 = *(int **)(puVar11 + 0x6910c);" (assignment_expression "piVar10 = *(int **)(puVar11 + 0x6910c)" identifier = (pointer_expression "*(int **)(puVar11 + 0x6910c)" * (cast_expression "(int **)(puVar11 + 0x6910c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x6910c)" ( (binary_expression "puVar11 + 0x6910c" identifier + number_literal) ))))) ;) (expression_statement "puStack_d0 = puVar1;" (assignment_expression "puStack_d0 = puVar1" identifier = identifier) ;) (expression_statement "iVar9 = 0x40;" (assignment_expression "iVar9 = 0x40" identifier = number_literal) ;) (expression_statement "iStack_e4 = *piVar10;" (assignment_expression "iStack_e4 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "piStack_dc = (int *)lbuf;" (assignment_expression "piStack_dc = (int *)lbuf" identifier = (cast_expression "(int *)lbuf" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iStack_d8 = fd;" (assignment_expression "iStack_d8 = fd" identifier = identifier) ;) (expression_statement "iStack_d4 = ofd;" (assignment_expression "iStack_d4 = ofd" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);" (assignment_expression "iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40)" identifier = (call_expression "(**(code **)(puVar11 + 0x671e0))(0x40)" (parenthesized_expression "(**(code **)(puVar11 + 0x671e0))" ( (pointer_expression "**(code **)(puVar11 + 0x671e0)" * (pointer_expression "*(code **)(puVar11 + 0x671e0)" * (cast_expression "(code **)(puVar11 + 0x671e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x671e0)" ( (binary_expression "puVar11 + 0x671e0" identifier + number_literal) ))))) )) (argument_list "(0x40)" ( number_literal )))) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,(char *)auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = fd;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    fd = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= fd) {\n      iVar9 = (fd - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = fd;\n  } while( true );" do (compound_statement "{\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,(char *)auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = fd;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    fd = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= fd) {\n      iVar9 = (fd - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = fd;\n  }" { (expression_statement "puVar6 = auStack_164;" (assignment_expression "puVar6 = auStack_164" identifier = identifier) ;) (expression_statement "puVar4 = (uint *)zread(iVar2,(char *)auStack_164,0x80);" (assignment_expression "puVar4 = (uint *)zread(iVar2,(char *)auStack_164,0x80)" identifier = (cast_expression "(uint *)zread(iVar2,(char *)auStack_164,0x80)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "zread(iVar2,(char *)auStack_164,0x80)" identifier (argument_list "(iVar2,(char *)auStack_164,0x80)" ( identifier , (cast_expression "(char *)auStack_164" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))))) ;) (if_statement "if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = fd;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }" if (parenthesized_expression "(puVar4 == (uint *)0x0)" ( (binary_expression "puVar4 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = fd;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }" { (if_statement "if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }" if (parenthesized_expression "(iVar9 <= iVar7 + 1)" ( (binary_expression "iVar9 <= iVar7 + 1" identifier <= (binary_expression "iVar7 + 1" identifier + number_literal)) )) (compound_statement "{\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }" { (expression_statement "uVar5 = (iVar7 + 1) - iVar9;" (assignment_expression "uVar5 = (iVar7 + 1) - iVar9" identifier = (binary_expression "(iVar7 + 1) - iVar9" (parenthesized_expression "(iVar7 + 1)" ( (binary_expression "iVar7 + 1" identifier + number_literal) )) - identifier)) ;) (expression_statement "iVar9 = iVar9 + 0x80;" (assignment_expression "iVar9 = iVar9 + 0x80" identifier = (binary_expression "iVar9 + 0x80" identifier + number_literal)) ;) (expression_statement "puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);" (assignment_expression "puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9)" identifier = (cast_expression "(uint *)((uVar5 & 0xffffff80) + iVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar5 & 0xffffff80) + iVar9)" ( (binary_expression "(uVar5 & 0xffffff80) + iVar9" (parenthesized_expression "(uVar5 & 0xffffff80)" ( (binary_expression "uVar5 & 0xffffff80" identifier & number_literal) )) + identifier) )))) ;) (expression_statement "iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);" (assignment_expression "iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3)" identifier = (call_expression "(**(code **)(puStack_178 + -0x7e04))(iVar3)" (parenthesized_expression "(**(code **)(puStack_178 + -0x7e04))" ( (pointer_expression "**(code **)(puStack_178 + -0x7e04)" * (pointer_expression "*(code **)(puStack_178 + -0x7e04)" * (cast_expression "(code **)(puStack_178 + -0x7e04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x7e04)" ( (binary_expression "puStack_178 + -0x7e04" identifier + number_literal) ))))) )) (argument_list "(iVar3)" ( identifier )))) ;) })) (expression_statement "*(undefined1 *)(iVar3 + iVar7) = 0;" (assignment_expression "*(undefined1 *)(iVar3 + iVar7) = 0" (pointer_expression "*(undefined1 *)(iVar3 + iVar7)" * (cast_expression "(undefined1 *)(iVar3 + iVar7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar7)" ( (binary_expression "iVar3 + iVar7" identifier + identifier) )))) = number_literal) ;) (if_statement "if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }" if (parenthesized_expression "(piVar8 == (int *)0x0)" ( (binary_expression "piVar8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }" { (expression_statement "(**(code **)(puStack_178 + -0x6044))(iVar3);" (call_expression "(**(code **)(puStack_178 + -0x6044))(iVar3)" (parenthesized_expression "(**(code **)(puStack_178 + -0x6044))" ( (pointer_expression "**(code **)(puStack_178 + -0x6044)" * (pointer_expression "*(code **)(puStack_178 + -0x6044)" * (cast_expression "(code **)(puStack_178 + -0x6044)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x6044)" ( (binary_expression "puStack_178 + -0x6044" identifier + number_literal) ))))) )) (argument_list "(iVar3)" ( identifier ))) ;) }) (else_clause "else {\n        *piVar8 = iVar3;\n      }" else (compound_statement "{\n        *piVar8 = iVar3;\n      }" { (expression_statement "*piVar8 = iVar3;" (assignment_expression "*piVar8 = iVar3" (pointer_expression "*piVar8" * identifier) = identifier) ;) }))) (labeled_statement "LAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }" statement_identifier : (if_statement "if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }" if (parenthesized_expression "(iStack_e4 == *piVar10)" ( (binary_expression "iStack_e4 == *piVar10" identifier == (pointer_expression "*piVar10" * identifier)) )) (compound_statement "{\n        return iVar7;\n      }" { (return_statement "return iVar7;" return identifier ;) }))) (expression_statement "pcVar12 = *(code **)(puStack_178 + -0x60b8);" (assignment_expression "pcVar12 = *(code **)(puStack_178 + -0x60b8)" identifier = (pointer_expression "*(code **)(puStack_178 + -0x60b8)" * (cast_expression "(code **)(puStack_178 + -0x60b8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x60b8)" ( (binary_expression "puStack_178 + -0x60b8" identifier + number_literal) ))))) ;) (expression_statement "pcVar13 = get_new_window_size;" (assignment_expression "pcVar13 = get_new_window_size" identifier = identifier) ;) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar8 = *(int **)(pcVar12 + 0x68f4c);" (assignment_expression "piVar8 = *(int **)(pcVar12 + 0x68f4c)" identifier = (pointer_expression "*(int **)(pcVar12 + 0x68f4c)" * (cast_expression "(int **)(pcVar12 + 0x68f4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68f4c)" ( (binary_expression "pcVar12 + 0x68f4c" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = **(int **)(pcVar12 + 0x67c08);" (assignment_expression "iVar2 = **(int **)(pcVar12 + 0x67c08)" identifier = (pointer_expression "**(int **)(pcVar12 + 0x67c08)" * (pointer_expression "*(int **)(pcVar12 + 0x67c08)" * (cast_expression "(int **)(pcVar12 + 0x67c08)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x67c08)" ( (binary_expression "pcVar12 + 0x67c08" identifier + number_literal) )))))) ;) (expression_statement "iStack_19c = *piVar8;" (assignment_expression "iStack_19c = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "iStack_198 = iVar7;" (assignment_expression "iStack_198 = iVar7" identifier = identifier) ;) (expression_statement "iStack_194 = fd;" (assignment_expression "iStack_194 = fd" identifier = identifier) ;) (expression_statement "iStack_190 = iVar9;" (assignment_expression "iStack_190 = iVar9" identifier = identifier) ;) (expression_statement "pcStack_18c = pcVar13;" (assignment_expression "pcStack_18c = pcVar13" identifier = identifier) ;) (if_statement "if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }" { (expression_statement "iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));" (assignment_expression "iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88))" identifier = (call_expression "(**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88))" (parenthesized_expression "(**(code **)(pcVar12 + 0x68d98))" ( (pointer_expression "**(code **)(pcVar12 + 0x68d98)" * (pointer_expression "*(code **)(pcVar12 + 0x68d98)" * (cast_expression "(code **)(pcVar12 + 0x68d98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68d98)" ( (binary_expression "pcVar12 + 0x68d98" identifier + number_literal) ))))) )) (argument_list "(**(undefined4 **)(pcVar12 + 0x68f88))" ( (pointer_expression "**(undefined4 **)(pcVar12 + 0x68f88)" * (pointer_expression "*(undefined4 **)(pcVar12 + 0x68f88)" * (cast_expression "(undefined4 **)(pcVar12 + 0x68f88)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68f88)" ( (binary_expression "pcVar12 + 0x68f88" identifier + number_literal) ))))) )))) ;) })) (if_statement "if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }" if (parenthesized_expression "((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0))" ( (binary_expression "(((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)" (parenthesized_expression "(((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0))" ( (binary_expression "((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)" (parenthesized_expression "((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0))" ( (binary_expression "(-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)" (parenthesized_expression "(-1 < iVar2)" ( (binary_expression "-1 < iVar2" number_literal < identifier) )) && (parenthesized_expression "(iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)" ( (comma_expression "iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0" (assignment_expression "iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4)" identifier = (call_expression "(**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4)" (parenthesized_expression "(**(code **)(pcVar12 + 0x68eac))" ( (pointer_expression "**(code **)(pcVar12 + 0x68eac)" * (pointer_expression "*(code **)(pcVar12 + 0x68eac)" * (cast_expression "(code **)(pcVar12 + 0x68eac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68eac)" ( (binary_expression "pcVar12 + 0x68eac" identifier + number_literal) ))))) )) (argument_list "(iVar2,0x40087468,&uStack_1a4)" ( identifier , number_literal , (pointer_expression "&uStack_1a4" & identifier) )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(uStack_1a4 != 0)" ( (binary_expression "uStack_1a4 != 0" identifier != number_literal) ))) )) && (parenthesized_expression "(uStack_1a2 != 0)" ( (binary_expression "uStack_1a2 != 0" identifier != number_literal) ))) )) (compound_statement "{\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }" { (expression_statement "(**(code **)(pcVar12 + 0x68600))();" (call_expression "(**(code **)(pcVar12 + 0x68600))()" (parenthesized_expression "(**(code **)(pcVar12 + 0x68600))" ( (pointer_expression "**(code **)(pcVar12 + 0x68600)" * (pointer_expression "*(code **)(pcVar12 + 0x68600)" * (cast_expression "(code **)(pcVar12 + 0x68600)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68600)" ( (binary_expression "pcVar12 + 0x68600" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);" (call_expression "(**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2)" (parenthesized_expression "(**(code **)(pcVar12 + 0x68604))" ( (pointer_expression "**(code **)(pcVar12 + 0x68604)" * (pointer_expression "*(code **)(pcVar12 + 0x68604)" * (cast_expression "(code **)(pcVar12 + 0x68604)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68604)" ( (binary_expression "pcVar12 + 0x68604" identifier + number_literal) ))))) )) (argument_list "(uStack_1a4,uStack_1a2)" ( identifier , identifier ))) ;) (if_statement "if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }" if (parenthesized_expression "(puVar6 != (uint *)0x0)" ( (binary_expression "puVar6 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *puVar6 = (uint)uStack_1a4;\n        }" { (expression_statement "*puVar6 = (uint)uStack_1a4;" (assignment_expression "*puVar6 = (uint)uStack_1a4" (pointer_expression "*puVar6" * identifier) = (cast_expression "(uint)uStack_1a4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (if_statement "if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }" if (parenthesized_expression "(puVar4 != (uint *)0x0)" ( (binary_expression "puVar4 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *puVar4 = (uint)uStack_1a2;\n        }" { (expression_statement "*puVar4 = (uint)uStack_1a2;" (assignment_expression "*puVar4 = (uint)uStack_1a2" (pointer_expression "*puVar4" * identifier) = (cast_expression "(uint)uStack_1a2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) })) (expression_statement "iVar2 = *piVar8;" (assignment_expression "iVar2 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (if_statement "if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }" if (parenthesized_expression "(iStack_19c != iVar2)" ( (binary_expression "iStack_19c != iVar2" identifier != identifier) )) (compound_statement "{\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }" { (expression_statement "pcVar12 = *(code **)(pcVar12 + 0x68ef8);" (assignment_expression "pcVar12 = *(code **)(pcVar12 + 0x68ef8)" identifier = (pointer_expression "*(code **)(pcVar12 + 0x68ef8)" * (cast_expression "(code **)(pcVar12 + 0x68ef8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68ef8)" ( (binary_expression "pcVar12 + 0x68ef8" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(pcVar12 + 0x68b90))();" (call_expression "(**(code **)(pcVar12 + 0x68b90))()" (parenthesized_expression "(**(code **)(pcVar12 + 0x68b90))" ( (pointer_expression "**(code **)(pcVar12 + 0x68b90)" * (pointer_expression "*(code **)(pcVar12 + 0x68b90)" * (cast_expression "(code **)(pcVar12 + 0x68b90)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68b90)" ( (binary_expression "pcVar12 + 0x68b90" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (return_statement "return 0;" return number_literal ;) })) (return_statement "return iVar2;" return identifier ;) })) (expression_statement "fd = iVar7 + (int)puVar4;" (assignment_expression "fd = iVar7 + (int)puVar4" identifier = (binary_expression "iVar7 + (int)puVar4" identifier + (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }" if (parenthesized_expression "((int)puVar4 < 0)" ( (binary_expression "(int)puVar4 < 0" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }" { (expression_statement "(**(code **)(puStack_178 + -0x6044))(iVar3);" (call_expression "(**(code **)(puStack_178 + -0x6044))(iVar3)" (parenthesized_expression "(**(code **)(puStack_178 + -0x6044))" ( (pointer_expression "**(code **)(puStack_178 + -0x6044)" * (pointer_expression "*(code **)(puStack_178 + -0x6044)" * (cast_expression "(code **)(puStack_178 + -0x6044)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x6044)" ( (binary_expression "puStack_178 + -0x6044" identifier + number_literal) ))))) )) (argument_list "(iVar3)" ( identifier ))) ;) (if_statement "if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }" if (parenthesized_expression "(piVar8 == (int *)0x0)" ( (binary_expression "piVar8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar7 = -1;\n      }" { (expression_statement "iVar7 = -1;" (assignment_expression "iVar7 = -1" identifier = number_literal) ;) }) (else_clause "else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }" else (compound_statement "{\n        *piVar8 = 0;\n        iVar7 = -1;\n      }" { (expression_statement "*piVar8 = 0;" (assignment_expression "*piVar8 = 0" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (expression_statement "iVar7 = -1;" (assignment_expression "iVar7 = -1" identifier = number_literal) ;) }))) (goto_statement "goto LAB_000dd50c;" goto statement_identifier ;) })) (expression_statement "pcVar12 = *(code **)(puStack_178 + -0x605c);" (assignment_expression "pcVar12 = *(code **)(puStack_178 + -0x605c)" identifier = (pointer_expression "*(code **)(puStack_178 + -0x605c)" * (cast_expression "(code **)(puStack_178 + -0x605c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x605c)" ( (binary_expression "puStack_178 + -0x605c" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 <= fd) {\n      iVar9 = (fd - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }" if (parenthesized_expression "(iVar9 <= fd)" ( (binary_expression "iVar9 <= fd" identifier <= identifier) )) (compound_statement "{\n      iVar9 = (fd - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }" { (expression_statement "iVar9 = (fd - iVar9 & 0xffffff80U) + iVar9 + 0x80;" (assignment_expression "iVar9 = (fd - iVar9 & 0xffffff80U) + iVar9 + 0x80" identifier = (binary_expression "(fd - iVar9 & 0xffffff80U) + iVar9 + 0x80" (binary_expression "(fd - iVar9 & 0xffffff80U) + iVar9" (parenthesized_expression "(fd - iVar9 & 0xffffff80U)" ( (binary_expression "fd - iVar9 & 0xffffff80U" (binary_expression "fd - iVar9" identifier - identifier) & number_literal) )) + identifier) + number_literal)) ;) (expression_statement "puStack_16c = puVar4;" (assignment_expression "puStack_16c = puVar4" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);" (assignment_expression "iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9)" identifier = (call_expression "(**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9)" (parenthesized_expression "(**(code **)(puStack_178 + -0x7e04))" ( (pointer_expression "**(code **)(puStack_178 + -0x7e04)" * (pointer_expression "*(code **)(puStack_178 + -0x7e04)" * (cast_expression "(code **)(puStack_178 + -0x7e04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x7e04)" ( (binary_expression "puStack_178 + -0x7e04" identifier + number_literal) ))))) )) (argument_list "(iVar3,iVar9)" ( identifier , identifier )))) ;) (expression_statement "pcVar12 = *(code **)(puStack_178 + -0x605c);" (assignment_expression "pcVar12 = *(code **)(puStack_178 + -0x605c)" identifier = (pointer_expression "*(code **)(puStack_178 + -0x605c)" * (cast_expression "(code **)(puStack_178 + -0x605c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x605c)" ( (binary_expression "puStack_178 + -0x605c" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = puStack_16c;" (assignment_expression "puVar4 = puStack_16c" identifier = identifier) ;) })) (expression_statement "(*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);" (call_expression "(*pcVar12)(iVar3 + iVar7,auStack_164,puVar4)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(iVar3 + iVar7,auStack_164,puVar4)" ( (binary_expression "iVar3 + iVar7" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "iVar7 = fd;" (assignment_expression "iVar7 = fd" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int zcatfd(int param_1,undefined4 param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint *puVar6;\n  int iVar7;\n  int *piVar8;\n  int iVar9;\n  int *piVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ushort uStack_1a4;\n  ushort uStack_1a2;\n  int iStack_19c;\n  int iStack_198;\n  int iStack_194;\n  int iStack_190;\n  code *pcStack_18c;\n  undefined *puStack_178;\n  uint *puStack_16c;\n  uint auStack_164 [32];\n  int iStack_e4;\n  int *piStack_dc;\n  int iStack_d8;\n  undefined4 uStack_d4;\n  undefined *puStack_d0;\n  int aiStack_9c [32];\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_001464dc;\n  local_1c = *(int *)PTR___stack_chk_guard_001464dc;\n  do {\n    piVar8 = aiStack_9c;\n    iVar2 = zread(param_1,aiStack_9c,0x80);\n    if (iVar2 == 0) goto LAB_000dd394;\n  } while ((-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2));\n  iVar2 = -1;\nLAB_000dd394:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }\n  iVar2 = local_1c;\n  puVar11 = PTR___stack_chk_fail_00146488;\n  (*(code *)PTR___stack_chk_fail_00146488)();\n  puStack_178 = puVar11 + 0x6f170;\n  piVar10 = *(int **)(puVar11 + 0x6910c);\n  puStack_d0 = puVar1;\n  iVar9 = 0x40;\n  iStack_e4 = *piVar10;\n  piStack_dc = aiStack_9c;\n  iStack_d8 = param_1;\n  uStack_d4 = param_2;\n  iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);\n  iVar7 = 0;\n  do {\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    param_1 = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = param_1;\n  } while( true );\n}\n\n" (function_definition "int zcatfd(int param_1,undefined4 param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint *puVar6;\n  int iVar7;\n  int *piVar8;\n  int iVar9;\n  int *piVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ushort uStack_1a4;\n  ushort uStack_1a2;\n  int iStack_19c;\n  int iStack_198;\n  int iStack_194;\n  int iStack_190;\n  code *pcStack_18c;\n  undefined *puStack_178;\n  uint *puStack_16c;\n  uint auStack_164 [32];\n  int iStack_e4;\n  int *piStack_dc;\n  int iStack_d8;\n  undefined4 uStack_d4;\n  undefined *puStack_d0;\n  int aiStack_9c [32];\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_001464dc;\n  local_1c = *(int *)PTR___stack_chk_guard_001464dc;\n  do {\n    piVar8 = aiStack_9c;\n    iVar2 = zread(param_1,aiStack_9c,0x80);\n    if (iVar2 == 0) goto LAB_000dd394;\n  } while ((-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2));\n  iVar2 = -1;\nLAB_000dd394:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }\n  iVar2 = local_1c;\n  puVar11 = PTR___stack_chk_fail_00146488;\n  (*(code *)PTR___stack_chk_fail_00146488)();\n  puStack_178 = puVar11 + 0x6f170;\n  piVar10 = *(int **)(puVar11 + 0x6910c);\n  puStack_d0 = puVar1;\n  iVar9 = 0x40;\n  iStack_e4 = *piVar10;\n  piStack_dc = aiStack_9c;\n  iStack_d8 = param_1;\n  uStack_d4 = param_2;\n  iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);\n  iVar7 = 0;\n  do {\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    param_1 = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = param_1;\n  } while( true );\n}" primitive_type (function_declarator "zcatfd(int param_1,undefined4 param_2)" identifier (parameter_list "(int param_1,undefined4 param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint *puVar6;\n  int iVar7;\n  int *piVar8;\n  int iVar9;\n  int *piVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ushort uStack_1a4;\n  ushort uStack_1a2;\n  int iStack_19c;\n  int iStack_198;\n  int iStack_194;\n  int iStack_190;\n  code *pcStack_18c;\n  undefined *puStack_178;\n  uint *puStack_16c;\n  uint auStack_164 [32];\n  int iStack_e4;\n  int *piStack_dc;\n  int iStack_d8;\n  undefined4 uStack_d4;\n  undefined *puStack_d0;\n  int aiStack_9c [32];\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_001464dc;\n  local_1c = *(int *)PTR___stack_chk_guard_001464dc;\n  do {\n    piVar8 = aiStack_9c;\n    iVar2 = zread(param_1,aiStack_9c,0x80);\n    if (iVar2 == 0) goto LAB_000dd394;\n  } while ((-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2));\n  iVar2 = -1;\nLAB_000dd394:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }\n  iVar2 = local_1c;\n  puVar11 = PTR___stack_chk_fail_00146488;\n  (*(code *)PTR___stack_chk_fail_00146488)();\n  puStack_178 = puVar11 + 0x6f170;\n  piVar10 = *(int **)(puVar11 + 0x6910c);\n  puStack_d0 = puVar1;\n  iVar9 = 0x40;\n  iStack_e4 = *piVar10;\n  piStack_dc = aiStack_9c;\n  iStack_d8 = param_1;\n  uStack_d4 = param_2;\n  iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);\n  iVar7 = 0;\n  do {\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    param_1 = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = param_1;\n  } while( true );\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "ushort uStack_1a4;" type_identifier identifier ;) (declaration "ushort uStack_1a2;" type_identifier identifier ;) (declaration "int iStack_19c;" primitive_type identifier ;) (declaration "int iStack_198;" primitive_type identifier ;) (declaration "int iStack_194;" primitive_type identifier ;) (declaration "int iStack_190;" primitive_type identifier ;) (declaration "code *pcStack_18c;" type_identifier (pointer_declarator "*pcStack_18c" * identifier) ;) (declaration "undefined *puStack_178;" type_identifier (pointer_declarator "*puStack_178" * identifier) ;) (declaration "uint *puStack_16c;" type_identifier (pointer_declarator "*puStack_16c" * identifier) ;) (declaration "uint auStack_164 [32];" type_identifier (array_declarator "auStack_164 [32]" identifier [ number_literal ]) ;) (declaration "int iStack_e4;" primitive_type identifier ;) (declaration "int *piStack_dc;" primitive_type (pointer_declarator "*piStack_dc" * identifier) ;) (declaration "int iStack_d8;" primitive_type identifier ;) (declaration "undefined4 uStack_d4;" type_identifier identifier ;) (declaration "undefined *puStack_d0;" type_identifier (pointer_declarator "*puStack_d0" * identifier) ;) (declaration "int aiStack_9c [32];" primitive_type (array_declarator "aiStack_9c [32]" identifier [ number_literal ]) ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_001464dc;" (assignment_expression "puVar1 = PTR___stack_chk_guard_001464dc" identifier = identifier) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_001464dc;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_001464dc" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_001464dc" * (cast_expression "(int *)PTR___stack_chk_guard_001464dc" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (do_statement "do {\n    piVar8 = aiStack_9c;\n    iVar2 = zread(param_1,aiStack_9c,0x80);\n    if (iVar2 == 0) goto LAB_000dd394;\n  } while ((-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2));" do (compound_statement "{\n    piVar8 = aiStack_9c;\n    iVar2 = zread(param_1,aiStack_9c,0x80);\n    if (iVar2 == 0) goto LAB_000dd394;\n  }" { (expression_statement "piVar8 = aiStack_9c;" (assignment_expression "piVar8 = aiStack_9c" identifier = identifier) ;) (expression_statement "iVar2 = zread(param_1,aiStack_9c,0x80);" (assignment_expression "iVar2 = zread(param_1,aiStack_9c,0x80)" identifier = (call_expression "zread(param_1,aiStack_9c,0x80)" identifier (argument_list "(param_1,aiStack_9c,0x80)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) goto LAB_000dd394;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000dd394;" goto statement_identifier ;)) }) while (parenthesized_expression "((-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2))" ( (binary_expression "(-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2)" (parenthesized_expression "(-1 < iVar2)" ( (binary_expression "-1 < iVar2" number_literal < identifier) )) && (parenthesized_expression "(piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2)" ( (comma_expression "piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2" (assignment_expression "piVar8 = aiStack_9c" identifier = identifier) , (comma_expression "iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2" (assignment_expression "iVar2 = zwrite(param_2,aiStack_9c,iVar2)" identifier = (call_expression "zwrite(param_2,aiStack_9c,iVar2)" identifier (argument_list "(param_2,aiStack_9c,iVar2)" ( identifier , identifier , identifier )))) , (binary_expression "-1 < iVar2" number_literal < identifier))) ))) )) ;) (expression_statement "iVar2 = -1;" (assignment_expression "iVar2 = -1" identifier = number_literal) ;) (labeled_statement "LAB_000dd394:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }" statement_identifier : (if_statement "if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }" if (parenthesized_expression "(local_1c == *(int *)puVar1)" ( (binary_expression "local_1c == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) }))) (expression_statement "iVar2 = local_1c;" (assignment_expression "iVar2 = local_1c" identifier = identifier) ;) (expression_statement "puVar11 = PTR___stack_chk_fail_00146488;" (assignment_expression "puVar11 = PTR___stack_chk_fail_00146488" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00146488)();" (call_expression "(*(code *)PTR___stack_chk_fail_00146488)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00146488)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00146488" * (cast_expression "(code *)PTR___stack_chk_fail_00146488" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_178 = puVar11 + 0x6f170;" (assignment_expression "puStack_178 = puVar11 + 0x6f170" identifier = (binary_expression "puVar11 + 0x6f170" identifier + number_literal)) ;) (expression_statement "piVar10 = *(int **)(puVar11 + 0x6910c);" (assignment_expression "piVar10 = *(int **)(puVar11 + 0x6910c)" identifier = (pointer_expression "*(int **)(puVar11 + 0x6910c)" * (cast_expression "(int **)(puVar11 + 0x6910c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x6910c)" ( (binary_expression "puVar11 + 0x6910c" identifier + number_literal) ))))) ;) (expression_statement "puStack_d0 = puVar1;" (assignment_expression "puStack_d0 = puVar1" identifier = identifier) ;) (expression_statement "iVar9 = 0x40;" (assignment_expression "iVar9 = 0x40" identifier = number_literal) ;) (expression_statement "iStack_e4 = *piVar10;" (assignment_expression "iStack_e4 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "piStack_dc = aiStack_9c;" (assignment_expression "piStack_dc = aiStack_9c" identifier = identifier) ;) (expression_statement "iStack_d8 = param_1;" (assignment_expression "iStack_d8 = param_1" identifier = identifier) ;) (expression_statement "uStack_d4 = param_2;" (assignment_expression "uStack_d4 = param_2" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);" (assignment_expression "iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40)" identifier = (call_expression "(**(code **)(puVar11 + 0x671e0))(0x40)" (parenthesized_expression "(**(code **)(puVar11 + 0x671e0))" ( (pointer_expression "**(code **)(puVar11 + 0x671e0)" * (pointer_expression "*(code **)(puVar11 + 0x671e0)" * (cast_expression "(code **)(puVar11 + 0x671e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x671e0)" ( (binary_expression "puVar11 + 0x671e0" identifier + number_literal) ))))) )) (argument_list "(0x40)" ( number_literal )))) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    param_1 = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = param_1;\n  } while( true );" do (compound_statement "{\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    param_1 = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = param_1;\n  }" { (expression_statement "puVar6 = auStack_164;" (assignment_expression "puVar6 = auStack_164" identifier = identifier) ;) (expression_statement "puVar4 = (uint *)zread(iVar2,auStack_164,0x80);" (assignment_expression "puVar4 = (uint *)zread(iVar2,auStack_164,0x80)" identifier = (cast_expression "(uint *)zread(iVar2,auStack_164,0x80)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "zread(iVar2,auStack_164,0x80)" identifier (argument_list "(iVar2,auStack_164,0x80)" ( identifier , identifier , number_literal ))))) ;) (if_statement "if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }" if (parenthesized_expression "(puVar4 == (uint *)0x0)" ( (binary_expression "puVar4 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }" { (if_statement "if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }" if (parenthesized_expression "(iVar9 <= iVar7 + 1)" ( (binary_expression "iVar9 <= iVar7 + 1" identifier <= (binary_expression "iVar7 + 1" identifier + number_literal)) )) (compound_statement "{\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }" { (expression_statement "uVar5 = (iVar7 + 1) - iVar9;" (assignment_expression "uVar5 = (iVar7 + 1) - iVar9" identifier = (binary_expression "(iVar7 + 1) - iVar9" (parenthesized_expression "(iVar7 + 1)" ( (binary_expression "iVar7 + 1" identifier + number_literal) )) - identifier)) ;) (expression_statement "iVar9 = iVar9 + 0x80;" (assignment_expression "iVar9 = iVar9 + 0x80" identifier = (binary_expression "iVar9 + 0x80" identifier + number_literal)) ;) (expression_statement "puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);" (assignment_expression "puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9)" identifier = (cast_expression "(uint *)((uVar5 & 0xffffff80) + iVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar5 & 0xffffff80) + iVar9)" ( (binary_expression "(uVar5 & 0xffffff80) + iVar9" (parenthesized_expression "(uVar5 & 0xffffff80)" ( (binary_expression "uVar5 & 0xffffff80" identifier & number_literal) )) + identifier) )))) ;) (expression_statement "iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);" (assignment_expression "iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3)" identifier = (call_expression "(**(code **)(puStack_178 + -0x7e04))(iVar3)" (parenthesized_expression "(**(code **)(puStack_178 + -0x7e04))" ( (pointer_expression "**(code **)(puStack_178 + -0x7e04)" * (pointer_expression "*(code **)(puStack_178 + -0x7e04)" * (cast_expression "(code **)(puStack_178 + -0x7e04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x7e04)" ( (binary_expression "puStack_178 + -0x7e04" identifier + number_literal) ))))) )) (argument_list "(iVar3)" ( identifier )))) ;) })) (expression_statement "*(undefined1 *)(iVar3 + iVar7) = 0;" (assignment_expression "*(undefined1 *)(iVar3 + iVar7) = 0" (pointer_expression "*(undefined1 *)(iVar3 + iVar7)" * (cast_expression "(undefined1 *)(iVar3 + iVar7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar7)" ( (binary_expression "iVar3 + iVar7" identifier + identifier) )))) = number_literal) ;) (if_statement "if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }" if (parenthesized_expression "(piVar8 == (int *)0x0)" ( (binary_expression "piVar8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }" { (expression_statement "(**(code **)(puStack_178 + -0x6044))(iVar3);" (call_expression "(**(code **)(puStack_178 + -0x6044))(iVar3)" (parenthesized_expression "(**(code **)(puStack_178 + -0x6044))" ( (pointer_expression "**(code **)(puStack_178 + -0x6044)" * (pointer_expression "*(code **)(puStack_178 + -0x6044)" * (cast_expression "(code **)(puStack_178 + -0x6044)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x6044)" ( (binary_expression "puStack_178 + -0x6044" identifier + number_literal) ))))) )) (argument_list "(iVar3)" ( identifier ))) ;) }) (else_clause "else {\n        *piVar8 = iVar3;\n      }" else (compound_statement "{\n        *piVar8 = iVar3;\n      }" { (expression_statement "*piVar8 = iVar3;" (assignment_expression "*piVar8 = iVar3" (pointer_expression "*piVar8" * identifier) = identifier) ;) }))) (labeled_statement "LAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }" statement_identifier : (if_statement "if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }" if (parenthesized_expression "(iStack_e4 == *piVar10)" ( (binary_expression "iStack_e4 == *piVar10" identifier == (pointer_expression "*piVar10" * identifier)) )) (compound_statement "{\n        return iVar7;\n      }" { (return_statement "return iVar7;" return identifier ;) }))) (expression_statement "pcVar12 = *(code **)(puStack_178 + -0x60b8);" (assignment_expression "pcVar12 = *(code **)(puStack_178 + -0x60b8)" identifier = (pointer_expression "*(code **)(puStack_178 + -0x60b8)" * (cast_expression "(code **)(puStack_178 + -0x60b8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x60b8)" ( (binary_expression "puStack_178 + -0x60b8" identifier + number_literal) ))))) ;) (expression_statement "pcVar13 = get_new_window_size;" (assignment_expression "pcVar13 = get_new_window_size" identifier = identifier) ;) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar8 = *(int **)(pcVar12 + 0x68f4c);" (assignment_expression "piVar8 = *(int **)(pcVar12 + 0x68f4c)" identifier = (pointer_expression "*(int **)(pcVar12 + 0x68f4c)" * (cast_expression "(int **)(pcVar12 + 0x68f4c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68f4c)" ( (binary_expression "pcVar12 + 0x68f4c" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = **(int **)(pcVar12 + 0x67c08);" (assignment_expression "iVar2 = **(int **)(pcVar12 + 0x67c08)" identifier = (pointer_expression "**(int **)(pcVar12 + 0x67c08)" * (pointer_expression "*(int **)(pcVar12 + 0x67c08)" * (cast_expression "(int **)(pcVar12 + 0x67c08)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x67c08)" ( (binary_expression "pcVar12 + 0x67c08" identifier + number_literal) )))))) ;) (expression_statement "iStack_19c = *piVar8;" (assignment_expression "iStack_19c = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "iStack_198 = iVar7;" (assignment_expression "iStack_198 = iVar7" identifier = identifier) ;) (expression_statement "iStack_194 = param_1;" (assignment_expression "iStack_194 = param_1" identifier = identifier) ;) (expression_statement "iStack_190 = iVar9;" (assignment_expression "iStack_190 = iVar9" identifier = identifier) ;) (expression_statement "pcStack_18c = pcVar13;" (assignment_expression "pcStack_18c = pcVar13" identifier = identifier) ;) (if_statement "if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }" { (expression_statement "iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));" (assignment_expression "iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88))" identifier = (call_expression "(**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88))" (parenthesized_expression "(**(code **)(pcVar12 + 0x68d98))" ( (pointer_expression "**(code **)(pcVar12 + 0x68d98)" * (pointer_expression "*(code **)(pcVar12 + 0x68d98)" * (cast_expression "(code **)(pcVar12 + 0x68d98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68d98)" ( (binary_expression "pcVar12 + 0x68d98" identifier + number_literal) ))))) )) (argument_list "(**(undefined4 **)(pcVar12 + 0x68f88))" ( (pointer_expression "**(undefined4 **)(pcVar12 + 0x68f88)" * (pointer_expression "*(undefined4 **)(pcVar12 + 0x68f88)" * (cast_expression "(undefined4 **)(pcVar12 + 0x68f88)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68f88)" ( (binary_expression "pcVar12 + 0x68f88" identifier + number_literal) ))))) )))) ;) })) (if_statement "if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }" if (parenthesized_expression "((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0))" ( (binary_expression "(((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)" (parenthesized_expression "(((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0))" ( (binary_expression "((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)" (parenthesized_expression "((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0))" ( (binary_expression "(-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)" (parenthesized_expression "(-1 < iVar2)" ( (binary_expression "-1 < iVar2" number_literal < identifier) )) && (parenthesized_expression "(iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)" ( (comma_expression "iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0" (assignment_expression "iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4)" identifier = (call_expression "(**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4)" (parenthesized_expression "(**(code **)(pcVar12 + 0x68eac))" ( (pointer_expression "**(code **)(pcVar12 + 0x68eac)" * (pointer_expression "*(code **)(pcVar12 + 0x68eac)" * (cast_expression "(code **)(pcVar12 + 0x68eac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68eac)" ( (binary_expression "pcVar12 + 0x68eac" identifier + number_literal) ))))) )) (argument_list "(iVar2,0x40087468,&uStack_1a4)" ( identifier , number_literal , (pointer_expression "&uStack_1a4" & identifier) )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(uStack_1a4 != 0)" ( (binary_expression "uStack_1a4 != 0" identifier != number_literal) ))) )) && (parenthesized_expression "(uStack_1a2 != 0)" ( (binary_expression "uStack_1a2 != 0" identifier != number_literal) ))) )) (compound_statement "{\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }" { (expression_statement "(**(code **)(pcVar12 + 0x68600))();" (call_expression "(**(code **)(pcVar12 + 0x68600))()" (parenthesized_expression "(**(code **)(pcVar12 + 0x68600))" ( (pointer_expression "**(code **)(pcVar12 + 0x68600)" * (pointer_expression "*(code **)(pcVar12 + 0x68600)" * (cast_expression "(code **)(pcVar12 + 0x68600)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68600)" ( (binary_expression "pcVar12 + 0x68600" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);" (call_expression "(**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2)" (parenthesized_expression "(**(code **)(pcVar12 + 0x68604))" ( (pointer_expression "**(code **)(pcVar12 + 0x68604)" * (pointer_expression "*(code **)(pcVar12 + 0x68604)" * (cast_expression "(code **)(pcVar12 + 0x68604)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68604)" ( (binary_expression "pcVar12 + 0x68604" identifier + number_literal) ))))) )) (argument_list "(uStack_1a4,uStack_1a2)" ( identifier , identifier ))) ;) (if_statement "if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }" if (parenthesized_expression "(puVar6 != (uint *)0x0)" ( (binary_expression "puVar6 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *puVar6 = (uint)uStack_1a4;\n        }" { (expression_statement "*puVar6 = (uint)uStack_1a4;" (assignment_expression "*puVar6 = (uint)uStack_1a4" (pointer_expression "*puVar6" * identifier) = (cast_expression "(uint)uStack_1a4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (if_statement "if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }" if (parenthesized_expression "(puVar4 != (uint *)0x0)" ( (binary_expression "puVar4 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *puVar4 = (uint)uStack_1a2;\n        }" { (expression_statement "*puVar4 = (uint)uStack_1a2;" (assignment_expression "*puVar4 = (uint)uStack_1a2" (pointer_expression "*puVar4" * identifier) = (cast_expression "(uint)uStack_1a2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) })) (expression_statement "iVar2 = *piVar8;" (assignment_expression "iVar2 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (if_statement "if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }" if (parenthesized_expression "(iStack_19c != iVar2)" ( (binary_expression "iStack_19c != iVar2" identifier != identifier) )) (compound_statement "{\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }" { (expression_statement "pcVar12 = *(code **)(pcVar12 + 0x68ef8);" (assignment_expression "pcVar12 = *(code **)(pcVar12 + 0x68ef8)" identifier = (pointer_expression "*(code **)(pcVar12 + 0x68ef8)" * (cast_expression "(code **)(pcVar12 + 0x68ef8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68ef8)" ( (binary_expression "pcVar12 + 0x68ef8" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(pcVar12 + 0x68b90))();" (call_expression "(**(code **)(pcVar12 + 0x68b90))()" (parenthesized_expression "(**(code **)(pcVar12 + 0x68b90))" ( (pointer_expression "**(code **)(pcVar12 + 0x68b90)" * (pointer_expression "*(code **)(pcVar12 + 0x68b90)" * (cast_expression "(code **)(pcVar12 + 0x68b90)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x68b90)" ( (binary_expression "pcVar12 + 0x68b90" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (return_statement "return 0;" return number_literal ;) })) (return_statement "return iVar2;" return identifier ;) })) (expression_statement "param_1 = iVar7 + (int)puVar4;" (assignment_expression "param_1 = iVar7 + (int)puVar4" identifier = (binary_expression "iVar7 + (int)puVar4" identifier + (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }" if (parenthesized_expression "((int)puVar4 < 0)" ( (binary_expression "(int)puVar4 < 0" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }" { (expression_statement "(**(code **)(puStack_178 + -0x6044))(iVar3);" (call_expression "(**(code **)(puStack_178 + -0x6044))(iVar3)" (parenthesized_expression "(**(code **)(puStack_178 + -0x6044))" ( (pointer_expression "**(code **)(puStack_178 + -0x6044)" * (pointer_expression "*(code **)(puStack_178 + -0x6044)" * (cast_expression "(code **)(puStack_178 + -0x6044)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x6044)" ( (binary_expression "puStack_178 + -0x6044" identifier + number_literal) ))))) )) (argument_list "(iVar3)" ( identifier ))) ;) (if_statement "if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }" if (parenthesized_expression "(piVar8 == (int *)0x0)" ( (binary_expression "piVar8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar7 = -1;\n      }" { (expression_statement "iVar7 = -1;" (assignment_expression "iVar7 = -1" identifier = number_literal) ;) }) (else_clause "else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }" else (compound_statement "{\n        *piVar8 = 0;\n        iVar7 = -1;\n      }" { (expression_statement "*piVar8 = 0;" (assignment_expression "*piVar8 = 0" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (expression_statement "iVar7 = -1;" (assignment_expression "iVar7 = -1" identifier = number_literal) ;) }))) (goto_statement "goto LAB_000dd50c;" goto statement_identifier ;) })) (expression_statement "pcVar12 = *(code **)(puStack_178 + -0x605c);" (assignment_expression "pcVar12 = *(code **)(puStack_178 + -0x605c)" identifier = (pointer_expression "*(code **)(puStack_178 + -0x605c)" * (cast_expression "(code **)(puStack_178 + -0x605c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x605c)" ( (binary_expression "puStack_178 + -0x605c" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }" if (parenthesized_expression "(iVar9 <= param_1)" ( (binary_expression "iVar9 <= param_1" identifier <= identifier) )) (compound_statement "{\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }" { (expression_statement "iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;" (assignment_expression "iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80" identifier = (binary_expression "(param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80" (binary_expression "(param_1 - iVar9 & 0xffffff80U) + iVar9" (parenthesized_expression "(param_1 - iVar9 & 0xffffff80U)" ( (binary_expression "param_1 - iVar9 & 0xffffff80U" (binary_expression "param_1 - iVar9" identifier - identifier) & number_literal) )) + identifier) + number_literal)) ;) (expression_statement "puStack_16c = puVar4;" (assignment_expression "puStack_16c = puVar4" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);" (assignment_expression "iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9)" identifier = (call_expression "(**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9)" (parenthesized_expression "(**(code **)(puStack_178 + -0x7e04))" ( (pointer_expression "**(code **)(puStack_178 + -0x7e04)" * (pointer_expression "*(code **)(puStack_178 + -0x7e04)" * (cast_expression "(code **)(puStack_178 + -0x7e04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x7e04)" ( (binary_expression "puStack_178 + -0x7e04" identifier + number_literal) ))))) )) (argument_list "(iVar3,iVar9)" ( identifier , identifier )))) ;) (expression_statement "pcVar12 = *(code **)(puStack_178 + -0x605c);" (assignment_expression "pcVar12 = *(code **)(puStack_178 + -0x605c)" identifier = (pointer_expression "*(code **)(puStack_178 + -0x605c)" * (cast_expression "(code **)(puStack_178 + -0x605c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_178 + -0x605c)" ( (binary_expression "puStack_178 + -0x605c" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = puStack_16c;" (assignment_expression "puVar4 = puStack_16c" identifier = identifier) ;) })) (expression_statement "(*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);" (call_expression "(*pcVar12)(iVar3 + iVar7,auStack_164,puVar4)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "(iVar3 + iVar7,auStack_164,puVar4)" ( (binary_expression "iVar3 + iVar7" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "iVar7 = param_1;" (assignment_expression "iVar7 = param_1" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) , (binary_expression LIT < IDENT))) ))) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_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 = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT)) ;) (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 (parenthesized_expression ( (binary_expression IDENT & LIT) )) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return IDENT ;) }))) (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 = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (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 * (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 * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (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 (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT , (pointer_expression & IDENT) )))) , (binary_expression IDENT == LIT)) ))) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (return_statement return LIT ;) })) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (goto_statement goto 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) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) & LIT) )) + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (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 = IDENT) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "int zcatfd(int param_1,undefined4 param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint *puVar6;\n  int iVar7;\n  int *piVar8;\n  int iVar9;\n  int *piVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ushort uStack_1a4;\n  ushort uStack_1a2;\n  int iStack_19c;\n  int iStack_198;\n  int iStack_194;\n  int iStack_190;\n  code *pcStack_18c;\n  undefined *puStack_178;\n  uint *puStack_16c;\n  uint auStack_164 [32];\n  int iStack_e4;\n  int *piStack_dc;\n  int iStack_d8;\n  undefined4 uStack_d4;\n  undefined *puStack_d0;\n  int aiStack_9c [32];\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_001464dc;\n  local_1c = *(int *)PTR___stack_chk_guard_001464dc;\n  do {\n    piVar8 = aiStack_9c;\n    iVar2 = zread(param_1,aiStack_9c,0x80);\n    if (iVar2 == 0) goto LAB_000dd394;\n  } while ((-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2));\n  iVar2 = -1;\nLAB_000dd394:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }\n  iVar2 = local_1c;\n  puVar11 = PTR___stack_chk_fail_00146488;\n  (*(code *)PTR___stack_chk_fail_00146488)();\n  puStack_178 = puVar11 + 0x6f170;\n  piVar10 = *(int **)(puVar11 + 0x6910c);\n  puStack_d0 = puVar1;\n  iVar9 = 0x40;\n  iStack_e4 = *piVar10;\n  piStack_dc = aiStack_9c;\n  iStack_d8 = param_1;\n  uStack_d4 = param_2;\n  iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);\n  iVar7 = 0;\n  do {\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    param_1 = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = param_1;\n  } while( true );\n}" (primitive_type "int") (function_declarator "zcatfd(int param_1,undefined4 param_2)" (identifier "zcatfd") (parameter_list "(int param_1,undefined4 param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint *puVar6;\n  int iVar7;\n  int *piVar8;\n  int iVar9;\n  int *piVar10;\n  undefined *puVar11;\n  code *pcVar12;\n  code *pcVar13;\n  ushort uStack_1a4;\n  ushort uStack_1a2;\n  int iStack_19c;\n  int iStack_198;\n  int iStack_194;\n  int iStack_190;\n  code *pcStack_18c;\n  undefined *puStack_178;\n  uint *puStack_16c;\n  uint auStack_164 [32];\n  int iStack_e4;\n  int *piStack_dc;\n  int iStack_d8;\n  undefined4 uStack_d4;\n  undefined *puStack_d0;\n  int aiStack_9c [32];\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_001464dc;\n  local_1c = *(int *)PTR___stack_chk_guard_001464dc;\n  do {\n    piVar8 = aiStack_9c;\n    iVar2 = zread(param_1,aiStack_9c,0x80);\n    if (iVar2 == 0) goto LAB_000dd394;\n  } while ((-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2));\n  iVar2 = -1;\nLAB_000dd394:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }\n  iVar2 = local_1c;\n  puVar11 = PTR___stack_chk_fail_00146488;\n  (*(code *)PTR___stack_chk_fail_00146488)();\n  puStack_178 = puVar11 + 0x6f170;\n  piVar10 = *(int **)(puVar11 + 0x6910c);\n  puStack_d0 = puVar1;\n  iVar9 = 0x40;\n  iStack_e4 = *piVar10;\n  piStack_dc = aiStack_9c;\n  iStack_d8 = param_1;\n  uStack_d4 = param_2;\n  iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);\n  iVar7 = 0;\n  do {\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    param_1 = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = param_1;\n  } while( true );\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint *puVar6;" (type_identifier "uint") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "undefined *puVar11;" (type_identifier "undefined") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "code *pcVar12;" (type_identifier "code") (pointer_declarator "*pcVar12" (* "*") (identifier "pcVar12")) (; ";")) (declaration "code *pcVar13;" (type_identifier "code") (pointer_declarator "*pcVar13" (* "*") (identifier "pcVar13")) (; ";")) (declaration "ushort uStack_1a4;" (type_identifier "ushort") (identifier "uStack_1a4") (; ";")) (declaration "ushort uStack_1a2;" (type_identifier "ushort") (identifier "uStack_1a2") (; ";")) (declaration "int iStack_19c;" (primitive_type "int") (identifier "iStack_19c") (; ";")) (declaration "int iStack_198;" (primitive_type "int") (identifier "iStack_198") (; ";")) (declaration "int iStack_194;" (primitive_type "int") (identifier "iStack_194") (; ";")) (declaration "int iStack_190;" (primitive_type "int") (identifier "iStack_190") (; ";")) (declaration "code *pcStack_18c;" (type_identifier "code") (pointer_declarator "*pcStack_18c" (* "*") (identifier "pcStack_18c")) (; ";")) (declaration "undefined *puStack_178;" (type_identifier "undefined") (pointer_declarator "*puStack_178" (* "*") (identifier "puStack_178")) (; ";")) (declaration "uint *puStack_16c;" (type_identifier "uint") (pointer_declarator "*puStack_16c" (* "*") (identifier "puStack_16c")) (; ";")) (declaration "uint auStack_164 [32];" (type_identifier "uint") (array_declarator "auStack_164 [32]" (identifier "auStack_164") ([ "[") (number_literal "32") (] "]")) (; ";")) (declaration "int iStack_e4;" (primitive_type "int") (identifier "iStack_e4") (; ";")) (declaration "int *piStack_dc;" (primitive_type "int") (pointer_declarator "*piStack_dc" (* "*") (identifier "piStack_dc")) (; ";")) (declaration "int iStack_d8;" (primitive_type "int") (identifier "iStack_d8") (; ";")) (declaration "undefined4 uStack_d4;" (type_identifier "undefined4") (identifier "uStack_d4") (; ";")) (declaration "undefined *puStack_d0;" (type_identifier "undefined") (pointer_declarator "*puStack_d0" (* "*") (identifier "puStack_d0")) (; ";")) (declaration "int aiStack_9c [32];" (primitive_type "int") (array_declarator "aiStack_9c [32]" (identifier "aiStack_9c") ([ "[") (number_literal "32") (] "]")) (; ";")) (declaration "int local_1c;" (primitive_type "int") (identifier "local_1c") (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_001464dc;" (assignment_expression "puVar1 = PTR___stack_chk_guard_001464dc" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_001464dc")) (; ";")) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_001464dc;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_001464dc" (identifier "local_1c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_001464dc" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_001464dc" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_001464dc")))) (; ";")) (do_statement "do {\n    piVar8 = aiStack_9c;\n    iVar2 = zread(param_1,aiStack_9c,0x80);\n    if (iVar2 == 0) goto LAB_000dd394;\n  } while ((-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2));" (do "do") (compound_statement "{\n    piVar8 = aiStack_9c;\n    iVar2 = zread(param_1,aiStack_9c,0x80);\n    if (iVar2 == 0) goto LAB_000dd394;\n  }" ({ "{") (expression_statement "piVar8 = aiStack_9c;" (assignment_expression "piVar8 = aiStack_9c" (identifier "piVar8") (= "=") (identifier "aiStack_9c")) (; ";")) (expression_statement "iVar2 = zread(param_1,aiStack_9c,0x80);" (assignment_expression "iVar2 = zread(param_1,aiStack_9c,0x80)" (identifier "iVar2") (= "=") (call_expression "zread(param_1,aiStack_9c,0x80)" (identifier "zread") (argument_list "(param_1,aiStack_9c,0x80)" (( "(") (identifier "param_1") (, ",") (identifier "aiStack_9c") (, ",") (number_literal "0x80") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) goto LAB_000dd394;" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000dd394;" (goto "goto") (statement_identifier "LAB_000dd394") (; ";"))) (} "}")) (while "while") (parenthesized_expression "((-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2))" (( "(") (binary_expression "(-1 < iVar2) &&\n          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2)" (parenthesized_expression "(-1 < iVar2)" (( "(") (binary_expression "-1 < iVar2" (number_literal "-1") (< "<") (identifier "iVar2")) () ")")) (&& "&&") (parenthesized_expression "(piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2)" (( "(") (comma_expression "piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2" (assignment_expression "piVar8 = aiStack_9c" (identifier "piVar8") (= "=") (identifier "aiStack_9c")) (, ",") (comma_expression "iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2" (assignment_expression "iVar2 = zwrite(param_2,aiStack_9c,iVar2)" (identifier "iVar2") (= "=") (call_expression "zwrite(param_2,aiStack_9c,iVar2)" (identifier "zwrite") (argument_list "(param_2,aiStack_9c,iVar2)" (( "(") (identifier "param_2") (, ",") (identifier "aiStack_9c") (, ",") (identifier "iVar2") () ")")))) (, ",") (binary_expression "-1 < iVar2" (number_literal "-1") (< "<") (identifier "iVar2")))) () ")"))) () ")")) (; ";")) (expression_statement "iVar2 = -1;" (assignment_expression "iVar2 = -1" (identifier "iVar2") (= "=") (number_literal "-1")) (; ";")) (labeled_statement "LAB_000dd394:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }" (statement_identifier "LAB_000dd394") (: ":") (if_statement "if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }" (if "if") (parenthesized_expression "(local_1c == *(int *)puVar1)" (( "(") (binary_expression "local_1c == *(int *)puVar1" (identifier "local_1c") (== "==") (pointer_expression "*(int *)puVar1" (* "*") (cast_expression "(int *)puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n    return iVar2;\n  }" ({ "{") (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}")))) (expression_statement "iVar2 = local_1c;" (assignment_expression "iVar2 = local_1c" (identifier "iVar2") (= "=") (identifier "local_1c")) (; ";")) (expression_statement "puVar11 = PTR___stack_chk_fail_00146488;" (assignment_expression "puVar11 = PTR___stack_chk_fail_00146488" (identifier "puVar11") (= "=") (identifier "PTR___stack_chk_fail_00146488")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_00146488)();" (call_expression "(*(code *)PTR___stack_chk_fail_00146488)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00146488)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_00146488" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_00146488" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00146488"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puStack_178 = puVar11 + 0x6f170;" (assignment_expression "puStack_178 = puVar11 + 0x6f170" (identifier "puStack_178") (= "=") (binary_expression "puVar11 + 0x6f170" (identifier "puVar11") (+ "+") (number_literal "0x6f170"))) (; ";")) (expression_statement "piVar10 = *(int **)(puVar11 + 0x6910c);" (assignment_expression "piVar10 = *(int **)(puVar11 + 0x6910c)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(puVar11 + 0x6910c)" (* "*") (cast_expression "(int **)(puVar11 + 0x6910c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 0x6910c)" (( "(") (binary_expression "puVar11 + 0x6910c" (identifier "puVar11") (+ "+") (number_literal "0x6910c")) () ")"))))) (; ";")) (expression_statement "puStack_d0 = puVar1;" (assignment_expression "puStack_d0 = puVar1" (identifier "puStack_d0") (= "=") (identifier "puVar1")) (; ";")) (expression_statement "iVar9 = 0x40;" (assignment_expression "iVar9 = 0x40" (identifier "iVar9") (= "=") (number_literal "0x40")) (; ";")) (expression_statement "iStack_e4 = *piVar10;" (assignment_expression "iStack_e4 = *piVar10" (identifier "iStack_e4") (= "=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) (; ";")) (expression_statement "piStack_dc = aiStack_9c;" (assignment_expression "piStack_dc = aiStack_9c" (identifier "piStack_dc") (= "=") (identifier "aiStack_9c")) (; ";")) (expression_statement "iStack_d8 = param_1;" (assignment_expression "iStack_d8 = param_1" (identifier "iStack_d8") (= "=") (identifier "param_1")) (; ";")) (expression_statement "uStack_d4 = param_2;" (assignment_expression "uStack_d4 = param_2" (identifier "uStack_d4") (= "=") (identifier "param_2")) (; ";")) (expression_statement "iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);" (assignment_expression "iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(puVar11 + 0x671e0))(0x40)" (parenthesized_expression "(**(code **)(puVar11 + 0x671e0))" (( "(") (pointer_expression "**(code **)(puVar11 + 0x671e0)" (* "*") (pointer_expression "*(code **)(puVar11 + 0x671e0)" (* "*") (cast_expression "(code **)(puVar11 + 0x671e0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 0x671e0)" (( "(") (binary_expression "puVar11 + 0x671e0" (identifier "puVar11") (+ "+") (number_literal "0x671e0")) () ")"))))) () ")")) (argument_list "(0x40)" (( "(") (number_literal "0x40") () ")")))) (; ";")) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    param_1 = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = param_1;\n  } while( true );" (do "do") (compound_statement "{\n    puVar6 = auStack_164;\n    puVar4 = (uint *)zread(iVar2,auStack_164,0x80);\n    if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }\n    param_1 = iVar7 + (int)puVar4;\n    if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }\n    pcVar12 = *(code **)(puStack_178 + -0x605c);\n    if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }\n    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);\n    iVar7 = param_1;\n  }" ({ "{") (expression_statement "puVar6 = auStack_164;" (assignment_expression "puVar6 = auStack_164" (identifier "puVar6") (= "=") (identifier "auStack_164")) (; ";")) (expression_statement "puVar4 = (uint *)zread(iVar2,auStack_164,0x80);" (assignment_expression "puVar4 = (uint *)zread(iVar2,auStack_164,0x80)" (identifier "puVar4") (= "=") (cast_expression "(uint *)zread(iVar2,auStack_164,0x80)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "zread(iVar2,auStack_164,0x80)" (identifier "zread") (argument_list "(iVar2,auStack_164,0x80)" (( "(") (identifier "iVar2") (, ",") (identifier "auStack_164") (, ",") (number_literal "0x80") () ")"))))) (; ";")) (if_statement "if (puVar4 == (uint *)0x0) {\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }" (if "if") (parenthesized_expression "(puVar4 == (uint *)0x0)" (( "(") (binary_expression "puVar4 == (uint *)0x0" (identifier "puVar4") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }\n      *(undefined1 *)(iVar3 + iVar7) = 0;\n      if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }\nLAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }\n      pcVar12 = *(code **)(puStack_178 + -0x60b8);\n      pcVar13 = get_new_window_size;\n      (*pcVar12)();\n      piVar8 = *(int **)(pcVar12 + 0x68f4c);\n      iVar2 = **(int **)(pcVar12 + 0x67c08);\n      iStack_19c = *piVar8;\n      iStack_198 = iVar7;\n      iStack_194 = param_1;\n      iStack_190 = iVar9;\n      pcStack_18c = pcVar13;\n      if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }\n      if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }\n      iVar2 = *piVar8;\n      if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }\n      return iVar2;\n    }" ({ "{") (if_statement "if (iVar9 <= iVar7 + 1) {\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }" (if "if") (parenthesized_expression "(iVar9 <= iVar7 + 1)" (( "(") (binary_expression "iVar9 <= iVar7 + 1" (identifier "iVar9") (<= "<=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) () ")")) (compound_statement "{\n        uVar5 = (iVar7 + 1) - iVar9;\n        iVar9 = iVar9 + 0x80;\n        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);\n        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);\n      }" ({ "{") (expression_statement "uVar5 = (iVar7 + 1) - iVar9;" (assignment_expression "uVar5 = (iVar7 + 1) - iVar9" (identifier "uVar5") (= "=") (binary_expression "(iVar7 + 1) - iVar9" (parenthesized_expression "(iVar7 + 1)" (( "(") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1")) () ")")) (- "-") (identifier "iVar9"))) (; ";")) (expression_statement "iVar9 = iVar9 + 0x80;" (assignment_expression "iVar9 = iVar9 + 0x80" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 0x80" (identifier "iVar9") (+ "+") (number_literal "0x80"))) (; ";")) (expression_statement "puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);" (assignment_expression "puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9)" (identifier "puVar6") (= "=") (cast_expression "(uint *)((uVar5 & 0xffffff80) + iVar9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uVar5 & 0xffffff80) + iVar9)" (( "(") (binary_expression "(uVar5 & 0xffffff80) + iVar9" (parenthesized_expression "(uVar5 & 0xffffff80)" (( "(") (binary_expression "uVar5 & 0xffffff80" (identifier "uVar5") (& "&") (number_literal "0xffffff80")) () ")")) (+ "+") (identifier "iVar9")) () ")")))) (; ";")) (expression_statement "iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);" (assignment_expression "iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(puStack_178 + -0x7e04))(iVar3)" (parenthesized_expression "(**(code **)(puStack_178 + -0x7e04))" (( "(") (pointer_expression "**(code **)(puStack_178 + -0x7e04)" (* "*") (pointer_expression "*(code **)(puStack_178 + -0x7e04)" (* "*") (cast_expression "(code **)(puStack_178 + -0x7e04)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_178 + -0x7e04)" (( "(") (binary_expression "puStack_178 + -0x7e04" (identifier "puStack_178") (+ "+") (number_literal "-0x7e04")) () ")"))))) () ")")) (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")")))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(iVar3 + iVar7) = 0;" (assignment_expression "*(undefined1 *)(iVar3 + iVar7) = 0" (pointer_expression "*(undefined1 *)(iVar3 + iVar7)" (* "*") (cast_expression "(undefined1 *)(iVar3 + iVar7)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + iVar7)" (( "(") (binary_expression "iVar3 + iVar7" (identifier "iVar3") (+ "+") (identifier "iVar7")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (piVar8 == (int *)0x0) {\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }\n      else {\n        *piVar8 = iVar3;\n      }" (if "if") (parenthesized_expression "(piVar8 == (int *)0x0)" (( "(") (binary_expression "piVar8 == (int *)0x0" (identifier "piVar8") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        (**(code **)(puStack_178 + -0x6044))(iVar3);\n      }" ({ "{") (expression_statement "(**(code **)(puStack_178 + -0x6044))(iVar3);" (call_expression "(**(code **)(puStack_178 + -0x6044))(iVar3)" (parenthesized_expression "(**(code **)(puStack_178 + -0x6044))" (( "(") (pointer_expression "**(code **)(puStack_178 + -0x6044)" (* "*") (pointer_expression "*(code **)(puStack_178 + -0x6044)" (* "*") (cast_expression "(code **)(puStack_178 + -0x6044)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_178 + -0x6044)" (( "(") (binary_expression "puStack_178 + -0x6044" (identifier "puStack_178") (+ "+") (number_literal "-0x6044")) () ")"))))) () ")")) (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        *piVar8 = iVar3;\n      }" (else "else") (compound_statement "{\n        *piVar8 = iVar3;\n      }" ({ "{") (expression_statement "*piVar8 = iVar3;" (assignment_expression "*piVar8 = iVar3" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (identifier "iVar3")) (; ";")) (} "}")))) (labeled_statement "LAB_000dd50c:\n      if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }" (statement_identifier "LAB_000dd50c") (: ":") (if_statement "if (iStack_e4 == *piVar10) {\n        return iVar7;\n      }" (if "if") (parenthesized_expression "(iStack_e4 == *piVar10)" (( "(") (binary_expression "iStack_e4 == *piVar10" (identifier "iStack_e4") (== "==") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) () ")")) (compound_statement "{\n        return iVar7;\n      }" ({ "{") (return_statement "return iVar7;" (return "return") (identifier "iVar7") (; ";")) (} "}")))) (expression_statement "pcVar12 = *(code **)(puStack_178 + -0x60b8);" (assignment_expression "pcVar12 = *(code **)(puStack_178 + -0x60b8)" (identifier "pcVar12") (= "=") (pointer_expression "*(code **)(puStack_178 + -0x60b8)" (* "*") (cast_expression "(code **)(puStack_178 + -0x60b8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_178 + -0x60b8)" (( "(") (binary_expression "puStack_178 + -0x60b8" (identifier "puStack_178") (+ "+") (number_literal "-0x60b8")) () ")"))))) (; ";")) (expression_statement "pcVar13 = get_new_window_size;" (assignment_expression "pcVar13 = get_new_window_size" (identifier "pcVar13") (= "=") (identifier "get_new_window_size")) (; ";")) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar8 = *(int **)(pcVar12 + 0x68f4c);" (assignment_expression "piVar8 = *(int **)(pcVar12 + 0x68f4c)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(pcVar12 + 0x68f4c)" (* "*") (cast_expression "(int **)(pcVar12 + 0x68f4c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar12 + 0x68f4c)" (( "(") (binary_expression "pcVar12 + 0x68f4c" (identifier "pcVar12") (+ "+") (number_literal "0x68f4c")) () ")"))))) (; ";")) (expression_statement "iVar2 = **(int **)(pcVar12 + 0x67c08);" (assignment_expression "iVar2 = **(int **)(pcVar12 + 0x67c08)" (identifier "iVar2") (= "=") (pointer_expression "**(int **)(pcVar12 + 0x67c08)" (* "*") (pointer_expression "*(int **)(pcVar12 + 0x67c08)" (* "*") (cast_expression "(int **)(pcVar12 + 0x67c08)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar12 + 0x67c08)" (( "(") (binary_expression "pcVar12 + 0x67c08" (identifier "pcVar12") (+ "+") (number_literal "0x67c08")) () ")")))))) (; ";")) (expression_statement "iStack_19c = *piVar8;" (assignment_expression "iStack_19c = *piVar8" (identifier "iStack_19c") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "iStack_198 = iVar7;" (assignment_expression "iStack_198 = iVar7" (identifier "iStack_198") (= "=") (identifier "iVar7")) (; ";")) (expression_statement "iStack_194 = param_1;" (assignment_expression "iStack_194 = param_1" (identifier "iStack_194") (= "=") (identifier "param_1")) (; ";")) (expression_statement "iStack_190 = iVar9;" (assignment_expression "iStack_190 = iVar9" (identifier "iStack_190") (= "=") (identifier "iVar9")) (; ";")) (expression_statement "pcStack_18c = pcVar13;" (assignment_expression "pcStack_18c = pcVar13" (identifier "pcStack_18c") (= "=") (identifier "pcVar13")) (; ";")) (if_statement "if (iVar2 == -1) {\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }" (if "if") (parenthesized_expression "(iVar2 == -1)" (( "(") (binary_expression "iVar2 == -1" (identifier "iVar2") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));\n      }" ({ "{") (expression_statement "iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));" (assignment_expression "iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88))" (identifier "iVar2") (= "=") (call_expression "(**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88))" (parenthesized_expression "(**(code **)(pcVar12 + 0x68d98))" (( "(") (pointer_expression "**(code **)(pcVar12 + 0x68d98)" (* "*") (pointer_expression "*(code **)(pcVar12 + 0x68d98)" (* "*") (cast_expression "(code **)(pcVar12 + 0x68d98)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar12 + 0x68d98)" (( "(") (binary_expression "pcVar12 + 0x68d98" (identifier "pcVar12") (+ "+") (number_literal "0x68d98")) () ")"))))) () ")")) (argument_list "(**(undefined4 **)(pcVar12 + 0x68f88))" (( "(") (pointer_expression "**(undefined4 **)(pcVar12 + 0x68f88)" (* "*") (pointer_expression "*(undefined4 **)(pcVar12 + 0x68f88)" (* "*") (cast_expression "(undefined4 **)(pcVar12 + 0x68f88)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar12 + 0x68f88)" (( "(") (binary_expression "pcVar12 + 0x68f88" (identifier "pcVar12") (+ "+") (number_literal "0x68f88")) () ")"))))) () ")")))) (; ";")) (} "}"))) (if_statement "if ((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }" (if "if") (parenthesized_expression "((((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0))" (( "(") (binary_expression "(((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)) && (uStack_1a2 != 0)" (parenthesized_expression "(((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0))" (( "(") (binary_expression "((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&\n          (uStack_1a4 != 0)" (parenthesized_expression "((-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0))" (( "(") (binary_expression "(-1 < iVar2) &&\n           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)" (parenthesized_expression "(-1 < iVar2)" (( "(") (binary_expression "-1 < iVar2" (number_literal "-1") (< "<") (identifier "iVar2")) () ")")) (&& "&&") (parenthesized_expression "(iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)" (( "(") (comma_expression "iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0" (assignment_expression "iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4)" (parenthesized_expression "(**(code **)(pcVar12 + 0x68eac))" (( "(") (pointer_expression "**(code **)(pcVar12 + 0x68eac)" (* "*") (pointer_expression "*(code **)(pcVar12 + 0x68eac)" (* "*") (cast_expression "(code **)(pcVar12 + 0x68eac)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar12 + 0x68eac)" (( "(") (binary_expression "pcVar12 + 0x68eac" (identifier "pcVar12") (+ "+") (number_literal "0x68eac")) () ")"))))) () ")")) (argument_list "(iVar2,0x40087468,&uStack_1a4)" (( "(") (identifier "iVar2") (, ",") (number_literal "0x40087468") (, ",") (pointer_expression "&uStack_1a4" (& "&") (identifier "uStack_1a4")) () ")")))) (, ",") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uStack_1a4 != 0)" (( "(") (binary_expression "uStack_1a4 != 0" (identifier "uStack_1a4") (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uStack_1a2 != 0)" (( "(") (binary_expression "uStack_1a2 != 0" (identifier "uStack_1a2") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        (**(code **)(pcVar12 + 0x68600))();\n        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);\n        if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }\n        if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }\n      }" ({ "{") (expression_statement "(**(code **)(pcVar12 + 0x68600))();" (call_expression "(**(code **)(pcVar12 + 0x68600))()" (parenthesized_expression "(**(code **)(pcVar12 + 0x68600))" (( "(") (pointer_expression "**(code **)(pcVar12 + 0x68600)" (* "*") (pointer_expression "*(code **)(pcVar12 + 0x68600)" (* "*") (cast_expression "(code **)(pcVar12 + 0x68600)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar12 + 0x68600)" (( "(") (binary_expression "pcVar12 + 0x68600" (identifier "pcVar12") (+ "+") (number_literal "0x68600")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "(**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);" (call_expression "(**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2)" (parenthesized_expression "(**(code **)(pcVar12 + 0x68604))" (( "(") (pointer_expression "**(code **)(pcVar12 + 0x68604)" (* "*") (pointer_expression "*(code **)(pcVar12 + 0x68604)" (* "*") (cast_expression "(code **)(pcVar12 + 0x68604)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar12 + 0x68604)" (( "(") (binary_expression "pcVar12 + 0x68604" (identifier "pcVar12") (+ "+") (number_literal "0x68604")) () ")"))))) () ")")) (argument_list "(uStack_1a4,uStack_1a2)" (( "(") (identifier "uStack_1a4") (, ",") (identifier "uStack_1a2") () ")"))) (; ";")) (if_statement "if (puVar6 != (uint *)0x0) {\n          *puVar6 = (uint)uStack_1a4;\n        }" (if "if") (parenthesized_expression "(puVar6 != (uint *)0x0)" (( "(") (binary_expression "puVar6 != (uint *)0x0" (identifier "puVar6") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          *puVar6 = (uint)uStack_1a4;\n        }" ({ "{") (expression_statement "*puVar6 = (uint)uStack_1a4;" (assignment_expression "*puVar6 = (uint)uStack_1a4" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (cast_expression "(uint)uStack_1a4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uStack_1a4"))) (; ";")) (} "}"))) (if_statement "if (puVar4 != (uint *)0x0) {\n          *puVar4 = (uint)uStack_1a2;\n        }" (if "if") (parenthesized_expression "(puVar4 != (uint *)0x0)" (( "(") (binary_expression "puVar4 != (uint *)0x0" (identifier "puVar4") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          *puVar4 = (uint)uStack_1a2;\n        }" ({ "{") (expression_statement "*puVar4 = (uint)uStack_1a2;" (assignment_expression "*puVar4 = (uint)uStack_1a2" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (cast_expression "(uint)uStack_1a2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uStack_1a2"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar2 = *piVar8;" (assignment_expression "iVar2 = *piVar8" (identifier "iVar2") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (if_statement "if (iStack_19c != iVar2) {\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }" (if "if") (parenthesized_expression "(iStack_19c != iVar2)" (( "(") (binary_expression "iStack_19c != iVar2" (identifier "iStack_19c") (!= "!=") (identifier "iVar2")) () ")")) (compound_statement "{\n        pcVar12 = *(code **)(pcVar12 + 0x68ef8);\n        (*pcVar12)();\n        (**(code **)(pcVar12 + 0x68b90))();\n        return 0;\n      }" ({ "{") (expression_statement "pcVar12 = *(code **)(pcVar12 + 0x68ef8);" (assignment_expression "pcVar12 = *(code **)(pcVar12 + 0x68ef8)" (identifier "pcVar12") (= "=") (pointer_expression "*(code **)(pcVar12 + 0x68ef8)" (* "*") (cast_expression "(code **)(pcVar12 + 0x68ef8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar12 + 0x68ef8)" (( "(") (binary_expression "pcVar12 + 0x68ef8" (identifier "pcVar12") (+ "+") (number_literal "0x68ef8")) () ")"))))) (; ";")) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "(**(code **)(pcVar12 + 0x68b90))();" (call_expression "(**(code **)(pcVar12 + 0x68b90))()" (parenthesized_expression "(**(code **)(pcVar12 + 0x68b90))" (( "(") (pointer_expression "**(code **)(pcVar12 + 0x68b90)" (* "*") (pointer_expression "*(code **)(pcVar12 + 0x68b90)" (* "*") (cast_expression "(code **)(pcVar12 + 0x68b90)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar12 + 0x68b90)" (( "(") (binary_expression "pcVar12 + 0x68b90" (identifier "pcVar12") (+ "+") (number_literal "0x68b90")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (expression_statement "param_1 = iVar7 + (int)puVar4;" (assignment_expression "param_1 = iVar7 + (int)puVar4" (identifier "param_1") (= "=") (binary_expression "iVar7 + (int)puVar4" (identifier "iVar7") (+ "+") (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")))) (; ";")) (if_statement "if ((int)puVar4 < 0) {\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }" (if "if") (parenthesized_expression "((int)puVar4 < 0)" (( "(") (binary_expression "(int)puVar4 < 0" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)(puStack_178 + -0x6044))(iVar3);\n      if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }\n      goto LAB_000dd50c;\n    }" ({ "{") (expression_statement "(**(code **)(puStack_178 + -0x6044))(iVar3);" (call_expression "(**(code **)(puStack_178 + -0x6044))(iVar3)" (parenthesized_expression "(**(code **)(puStack_178 + -0x6044))" (( "(") (pointer_expression "**(code **)(puStack_178 + -0x6044)" (* "*") (pointer_expression "*(code **)(puStack_178 + -0x6044)" (* "*") (cast_expression "(code **)(puStack_178 + -0x6044)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_178 + -0x6044)" (( "(") (binary_expression "puStack_178 + -0x6044" (identifier "puStack_178") (+ "+") (number_literal "-0x6044")) () ")"))))) () ")")) (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (if_statement "if (piVar8 == (int *)0x0) {\n        iVar7 = -1;\n      }\n      else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }" (if "if") (parenthesized_expression "(piVar8 == (int *)0x0)" (( "(") (binary_expression "piVar8 == (int *)0x0" (identifier "piVar8") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        iVar7 = -1;\n      }" ({ "{") (expression_statement "iVar7 = -1;" (assignment_expression "iVar7 = -1" (identifier "iVar7") (= "=") (number_literal "-1")) (; ";")) (} "}")) (else_clause "else {\n        *piVar8 = 0;\n        iVar7 = -1;\n      }" (else "else") (compound_statement "{\n        *piVar8 = 0;\n        iVar7 = -1;\n      }" ({ "{") (expression_statement "*piVar8 = 0;" (assignment_expression "*piVar8 = 0" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar7 = -1;" (assignment_expression "iVar7 = -1" (identifier "iVar7") (= "=") (number_literal "-1")) (; ";")) (} "}")))) (goto_statement "goto LAB_000dd50c;" (goto "goto") (statement_identifier "LAB_000dd50c") (; ";")) (} "}"))) (expression_statement "pcVar12 = *(code **)(puStack_178 + -0x605c);" (assignment_expression "pcVar12 = *(code **)(puStack_178 + -0x605c)" (identifier "pcVar12") (= "=") (pointer_expression "*(code **)(puStack_178 + -0x605c)" (* "*") (cast_expression "(code **)(puStack_178 + -0x605c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_178 + -0x605c)" (( "(") (binary_expression "puStack_178 + -0x605c" (identifier "puStack_178") (+ "+") (number_literal "-0x605c")) () ")"))))) (; ";")) (if_statement "if (iVar9 <= param_1) {\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }" (if "if") (parenthesized_expression "(iVar9 <= param_1)" (( "(") (binary_expression "iVar9 <= param_1" (identifier "iVar9") (<= "<=") (identifier "param_1")) () ")")) (compound_statement "{\n      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;\n      puStack_16c = puVar4;\n      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);\n      pcVar12 = *(code **)(puStack_178 + -0x605c);\n      puVar4 = puStack_16c;\n    }" ({ "{") (expression_statement "iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;" (assignment_expression "iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80" (identifier "iVar9") (= "=") (binary_expression "(param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80" (binary_expression "(param_1 - iVar9 & 0xffffff80U) + iVar9" (parenthesized_expression "(param_1 - iVar9 & 0xffffff80U)" (( "(") (binary_expression "param_1 - iVar9 & 0xffffff80U" (binary_expression "param_1 - iVar9" (identifier "param_1") (- "-") (identifier "iVar9")) (& "&") (number_literal "0xffffff80U")) () ")")) (+ "+") (identifier "iVar9")) (+ "+") (number_literal "0x80"))) (; ";")) (expression_statement "puStack_16c = puVar4;" (assignment_expression "puStack_16c = puVar4" (identifier "puStack_16c") (= "=") (identifier "puVar4")) (; ";")) (expression_statement "iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);" (assignment_expression "iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9)" (parenthesized_expression "(**(code **)(puStack_178 + -0x7e04))" (( "(") (pointer_expression "**(code **)(puStack_178 + -0x7e04)" (* "*") (pointer_expression "*(code **)(puStack_178 + -0x7e04)" (* "*") (cast_expression "(code **)(puStack_178 + -0x7e04)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_178 + -0x7e04)" (( "(") (binary_expression "puStack_178 + -0x7e04" (identifier "puStack_178") (+ "+") (number_literal "-0x7e04")) () ")"))))) () ")")) (argument_list "(iVar3,iVar9)" (( "(") (identifier "iVar3") (, ",") (identifier "iVar9") () ")")))) (; ";")) (expression_statement "pcVar12 = *(code **)(puStack_178 + -0x605c);" (assignment_expression "pcVar12 = *(code **)(puStack_178 + -0x605c)" (identifier "pcVar12") (= "=") (pointer_expression "*(code **)(puStack_178 + -0x605c)" (* "*") (cast_expression "(code **)(puStack_178 + -0x605c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_178 + -0x605c)" (( "(") (binary_expression "puStack_178 + -0x605c" (identifier "puStack_178") (+ "+") (number_literal "-0x605c")) () ")"))))) (; ";")) (expression_statement "puVar4 = puStack_16c;" (assignment_expression "puVar4 = puStack_16c" (identifier "puVar4") (= "=") (identifier "puStack_16c")) (; ";")) (} "}"))) (expression_statement "(*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);" (call_expression "(*pcVar12)(iVar3 + iVar7,auStack_164,puVar4)" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "(iVar3 + iVar7,auStack_164,puVar4)" (( "(") (binary_expression "iVar3 + iVar7" (identifier "iVar3") (+ "+") (identifier "iVar7")) (, ",") (identifier "auStack_164") (, ",") (identifier "puVar4") () ")"))) (; ";")) (expression_statement "iVar7 = param_1;" (assignment_expression "iVar7 = param_1" (identifier "iVar7") (= "=") (identifier "param_1")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (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: (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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) 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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) right: (binary_expression left: (number_literal) right: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_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: (primitive_type) 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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) arguments: (argument_list (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: (identifier))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) arguments: (argument_list (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_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))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) 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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) arguments: (argument_list (pointer_expression argument: (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: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) arguments: (argument_list (identifier) (number_literal) (pointer_expression argument: (identifier))))) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) arguments: (argument_list))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) arguments: (argument_list (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (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))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) arguments: (argument_list))) (return_statement (number_literal)))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (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 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: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) arguments: (argument_list (identifier) (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))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (true))))))

int MASKED(int param_1,undefined4 param_2)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  uint *puVar4;
  uint uVar5;
  uint *puVar6;
  int iVar7;
  int *piVar8;
  int iVar9;
  int *piVar10;
  undefined *puVar11;
  code *pcVar12;
  code *pcVar13;
  ushort uStack_1a4;
  ushort uStack_1a2;
  int iStack_19c;
  int iStack_198;
  int iStack_194;
  int iStack_190;
  code *pcStack_18c;
  undefined *puStack_178;
  uint *puStack_16c;
  uint auStack_164 [32];
  int iStack_e4;
  int *piStack_dc;
  int iStack_d8;
  undefined4 uStack_d4;
  undefined *puStack_d0;
  int aiStack_9c [32];
  int local_1c;
  
  puVar1 = PTR___stack_chk_guard_001464dc;
  local_1c = *(int *)PTR___stack_chk_guard_001464dc;
  do {
    piVar8 = aiStack_9c;
    iVar2 = zread(param_1,aiStack_9c,0x80);
    if (iVar2 == 0) goto LAB_000dd394;
  } while ((-1 < iVar2) &&
          (piVar8 = aiStack_9c, iVar2 = zwrite(param_2,aiStack_9c,iVar2), -1 < iVar2));
  iVar2 = -1;
LAB_000dd394:
  if (local_1c == *(int *)puVar1) {
    return iVar2;
  }
  iVar2 = local_1c;
  puVar11 = PTR___stack_chk_fail_00146488;
  (*(code *)PTR___stack_chk_fail_00146488)();
  puStack_178 = puVar11 + 0x6f170;
  piVar10 = *(int **)(puVar11 + 0x6910c);
  puStack_d0 = puVar1;
  iVar9 = 0x40;
  iStack_e4 = *piVar10;
  piStack_dc = aiStack_9c;
  iStack_d8 = param_1;
  uStack_d4 = param_2;
  iVar3 = (**(code **)(puVar11 + 0x671e0))(0x40);
  iVar7 = 0;
  do {
    puVar6 = auStack_164;
    puVar4 = (uint *)zread(iVar2,auStack_164,0x80);
    if (puVar4 == (uint *)0x0) {
      if (iVar9 <= iVar7 + 1) {
        uVar5 = (iVar7 + 1) - iVar9;
        iVar9 = iVar9 + 0x80;
        puVar6 = (uint *)((uVar5 & 0xffffff80) + iVar9);
        iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3);
      }
      *(undefined1 *)(iVar3 + iVar7) = 0;
      if (piVar8 == (int *)0x0) {
        (**(code **)(puStack_178 + -0x6044))(iVar3);
      }
      else {
        *piVar8 = iVar3;
      }
LAB_000dd50c:
      if (iStack_e4 == *piVar10) {
        return iVar7;
      }
      pcVar12 = *(code **)(puStack_178 + -0x60b8);
      pcVar13 = get_new_window_size;
      (*pcVar12)();
      piVar8 = *(int **)(pcVar12 + 0x68f4c);
      iVar2 = **(int **)(pcVar12 + 0x67c08);
      iStack_19c = *piVar8;
      iStack_198 = iVar7;
      iStack_194 = param_1;
      iStack_190 = iVar9;
      pcStack_18c = pcVar13;
      if (iVar2 == -1) {
        iVar2 = (**(code **)(pcVar12 + 0x68d98))(**(undefined4 **)(pcVar12 + 0x68f88));
      }
      if ((((-1 < iVar2) &&
           (iVar2 = (**(code **)(pcVar12 + 0x68eac))(iVar2,0x40087468,&uStack_1a4), iVar2 == 0)) &&
          (uStack_1a4 != 0)) && (uStack_1a2 != 0)) {
        (**(code **)(pcVar12 + 0x68600))();
        (**(code **)(pcVar12 + 0x68604))(uStack_1a4,uStack_1a2);
        if (puVar6 != (uint *)0x0) {
          *puVar6 = (uint)uStack_1a4;
        }
        if (puVar4 != (uint *)0x0) {
          *puVar4 = (uint)uStack_1a2;
        }
      }
      iVar2 = *piVar8;
      if (iStack_19c != iVar2) {
        pcVar12 = *(code **)(pcVar12 + 0x68ef8);
        (*pcVar12)();
        (**(code **)(pcVar12 + 0x68b90))();
        return 0;
      }
      return iVar2;
    }
    param_1 = iVar7 + (int)puVar4;
    if ((int)puVar4 < 0) {
      (**(code **)(puStack_178 + -0x6044))(iVar3);
      if (piVar8 == (int *)0x0) {
        iVar7 = -1;
      }
      else {
        *piVar8 = 0;
        iVar7 = -1;
      }
      goto LAB_000dd50c;
    }
    pcVar12 = *(code **)(puStack_178 + -0x605c);
    if (iVar9 <= param_1) {
      iVar9 = (param_1 - iVar9 & 0xffffff80U) + iVar9 + 0x80;
      puStack_16c = puVar4;
      iVar3 = (**(code **)(puStack_178 + -0x7e04))(iVar3,iVar9);
      pcVar12 = *(code **)(puStack_178 + -0x605c);
      puVar4 = puStack_16c;
    }
    (*pcVar12)(iVar3 + iVar7,auStack_164,puVar4);
    iVar7 = param_1;
  } while( true );
}

