
/* WARNING: Type propagation algorithm not settling */

off64_t gzseek64(gzFile file,off64_t offset,int whence)

{
  off64_t oVar1;
  int iVar2;
  uchar *puVar3;
  uchar *puVar4;
  uchar *puVar5;
  uchar *puVar6;
  uint in_a2;
  uchar *puVar7;
  uchar *in_a3;
  uint uVar8;
  uint uVar9;
  longlong lVar10;
  
  if (file == (gzFile)0x0) {
    return -1;
  }
  uVar9 = file[1].have;
  if ((uVar9 != 0x1c4f) && (uVar9 != 0x79b1)) {
    return -1;
  }
  iVar2 = (int)file[5].pos;
  if ((iVar2 != 0) && (iVar2 != -5)) {
    return -1;
  }
  if (1 < offset._0_4_) {
    return -1;
  }
  if (offset._0_4_ == 0) {
    *(undefined4 *)&file[5].pos = 0;
    puVar3 = in_a3 + -(int)file->pos;
    in_a2 = (in_a2 - *(int *)&file->pos) - (uint)(in_a3 < puVar3);
    puVar6 = puVar3;
    if (uVar9 == 0x1c4f) goto LAB_0001e134;
LAB_0001e08c:
    if ((int)in_a2 < 0) {
      return -1;
    }
    iVar2 = *(int *)&file->pos;
    puVar4 = *(uchar **)((int)&file->pos + 4);
  }
  else {
    puVar3 = in_a3;
    if (*(int *)&file[5].pos != 0) {
      puVar3 = in_a3 + (int)file[5].next;
      in_a2 = (uint)(puVar3 < in_a3) + in_a2 + file[5].have;
    }
    *(undefined4 *)&file[5].pos = 0;
    puVar6 = puVar3;
    if (uVar9 != 0x1c4f) goto LAB_0001e08c;
LAB_0001e134:
    iVar2 = *(int *)&file->pos;
    puVar5 = *(uchar **)((int)&file->pos + 4);
    if (file[3].have == 1) {
      if (-1 < (int)((uint)(puVar3 + (int)puVar5 < puVar3) + in_a2 + iVar2)) {
        lVar10 = (*(code *)PTR_lseek64_000360dc)
                           (file[1].next,(uint)(puVar3 + (int)puVar5 < puVar3),
                            in_a2 - (puVar3 < puVar3 + -file->have),puVar3 + -file->have,1);
        if (lVar10 == -1) {
          return -1;
        }
        uVar9 = file[6].have;
        file->have = 0;
        file[4].have = 0;
        file[4].next = (uchar *)0x0;
        *(undefined4 *)&file[5].pos = 0;
        if (uVar9 != 0) {
          if ((int)file[5].pos != -4) {
            (*(code *)PTR_free_00036104)();
          }
          file[6].have = 0;
        }
        oVar1 = file->pos;
        iVar2 = *(int *)&file->pos;
        *(undefined4 *)((int)&file[5].pos + 4) = 0;
        puVar4 = puVar3 + (int)oVar1;
        *(undefined4 *)&file[6].pos = 0;
        *(uchar **)((int)&file->pos + 4) = puVar4;
        iVar2 = (uint)(puVar4 < puVar3) + in_a2 + iVar2;
        *(int *)&file->pos = iVar2;
        goto LAB_0001e0c4;
      }
      if ((int)in_a2 < 0) {
        return -1;
      }
    }
    else if ((int)in_a2 < 0) {
      puVar6 = puVar3 + (int)puVar5;
      in_a2 = (uint)(puVar6 < puVar3) + in_a2 + iVar2;
      if ((int)in_a2 < 0) {
        return -1;
      }
      iVar2 = (*(code *)PTR_gzrewind_00036090)(file);
      if (iVar2 == -1) {
        return -1;
      }
      iVar2 = *(int *)&file->pos;
      puVar4 = *(uchar **)((int)&file->pos + 4);
      puVar5 = puVar4;
      puVar3 = puVar6;
      if (file[1].have != uVar9) goto LAB_0001e09c;
    }
    puVar7 = (uchar *)file->have;
    uVar9 = 0;
    if (((int)in_a2 < 0) || ((uVar8 = 0, in_a2 == 0 && (puVar3 < puVar7)))) {
      uVar8 = (int)puVar7 - (int)puVar3;
      uVar9 = in_a2;
      puVar7 = puVar3;
    }
    puVar4 = puVar5 + (int)puVar7;
    file->have = uVar8;
    puVar6 = puVar3 + -(int)puVar7;
    *(uchar **)((int)&file->pos + 4) = puVar4;
    iVar2 = (uint)(puVar4 < puVar5) + iVar2 + uVar9;
    *(int *)&file->pos = iVar2;
    in_a2 = (in_a2 - uVar9) - (uint)(puVar3 < puVar6);
    file->next = file->next + (int)puVar7;
  }
LAB_0001e09c:
  if (in_a2 != 0 || puVar6 != (uchar *)0x0) {
    file[5].have = in_a2;
    file[5].next = puVar6;
    *(undefined4 *)&file[5].pos = 1;
  }
  puVar4 = puVar6 + (int)puVar4;
  iVar2 = (uint)(puVar4 < puVar6) + in_a2 + iVar2;
LAB_0001e0c4:
  return CONCAT44(iVar2,puVar4);
}



undefined8 gzseek64(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  longlong lVar9;
  
  if (param_1 == (uint *)0x0) {
    return 0xffffffffffffffff;
  }
  uVar8 = param_1[4];
  if ((uVar8 != 0x1c4f) && (uVar8 != 0x79b1)) {
    return 0xffffffffffffffff;
  }
  if ((param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb)) {
    return 0xffffffffffffffff;
  }
  if (1 < param_5) {
    return 0xffffffffffffffff;
  }
  if (param_5 == 0) {
    param_1[0x16] = 0;
    uVar3 = param_4 - param_1[3];
    param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);
    uVar6 = uVar3;
    if (uVar8 == 0x1c4f) goto LAB_0001e134;
LAB_0001e08c:
    if ((int)param_3 < 0) {
      return 0xffffffffffffffff;
    }
    uVar1 = param_1[2];
    uVar4 = param_1[3];
  }
  else {
    uVar3 = param_4;
    if (param_1[0x16] != 0) {
      uVar3 = param_4 + param_1[0x15];
      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];
    }
    param_1[0x16] = 0;
    uVar6 = uVar3;
    if (uVar8 != 0x1c4f) goto LAB_0001e08c;
LAB_0001e134:
    uVar1 = param_1[2];
    uVar5 = param_1[3];
    if (param_1[0xc] == 1) {
      uVar8 = (uint)(uVar3 + uVar5 < uVar3);
      if (-1 < (int)(uVar8 + param_3 + uVar1)) {
        lVar9 = (*(code *)PTR_lseek64_000360dc)
                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)
        ;
        if (lVar9 == -1) {
          return 0xffffffffffffffff;
        }
        *param_1 = 0;
        param_1[0x10] = 0;
        param_1[0x11] = 0;
        param_1[0x16] = 0;
        if (param_1[0x18] != 0) {
          if (param_1[0x17] != 0xfffffffc) {
            (*(code *)PTR_free_00036104)();
          }
          param_1[0x18] = 0;
        }
        param_1[0x17] = 0;
        uVar4 = uVar3 + param_1[3];
        param_1[0x1a] = 0;
        param_1[3] = uVar4;
        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];
        param_1[2] = uVar8;
        goto LAB_0001e0c4;
      }
      if ((int)param_3 < 0) {
        return 0xffffffffffffffff;
      }
    }
    else if ((int)param_3 < 0) {
      uVar6 = uVar3 + uVar5;
      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;
      if ((int)param_3 < 0) {
        return 0xffffffffffffffff;
      }
      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);
      if (iVar2 == -1) {
        return 0xffffffffffffffff;
      }
      uVar1 = param_1[2];
      uVar4 = param_1[3];
      uVar5 = uVar4;
      uVar3 = uVar6;
      if (param_1[4] != uVar8) goto LAB_0001e09c;
    }
    uVar7 = *param_1;
    uVar8 = 0;
    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {
      uVar6 = uVar7 - uVar3;
      uVar8 = param_3;
      uVar7 = uVar3;
    }
    uVar4 = uVar5 + uVar7;
    *param_1 = uVar6;
    uVar6 = uVar3 - uVar7;
    param_1[3] = uVar4;
    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;
    param_1[2] = uVar1;
    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);
    param_1[1] = param_1[1] + uVar7;
  }
LAB_0001e09c:
  if (param_3 != 0 || uVar6 != 0) {
    param_1[0x14] = param_3;
    param_1[0x15] = uVar6;
    param_1[0x16] = 1;
  }
  uVar4 = uVar6 + uVar4;
  uVar8 = (uint)(uVar4 < uVar6) + param_3 + uVar1;
LAB_0001e0c4:
  return CONCAT44(uVar8,uVar4);
}


lui gp,0x2
addiu gp,gp,0xc
addu gp,gp,t9
addiu sp,sp,-0x38
lw v0,0x48(sp)
sw gp,0x18(sp)
sw ra,0x34(sp)
sw s3,0x30(sp)
sw s2,0x2c(sp)
sw s1,0x28(sp)
beq a0,zero,0x0001e0e8
_sw s0,0x24(sp)
lw s3,0x10(a0)
li v1,0x1c4f
or s0,a0,zero
or s2,a2,zero
beq s3,v1,0x0001e038
_or s1,a3,zero
li v1,0x79b1
bne s3,v1,0x0001e0e8
_nop
lw v1,0x5c(s0)
bne v1,zero,0x0001e0e0
_li a0,-0x5
sltiu v1,v0,0x2
beq v1,zero,0x0001e0e8
_nop
beq v0,zero,0x0001e10c
_nop
lw v0,0x58(s0)
beq v0,zero,0x0001e084
_li v0,0x1c4f
lw v1,0x54(s0)
lw v0,0x50(s0)
addu v1,s1,v1
addu s2,s2,v0
sltu s1,v1,s1
addu s2,s1,s2
or s1,v1,zero
li v0,0x1c4f
beq s3,v0,0x0001e134
_sw zero,0x58(s0)
bltz s2,0x0001e0ec
_li v0,-0x1
lw v0,0x8(s0)
lw v1,0xc(s0)
or a0,s2,s1
beq a0,zero,0x0001e0b4
_li a0,0x1
sw s2,0x50(s0)
sw s1,0x54(s0)
sw a0,0x58(s0)
addu v1,s1,v1
addu s2,s2,v0
sltu s1,v1,s1
addu v0,s1,s2
lw ra,0x34(sp)
lw s3,0x30(sp)
lw s2,0x2c(sp)
lw s1,0x28(sp)
lw s0,0x24(sp)
jr ra
_addiu sp,sp,0x38
beq v1,a0,0x0001e048
_sltiu v1,v0,0x2
li v0,-0x1
li v1,-0x1
lw ra,0x34(sp)
lw s3,0x30(sp)
lw s2,0x2c(sp)
lw s1,0x28(sp)
lw s0,0x24(sp)
jr ra
_addiu sp,sp,0x38
lw v1,0xc(s0)
lw v0,0x8(s0)
sw zero,0x58(s0)
subu v1,s1,v1
subu s2,s2,v0
li v0,0x1c4f
sltu s1,s1,v1
subu s2,s2,s1
bne s3,v0,0x0001e08c
_or s1,v1,zero
lw a2,0x30(s0)
li a0,0x1
lw v0,0x8(s0)
beq a2,a0,0x0001e210
_lw v1,0xc(s0)
bgez s2,0x0001e190
_nop
addu v1,s1,v1
addu v0,s2,v0
sltu s1,v1,s1
addu s2,s1,v0
bltz s2,0x0001e0e8
_or s1,v1,zero
lw t9,-0x7f60(gp)
jalr t9
_or a0,s0,zero
li v1,-0x1
beq v0,v1,0x0001e0f0
_li v0,-0x1
lw a0,0x10(s0)
lw v0,0x8(s0)
bne a0,s3,0x0001e09c
_lw v1,0xc(s0)
lw a2,0x0(s0)
or a1,zero,zero
bgez s2,0x0001e1f4
_or a0,a2,zero
subu t1,a2,s1
or a1,s2,zero
or a0,s1,zero
or a2,s1,zero
addu t0,v1,a0
lw a3,0x4(s0)
addu v0,v0,a1
sw t1,0x0(s0)
subu a0,s1,a0
sw t0,0xc(s0)
sltu v1,t0,v1
addu v0,v1,v0
subu a1,s2,a1
addu a2,a3,a2
sw v0,0x8(s0)
sltu s1,s1,a0
subu s2,a1,s1
sw a2,0x4(s0)
or v1,t0,zero
b 0x0001e09c
_or s1,a0,zero
bne s2,zero,0x0001e1b0
_or t1,zero,zero
sltu a3,s1,a2
bne a3,zero,0x0001e1a0
_addu t0,v1,a0
b 0x0001e1b4
_nop
addu a1,s1,v1
addu a0,s2,v0
sltu a1,a1,s1
addu a0,a1,a0
bgez a0,0x0001e23c
_lw t9,-0x7f14(gp)
bgez s2,0x0001e190
_nop
li v0,-0x1
b 0x0001e0f0
_li v1,-0x1
lw a3,0x0(s0)
lw a0,0x14(s0)
subu a3,s1,a3
sw a2,0x10(sp)
sltu a2,s1,a3
jalr t9
_subu a2,s2,a2
li a0,-0x1
beq v0,a0,0x0001e2c4
_lw gp,0x18(sp)
lw a0,0x60(s0)
sw zero,0x0(s0)
sw zero,0x40(s0)
sw zero,0x44(s0)
beq a0,zero,0x0001e298
_sw zero,0x58(s0)
lw v1,0x5c(s0)
li v0,-0x4
beq v1,v0,0x0001e294
_lw t9,-0x7eec(gp)
jalr t9
_nop
sw zero,0x60(s0)
lw v1,0xc(s0)
lw v0,0x8(s0)
sw zero,0x5c(s0)
addu v1,s1,v1
sw zero,0x68(s0)
addu s2,s2,v0
sltu s1,v1,s1
sw v1,0xc(s0)
addu v0,s1,s2
b 0x0001e0c4
_sw v0,0x8(s0)
bne v1,v0,0x0001e264
_li v0,-0x1
b 0x0001e0f0
_li v1,-0x1
(translation_unit "undefined8 gzseek64(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  longlong lVar9;\n  \n  if (param_1 == (uint *)0x0) {\n    return 0xffffffffffffffff;\n  }\n  uVar8 = param_1[4];\n  if ((uVar8 != 0x1c4f) && (uVar8 != 0x79b1)) {\n    return 0xffffffffffffffff;\n  }\n  if ((param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb)) {\n    return 0xffffffffffffffff;\n  }\n  if (1 < param_5) {\n    return 0xffffffffffffffff;\n  }\n  if (param_5 == 0) {\n    param_1[0x16] = 0;\n    uVar3 = param_4 - param_1[3];\n    param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);\n    uVar6 = uVar3;\n    if (uVar8 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }\n    uVar1 = param_1[2];\n    uVar4 = param_1[3];\n  }\n  else {\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }\nLAB_0001e09c:\n  if (param_3 != 0 || uVar6 != 0) {\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }\n  uVar4 = uVar6 + uVar4;\n  uVar8 = (uint)(uVar4 < uVar6) + param_3 + uVar1;\nLAB_0001e0c4:\n  return CONCAT44(uVar8,uVar4);\n}\n\n" (function_definition "undefined8 gzseek64(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  longlong lVar9;\n  \n  if (param_1 == (uint *)0x0) {\n    return 0xffffffffffffffff;\n  }\n  uVar8 = param_1[4];\n  if ((uVar8 != 0x1c4f) && (uVar8 != 0x79b1)) {\n    return 0xffffffffffffffff;\n  }\n  if ((param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb)) {\n    return 0xffffffffffffffff;\n  }\n  if (1 < param_5) {\n    return 0xffffffffffffffff;\n  }\n  if (param_5 == 0) {\n    param_1[0x16] = 0;\n    uVar3 = param_4 - param_1[3];\n    param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);\n    uVar6 = uVar3;\n    if (uVar8 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }\n    uVar1 = param_1[2];\n    uVar4 = param_1[3];\n  }\n  else {\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }\nLAB_0001e09c:\n  if (param_3 != 0 || uVar6 != 0) {\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }\n  uVar4 = uVar6 + uVar4;\n  uVar8 = (uint)(uVar4 < uVar6) + param_3 + uVar1;\nLAB_0001e0c4:\n  return CONCAT44(uVar8,uVar4);\n}" type_identifier (function_declarator "gzseek64(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5)" identifier (parameter_list "(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  longlong lVar9;\n  \n  if (param_1 == (uint *)0x0) {\n    return 0xffffffffffffffff;\n  }\n  uVar8 = param_1[4];\n  if ((uVar8 != 0x1c4f) && (uVar8 != 0x79b1)) {\n    return 0xffffffffffffffff;\n  }\n  if ((param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb)) {\n    return 0xffffffffffffffff;\n  }\n  if (1 < param_5) {\n    return 0xffffffffffffffff;\n  }\n  if (param_5 == 0) {\n    param_1[0x16] = 0;\n    uVar3 = param_4 - param_1[3];\n    param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);\n    uVar6 = uVar3;\n    if (uVar8 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }\n    uVar1 = param_1[2];\n    uVar4 = param_1[3];\n  }\n  else {\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }\nLAB_0001e09c:\n  if (param_3 != 0 || uVar6 != 0) {\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }\n  uVar4 = uVar6 + uVar4;\n  uVar8 = (uint)(uVar4 < uVar6) + param_3 + uVar1;\nLAB_0001e0c4:\n  return CONCAT44(uVar8,uVar4);\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "longlong lVar9;" type_identifier identifier ;) (if_statement "if (param_1 == (uint *)0x0) {\n    return 0xffffffffffffffff;\n  }" if (parenthesized_expression "(param_1 == (uint *)0x0)" ( (binary_expression "param_1 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0xffffffffffffffff;\n  }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) })) (expression_statement "uVar8 = param_1[4];" (assignment_expression "uVar8 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (if_statement "if ((uVar8 != 0x1c4f) && (uVar8 != 0x79b1)) {\n    return 0xffffffffffffffff;\n  }" if (parenthesized_expression "((uVar8 != 0x1c4f) && (uVar8 != 0x79b1))" ( (binary_expression "(uVar8 != 0x1c4f) && (uVar8 != 0x79b1)" (parenthesized_expression "(uVar8 != 0x1c4f)" ( (binary_expression "uVar8 != 0x1c4f" identifier != number_literal) )) && (parenthesized_expression "(uVar8 != 0x79b1)" ( (binary_expression "uVar8 != 0x79b1" identifier != number_literal) ))) )) (compound_statement "{\n    return 0xffffffffffffffff;\n  }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) })) (if_statement "if ((param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb)) {\n    return 0xffffffffffffffff;\n  }" if (parenthesized_expression "((param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb))" ( (binary_expression "(param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb)" (parenthesized_expression "(param_1[0x17] != 0)" ( (binary_expression "param_1[0x17] != 0" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(param_1[0x17] != 0xfffffffb)" ( (binary_expression "param_1[0x17] != 0xfffffffb" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n    return 0xffffffffffffffff;\n  }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) })) (if_statement "if (1 < param_5) {\n    return 0xffffffffffffffff;\n  }" if (parenthesized_expression "(1 < param_5)" ( (binary_expression "1 < param_5" number_literal < identifier) )) (compound_statement "{\n    return 0xffffffffffffffff;\n  }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) })) (if_statement "if (param_5 == 0) {\n    param_1[0x16] = 0;\n    uVar3 = param_4 - param_1[3];\n    param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);\n    uVar6 = uVar3;\n    if (uVar8 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }\n    uVar1 = param_1[2];\n    uVar4 = param_1[3];\n  }\n  else {\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n    param_1[0x16] = 0;\n    uVar3 = param_4 - param_1[3];\n    param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);\n    uVar6 = uVar3;\n    if (uVar8 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }\n    uVar1 = param_1[2];\n    uVar4 = param_1[3];\n  }" { (expression_statement "param_1[0x16] = 0;" (assignment_expression "param_1[0x16] = 0" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar3 = param_4 - param_1[3];" (assignment_expression "uVar3 = param_4 - param_1[3]" identifier = (binary_expression "param_4 - param_1[3]" identifier - (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (expression_statement "param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);" (assignment_expression "param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3)" identifier = (binary_expression "(param_3 - param_1[2]) - (uint)(param_4 < uVar3)" (parenthesized_expression "(param_3 - param_1[2])" ( (binary_expression "param_3 - param_1[2]" identifier - (subscript_expression "param_1[2]" identifier [ number_literal ])) )) - (call_expression "(uint)(param_4 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 < uVar3)" ( (binary_expression "param_4 < uVar3" identifier < identifier) ))))) ;) (expression_statement "uVar6 = uVar3;" (assignment_expression "uVar6 = uVar3" identifier = identifier) ;) (if_statement "if (uVar8 == 0x1c4f) goto LAB_0001e134;" if (parenthesized_expression "(uVar8 == 0x1c4f)" ( (binary_expression "uVar8 == 0x1c4f" identifier == number_literal) )) (goto_statement "goto LAB_0001e134;" goto statement_identifier ;)) (labeled_statement "LAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }" statement_identifier : (if_statement "if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      return 0xffffffffffffffff;\n    }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) }))) (expression_statement "uVar1 = param_1[2];" (assignment_expression "uVar1 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_1[3];" (assignment_expression "uVar4 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }" else (compound_statement "{\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }" { (expression_statement "uVar3 = param_4;" (assignment_expression "uVar3 = param_4" identifier = identifier) ;) (if_statement "if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }" if (parenthesized_expression "(param_1[0x16] != 0)" ( (binary_expression "param_1[0x16] != 0" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }" { (expression_statement "uVar3 = param_4 + param_1[0x15];" (assignment_expression "uVar3 = param_4 + param_1[0x15]" identifier = (binary_expression "param_4 + param_1[0x15]" identifier + (subscript_expression "param_1[0x15]" identifier [ number_literal ]))) ;) (expression_statement "param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];" (assignment_expression "param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14]" identifier = (binary_expression "(uint)(uVar3 < param_4) + param_3 + param_1[0x14]" (binary_expression "(uint)(uVar3 < param_4) + param_3" (call_expression "(uint)(uVar3 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < param_4)" ( (binary_expression "uVar3 < param_4" identifier < identifier) ))) + identifier) + (subscript_expression "param_1[0x14]" identifier [ number_literal ]))) ;) })) (expression_statement "param_1[0x16] = 0;" (assignment_expression "param_1[0x16] = 0" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar6 = uVar3;" (assignment_expression "uVar6 = uVar3" identifier = identifier) ;) (if_statement "if (uVar8 != 0x1c4f) goto LAB_0001e08c;" if (parenthesized_expression "(uVar8 != 0x1c4f)" ( (binary_expression "uVar8 != 0x1c4f" identifier != number_literal) )) (goto_statement "goto LAB_0001e08c;" goto statement_identifier ;)) (labeled_statement "LAB_0001e134:\n    uVar1 = param_1[2];" statement_identifier : (expression_statement "uVar1 = param_1[2];" (assignment_expression "uVar1 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;)) (expression_statement "uVar5 = param_1[3];" (assignment_expression "uVar5 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (if_statement "if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }" if (parenthesized_expression "(param_1[0xc] == 1)" ( (binary_expression "param_1[0xc] == 1" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }" { (expression_statement "uVar8 = (uint)(uVar3 + uVar5 < uVar3);" (assignment_expression "uVar8 = (uint)(uVar3 + uVar5 < uVar3)" identifier = (call_expression "(uint)(uVar3 + uVar5 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 + uVar5 < uVar3)" ( (binary_expression "uVar3 + uVar5 < uVar3" (binary_expression "uVar3 + uVar5" identifier + identifier) < identifier) )))) ;) (if_statement "if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }" if (parenthesized_expression "(-1 < (int)(uVar8 + param_3 + uVar1))" ( (binary_expression "-1 < (int)(uVar8 + param_3 + uVar1)" number_literal < (cast_expression "(int)(uVar8 + param_3 + uVar1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar8 + param_3 + uVar1)" ( (binary_expression "uVar8 + param_3 + uVar1" (binary_expression "uVar8 + param_3" identifier + identifier) + identifier) )))) )) (compound_statement "{\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }" { (expression_statement "lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;" (assignment_expression "lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)" identifier = (call_expression "(*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)" (parenthesized_expression "(*(code *)PTR_lseek64_000360dc)" ( (pointer_expression "*(code *)PTR_lseek64_000360dc" * (cast_expression "(code *)PTR_lseek64_000360dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)" ( (subscript_expression "param_1[5]" identifier [ number_literal ]) , identifier , (binary_expression "param_3 - (uVar3 < uVar3 - *param_1)" identifier - (parenthesized_expression "(uVar3 < uVar3 - *param_1)" ( (binary_expression "uVar3 < uVar3 - *param_1" identifier < (binary_expression "uVar3 - *param_1" identifier - (pointer_expression "*param_1" * identifier))) ))) , (binary_expression "uVar3 - *param_1" identifier - (pointer_expression "*param_1" * identifier)) , number_literal )))) ;) (if_statement "if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }" if (parenthesized_expression "(lVar9 == -1)" ( (binary_expression "lVar9 == -1" identifier == number_literal) )) (compound_statement "{\n          return 0xffffffffffffffff;\n        }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) })) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x11] = 0;" (assignment_expression "param_1[0x11] = 0" (subscript_expression "param_1[0x11]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x16] = 0;" (assignment_expression "param_1[0x16] = 0" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }" if (parenthesized_expression "(param_1[0x18] != 0)" ( (binary_expression "param_1[0x18] != 0" (subscript_expression "param_1[0x18]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }" { (if_statement "if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }" if (parenthesized_expression "(param_1[0x17] != 0xfffffffc)" ( (binary_expression "param_1[0x17] != 0xfffffffc" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            (*(code *)PTR_free_00036104)();\n          }" { (expression_statement "(*(code *)PTR_free_00036104)();" (call_expression "(*(code *)PTR_free_00036104)()" (parenthesized_expression "(*(code *)PTR_free_00036104)" ( (pointer_expression "*(code *)PTR_free_00036104" * (cast_expression "(code *)PTR_free_00036104" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "param_1[0x18] = 0;" (assignment_expression "param_1[0x18] = 0" (subscript_expression "param_1[0x18]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "param_1[0x17] = 0;" (assignment_expression "param_1[0x17] = 0" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar4 = uVar3 + param_1[3];" (assignment_expression "uVar4 = uVar3 + param_1[3]" identifier = (binary_expression "uVar3 + param_1[3]" identifier + (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (expression_statement "param_1[0x1a] = 0;" (assignment_expression "param_1[0x1a] = 0" (subscript_expression "param_1[0x1a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[3] = uVar4;" (assignment_expression "param_1[3] = uVar4" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];" (assignment_expression "uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2]" identifier = (binary_expression "(uint)(uVar4 < uVar3) + param_3 + param_1[2]" (binary_expression "(uint)(uVar4 < uVar3) + param_3" (call_expression "(uint)(uVar4 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < uVar3)" ( (binary_expression "uVar4 < uVar3" identifier < identifier) ))) + identifier) + (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "param_1[2] = uVar8;" (assignment_expression "param_1[2] = uVar8" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_0001e0c4;" goto statement_identifier ;) })) (if_statement "if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        return 0xffffffffffffffff;\n      }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) })) }) (else_clause "else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }" else (if_statement "if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }" { (expression_statement "uVar6 = uVar3 + uVar5;" (assignment_expression "uVar6 = uVar3 + uVar5" identifier = (binary_expression "uVar3 + uVar5" identifier + identifier)) ;) (expression_statement "param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;" (assignment_expression "param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1" identifier = (binary_expression "(uint)(uVar6 < uVar3) + param_3 + uVar1" (binary_expression "(uint)(uVar6 < uVar3) + param_3" (call_expression "(uint)(uVar6 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < uVar3)" ( (binary_expression "uVar6 < uVar3" identifier < identifier) ))) + identifier) + identifier)) ;) (if_statement "if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        return 0xffffffffffffffff;\n      }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) })) (expression_statement "iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);" (assignment_expression "iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1)" identifier = (call_expression "(*(code *)PTR_gzrewind_00036090)(param_1)" (parenthesized_expression "(*(code *)PTR_gzrewind_00036090)" ( (pointer_expression "*(code *)PTR_gzrewind_00036090" * (cast_expression "(code *)PTR_gzrewind_00036090" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0xffffffffffffffff;\n      }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) })) (expression_statement "uVar1 = param_1[2];" (assignment_expression "uVar1 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_1[3];" (assignment_expression "uVar4 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" identifier = identifier) ;) (expression_statement "uVar3 = uVar6;" (assignment_expression "uVar3 = uVar6" identifier = identifier) ;) (if_statement "if (param_1[4] != uVar8) goto LAB_0001e09c;" if (parenthesized_expression "(param_1[4] != uVar8)" ( (binary_expression "param_1[4] != uVar8" (subscript_expression "param_1[4]" identifier [ number_literal ]) != identifier) )) (goto_statement "goto LAB_0001e09c;" goto statement_identifier ;)) })))) (expression_statement "uVar7 = *param_1;" (assignment_expression "uVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }" if (parenthesized_expression "(((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7))))" ( (binary_expression "((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))" (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))" ( (parenthesized_expression "(uVar6 = 0, param_3 == 0 && (uVar3 < uVar7))" ( (comma_expression "uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)" (assignment_expression "uVar6 = 0" identifier = number_literal) , (binary_expression "param_3 == 0 && (uVar3 < uVar7)" (binary_expression "param_3 == 0" identifier == number_literal) && (parenthesized_expression "(uVar3 < uVar7)" ( (binary_expression "uVar3 < uVar7" identifier < identifier) )))) )) ))) )) (compound_statement "{\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }" { (expression_statement "uVar6 = uVar7 - uVar3;" (assignment_expression "uVar6 = uVar7 - uVar3" identifier = (binary_expression "uVar7 - uVar3" identifier - identifier)) ;) (expression_statement "uVar8 = param_3;" (assignment_expression "uVar8 = param_3" identifier = identifier) ;) (expression_statement "uVar7 = uVar3;" (assignment_expression "uVar7 = uVar3" identifier = identifier) ;) })) (expression_statement "uVar4 = uVar5 + uVar7;" (assignment_expression "uVar4 = uVar5 + uVar7" identifier = (binary_expression "uVar5 + uVar7" identifier + identifier)) ;) (expression_statement "*param_1 = uVar6;" (assignment_expression "*param_1 = uVar6" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "uVar6 = uVar3 - uVar7;" (assignment_expression "uVar6 = uVar3 - uVar7" identifier = (binary_expression "uVar3 - uVar7" identifier - identifier)) ;) (expression_statement "param_1[3] = uVar4;" (assignment_expression "param_1[3] = uVar4" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;" (assignment_expression "uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8" identifier = (binary_expression "(uint)(uVar4 < uVar5) + uVar1 + uVar8" (binary_expression "(uint)(uVar4 < uVar5) + uVar1" (call_expression "(uint)(uVar4 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < uVar5)" ( (binary_expression "uVar4 < uVar5" identifier < identifier) ))) + identifier) + identifier)) ;) (expression_statement "param_1[2] = uVar1;" (assignment_expression "param_1[2] = uVar1" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);" (assignment_expression "param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6)" identifier = (binary_expression "(param_3 - uVar8) - (uint)(uVar3 < uVar6)" (parenthesized_expression "(param_3 - uVar8)" ( (binary_expression "param_3 - uVar8" identifier - identifier) )) - (call_expression "(uint)(uVar3 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < uVar6)" ( (binary_expression "uVar3 < uVar6" identifier < identifier) ))))) ;) (expression_statement "param_1[1] = param_1[1] + uVar7;" (assignment_expression "param_1[1] = param_1[1] + uVar7" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "param_1[1] + uVar7" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier)) ;) }))) (labeled_statement "LAB_0001e09c:\n  if (param_3 != 0 || uVar6 != 0) {\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }" statement_identifier : (if_statement "if (param_3 != 0 || uVar6 != 0) {\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }" if (parenthesized_expression "(param_3 != 0 || uVar6 != 0)" ( (binary_expression "param_3 != 0 || uVar6 != 0" (binary_expression "param_3 != 0" identifier != number_literal) || (binary_expression "uVar6 != 0" identifier != number_literal)) )) (compound_statement "{\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }" { (expression_statement "param_1[0x14] = param_3;" (assignment_expression "param_1[0x14] = param_3" (subscript_expression "param_1[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0x15] = uVar6;" (assignment_expression "param_1[0x15] = uVar6" (subscript_expression "param_1[0x15]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0x16] = 1;" (assignment_expression "param_1[0x16] = 1" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) = number_literal) ;) }))) (expression_statement "uVar4 = uVar6 + uVar4;" (assignment_expression "uVar4 = uVar6 + uVar4" identifier = (binary_expression "uVar6 + uVar4" identifier + identifier)) ;) (expression_statement "uVar8 = (uint)(uVar4 < uVar6) + param_3 + uVar1;" (assignment_expression "uVar8 = (uint)(uVar4 < uVar6) + param_3 + uVar1" identifier = (binary_expression "(uint)(uVar4 < uVar6) + param_3 + uVar1" (binary_expression "(uint)(uVar4 < uVar6) + param_3" (call_expression "(uint)(uVar4 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < uVar6)" ( (binary_expression "uVar4 < uVar6" identifier < identifier) ))) + identifier) + identifier)) ;) (labeled_statement "LAB_0001e0c4:\n  return CONCAT44(uVar8,uVar4);" statement_identifier : (return_statement "return CONCAT44(uVar8,uVar4);" return (call_expression "CONCAT44(uVar8,uVar4)" identifier (argument_list "(uVar8,uVar4)" ( identifier , identifier ))) ;)) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\noff64_t gzseek64(gzFile file,off64_t offset,int whence)\n\n{\n  off64_t oVar1;\n  int iVar2;\n  uchar *puVar3;\n  uchar *puVar4;\n  uchar *puVar5;\n  uchar *puVar6;\n  uint in_a2;\n  uchar *puVar7;\n  uchar *in_a3;\n  uint uVar8;\n  uint uVar9;\n  longlong lVar10;\n  \n  if (file == (gzFile)0x0) {\n    return -1;\n  }\n  uVar9 = file[1].have;\n  if ((uVar9 != 0x1c4f) && (uVar9 != 0x79b1)) {\n    return -1;\n  }\n  iVar2 = (int)file[5].pos;\n  if ((iVar2 != 0) && (iVar2 != -5)) {\n    return -1;\n  }\n  if (1 < offset._0_4_) {\n    return -1;\n  }\n  if (offset._0_4_ == 0) {\n    *(undefined4 *)&file[5].pos = 0;\n    puVar3 = in_a3 + -(int)file->pos;\n    in_a2 = (in_a2 - *(int *)&file->pos) - (uint)(in_a3 < puVar3);\n    puVar6 = puVar3;\n    if (uVar9 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)in_a2 < 0) {\n      return -1;\n    }\n    iVar2 = *(int *)&file->pos;\n    puVar4 = *(uchar **)((int)&file->pos + 4);\n  }\n  else {\n    puVar3 = in_a3;\n    if (*(int *)&file[5].pos != 0) {\n      puVar3 = in_a3 + (int)file[5].next;\n      in_a2 = (uint)(puVar3 < in_a3) + in_a2 + file[5].have;\n    }\n    *(undefined4 *)&file[5].pos = 0;\n    puVar6 = puVar3;\n    if (uVar9 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    iVar2 = *(int *)&file->pos;\n    puVar5 = *(uchar **)((int)&file->pos + 4);\n    if (file[3].have == 1) {\n      if (-1 < (int)((uint)(puVar3 + (int)puVar5 < puVar3) + in_a2 + iVar2)) {\n        lVar10 = (*(code *)PTR_lseek64_000360dc)\n                           (file[1].next,(uint)(puVar3 + (int)puVar5 < puVar3),\n                            in_a2 - (puVar3 < puVar3 + -file->have),puVar3 + -file->have,1);\n        if (lVar10 == -1) {\n          return -1;\n        }\n        uVar9 = file[6].have;\n        file->have = 0;\n        file[4].have = 0;\n        file[4].next = (uchar *)0x0;\n        *(undefined4 *)&file[5].pos = 0;\n        if (uVar9 != 0) {\n          if ((int)file[5].pos != -4) {\n            (*(code *)PTR_free_00036104)();\n          }\n          file[6].have = 0;\n        }\n        oVar1 = file->pos;\n        iVar2 = *(int *)&file->pos;\n        *(undefined4 *)((int)&file[5].pos + 4) = 0;\n        puVar4 = puVar3 + (int)oVar1;\n        *(undefined4 *)&file[6].pos = 0;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        iVar2 = (uint)(puVar4 < puVar3) + in_a2 + iVar2;\n        *(int *)&file->pos = iVar2;\n        goto LAB_0001e0c4;\n      }\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n    }\n    else if ((int)in_a2 < 0) {\n      puVar6 = puVar3 + (int)puVar5;\n      in_a2 = (uint)(puVar6 < puVar3) + in_a2 + iVar2;\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(file);\n      if (iVar2 == -1) {\n        return -1;\n      }\n      iVar2 = *(int *)&file->pos;\n      puVar4 = *(uchar **)((int)&file->pos + 4);\n      puVar5 = puVar4;\n      puVar3 = puVar6;\n      if (file[1].have != uVar9) goto LAB_0001e09c;\n    }\n    puVar7 = (uchar *)file->have;\n    uVar9 = 0;\n    if (((int)in_a2 < 0) || ((uVar8 = 0, in_a2 == 0 && (puVar3 < puVar7)))) {\n      uVar8 = (int)puVar7 - (int)puVar3;\n      uVar9 = in_a2;\n      puVar7 = puVar3;\n    }\n    puVar4 = puVar5 + (int)puVar7;\n    file->have = uVar8;\n    puVar6 = puVar3 + -(int)puVar7;\n    *(uchar **)((int)&file->pos + 4) = puVar4;\n    iVar2 = (uint)(puVar4 < puVar5) + iVar2 + uVar9;\n    *(int *)&file->pos = iVar2;\n    in_a2 = (in_a2 - uVar9) - (uint)(puVar3 < puVar6);\n    file->next = file->next + (int)puVar7;\n  }\nLAB_0001e09c:\n  if (in_a2 != 0 || puVar6 != (uchar *)0x0) {\n    file[5].have = in_a2;\n    file[5].next = puVar6;\n    *(undefined4 *)&file[5].pos = 1;\n  }\n  puVar4 = puVar6 + (int)puVar4;\n  iVar2 = (uint)(puVar4 < puVar6) + in_a2 + iVar2;\nLAB_0001e0c4:\n  return CONCAT44(iVar2,puVar4);\n}\n\n" comment (function_definition "off64_t gzseek64(gzFile file,off64_t offset,int whence)\n\n{\n  off64_t oVar1;\n  int iVar2;\n  uchar *puVar3;\n  uchar *puVar4;\n  uchar *puVar5;\n  uchar *puVar6;\n  uint in_a2;\n  uchar *puVar7;\n  uchar *in_a3;\n  uint uVar8;\n  uint uVar9;\n  longlong lVar10;\n  \n  if (file == (gzFile)0x0) {\n    return -1;\n  }\n  uVar9 = file[1].have;\n  if ((uVar9 != 0x1c4f) && (uVar9 != 0x79b1)) {\n    return -1;\n  }\n  iVar2 = (int)file[5].pos;\n  if ((iVar2 != 0) && (iVar2 != -5)) {\n    return -1;\n  }\n  if (1 < offset._0_4_) {\n    return -1;\n  }\n  if (offset._0_4_ == 0) {\n    *(undefined4 *)&file[5].pos = 0;\n    puVar3 = in_a3 + -(int)file->pos;\n    in_a2 = (in_a2 - *(int *)&file->pos) - (uint)(in_a3 < puVar3);\n    puVar6 = puVar3;\n    if (uVar9 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)in_a2 < 0) {\n      return -1;\n    }\n    iVar2 = *(int *)&file->pos;\n    puVar4 = *(uchar **)((int)&file->pos + 4);\n  }\n  else {\n    puVar3 = in_a3;\n    if (*(int *)&file[5].pos != 0) {\n      puVar3 = in_a3 + (int)file[5].next;\n      in_a2 = (uint)(puVar3 < in_a3) + in_a2 + file[5].have;\n    }\n    *(undefined4 *)&file[5].pos = 0;\n    puVar6 = puVar3;\n    if (uVar9 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    iVar2 = *(int *)&file->pos;\n    puVar5 = *(uchar **)((int)&file->pos + 4);\n    if (file[3].have == 1) {\n      if (-1 < (int)((uint)(puVar3 + (int)puVar5 < puVar3) + in_a2 + iVar2)) {\n        lVar10 = (*(code *)PTR_lseek64_000360dc)\n                           (file[1].next,(uint)(puVar3 + (int)puVar5 < puVar3),\n                            in_a2 - (puVar3 < puVar3 + -file->have),puVar3 + -file->have,1);\n        if (lVar10 == -1) {\n          return -1;\n        }\n        uVar9 = file[6].have;\n        file->have = 0;\n        file[4].have = 0;\n        file[4].next = (uchar *)0x0;\n        *(undefined4 *)&file[5].pos = 0;\n        if (uVar9 != 0) {\n          if ((int)file[5].pos != -4) {\n            (*(code *)PTR_free_00036104)();\n          }\n          file[6].have = 0;\n        }\n        oVar1 = file->pos;\n        iVar2 = *(int *)&file->pos;\n        *(undefined4 *)((int)&file[5].pos + 4) = 0;\n        puVar4 = puVar3 + (int)oVar1;\n        *(undefined4 *)&file[6].pos = 0;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        iVar2 = (uint)(puVar4 < puVar3) + in_a2 + iVar2;\n        *(int *)&file->pos = iVar2;\n        goto LAB_0001e0c4;\n      }\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n    }\n    else if ((int)in_a2 < 0) {\n      puVar6 = puVar3 + (int)puVar5;\n      in_a2 = (uint)(puVar6 < puVar3) + in_a2 + iVar2;\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(file);\n      if (iVar2 == -1) {\n        return -1;\n      }\n      iVar2 = *(int *)&file->pos;\n      puVar4 = *(uchar **)((int)&file->pos + 4);\n      puVar5 = puVar4;\n      puVar3 = puVar6;\n      if (file[1].have != uVar9) goto LAB_0001e09c;\n    }\n    puVar7 = (uchar *)file->have;\n    uVar9 = 0;\n    if (((int)in_a2 < 0) || ((uVar8 = 0, in_a2 == 0 && (puVar3 < puVar7)))) {\n      uVar8 = (int)puVar7 - (int)puVar3;\n      uVar9 = in_a2;\n      puVar7 = puVar3;\n    }\n    puVar4 = puVar5 + (int)puVar7;\n    file->have = uVar8;\n    puVar6 = puVar3 + -(int)puVar7;\n    *(uchar **)((int)&file->pos + 4) = puVar4;\n    iVar2 = (uint)(puVar4 < puVar5) + iVar2 + uVar9;\n    *(int *)&file->pos = iVar2;\n    in_a2 = (in_a2 - uVar9) - (uint)(puVar3 < puVar6);\n    file->next = file->next + (int)puVar7;\n  }\nLAB_0001e09c:\n  if (in_a2 != 0 || puVar6 != (uchar *)0x0) {\n    file[5].have = in_a2;\n    file[5].next = puVar6;\n    *(undefined4 *)&file[5].pos = 1;\n  }\n  puVar4 = puVar6 + (int)puVar4;\n  iVar2 = (uint)(puVar4 < puVar6) + in_a2 + iVar2;\nLAB_0001e0c4:\n  return CONCAT44(iVar2,puVar4);\n}" type_identifier (function_declarator "gzseek64(gzFile file,off64_t offset,int whence)" identifier (parameter_list "(gzFile file,off64_t offset,int whence)" ( (parameter_declaration "gzFile file" type_identifier identifier) , (parameter_declaration "off64_t offset" type_identifier identifier) , (parameter_declaration "int whence" primitive_type identifier) ))) (compound_statement "{\n  off64_t oVar1;\n  int iVar2;\n  uchar *puVar3;\n  uchar *puVar4;\n  uchar *puVar5;\n  uchar *puVar6;\n  uint in_a2;\n  uchar *puVar7;\n  uchar *in_a3;\n  uint uVar8;\n  uint uVar9;\n  longlong lVar10;\n  \n  if (file == (gzFile)0x0) {\n    return -1;\n  }\n  uVar9 = file[1].have;\n  if ((uVar9 != 0x1c4f) && (uVar9 != 0x79b1)) {\n    return -1;\n  }\n  iVar2 = (int)file[5].pos;\n  if ((iVar2 != 0) && (iVar2 != -5)) {\n    return -1;\n  }\n  if (1 < offset._0_4_) {\n    return -1;\n  }\n  if (offset._0_4_ == 0) {\n    *(undefined4 *)&file[5].pos = 0;\n    puVar3 = in_a3 + -(int)file->pos;\n    in_a2 = (in_a2 - *(int *)&file->pos) - (uint)(in_a3 < puVar3);\n    puVar6 = puVar3;\n    if (uVar9 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)in_a2 < 0) {\n      return -1;\n    }\n    iVar2 = *(int *)&file->pos;\n    puVar4 = *(uchar **)((int)&file->pos + 4);\n  }\n  else {\n    puVar3 = in_a3;\n    if (*(int *)&file[5].pos != 0) {\n      puVar3 = in_a3 + (int)file[5].next;\n      in_a2 = (uint)(puVar3 < in_a3) + in_a2 + file[5].have;\n    }\n    *(undefined4 *)&file[5].pos = 0;\n    puVar6 = puVar3;\n    if (uVar9 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    iVar2 = *(int *)&file->pos;\n    puVar5 = *(uchar **)((int)&file->pos + 4);\n    if (file[3].have == 1) {\n      if (-1 < (int)((uint)(puVar3 + (int)puVar5 < puVar3) + in_a2 + iVar2)) {\n        lVar10 = (*(code *)PTR_lseek64_000360dc)\n                           (file[1].next,(uint)(puVar3 + (int)puVar5 < puVar3),\n                            in_a2 - (puVar3 < puVar3 + -file->have),puVar3 + -file->have,1);\n        if (lVar10 == -1) {\n          return -1;\n        }\n        uVar9 = file[6].have;\n        file->have = 0;\n        file[4].have = 0;\n        file[4].next = (uchar *)0x0;\n        *(undefined4 *)&file[5].pos = 0;\n        if (uVar9 != 0) {\n          if ((int)file[5].pos != -4) {\n            (*(code *)PTR_free_00036104)();\n          }\n          file[6].have = 0;\n        }\n        oVar1 = file->pos;\n        iVar2 = *(int *)&file->pos;\n        *(undefined4 *)((int)&file[5].pos + 4) = 0;\n        puVar4 = puVar3 + (int)oVar1;\n        *(undefined4 *)&file[6].pos = 0;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        iVar2 = (uint)(puVar4 < puVar3) + in_a2 + iVar2;\n        *(int *)&file->pos = iVar2;\n        goto LAB_0001e0c4;\n      }\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n    }\n    else if ((int)in_a2 < 0) {\n      puVar6 = puVar3 + (int)puVar5;\n      in_a2 = (uint)(puVar6 < puVar3) + in_a2 + iVar2;\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(file);\n      if (iVar2 == -1) {\n        return -1;\n      }\n      iVar2 = *(int *)&file->pos;\n      puVar4 = *(uchar **)((int)&file->pos + 4);\n      puVar5 = puVar4;\n      puVar3 = puVar6;\n      if (file[1].have != uVar9) goto LAB_0001e09c;\n    }\n    puVar7 = (uchar *)file->have;\n    uVar9 = 0;\n    if (((int)in_a2 < 0) || ((uVar8 = 0, in_a2 == 0 && (puVar3 < puVar7)))) {\n      uVar8 = (int)puVar7 - (int)puVar3;\n      uVar9 = in_a2;\n      puVar7 = puVar3;\n    }\n    puVar4 = puVar5 + (int)puVar7;\n    file->have = uVar8;\n    puVar6 = puVar3 + -(int)puVar7;\n    *(uchar **)((int)&file->pos + 4) = puVar4;\n    iVar2 = (uint)(puVar4 < puVar5) + iVar2 + uVar9;\n    *(int *)&file->pos = iVar2;\n    in_a2 = (in_a2 - uVar9) - (uint)(puVar3 < puVar6);\n    file->next = file->next + (int)puVar7;\n  }\nLAB_0001e09c:\n  if (in_a2 != 0 || puVar6 != (uchar *)0x0) {\n    file[5].have = in_a2;\n    file[5].next = puVar6;\n    *(undefined4 *)&file[5].pos = 1;\n  }\n  puVar4 = puVar6 + (int)puVar4;\n  iVar2 = (uint)(puVar4 < puVar6) + in_a2 + iVar2;\nLAB_0001e0c4:\n  return CONCAT44(iVar2,puVar4);\n}" { (declaration "off64_t oVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uchar *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uchar *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uchar *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uchar *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint in_a2;" type_identifier identifier ;) (declaration "uchar *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uchar *in_a3;" type_identifier (pointer_declarator "*in_a3" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "longlong lVar10;" type_identifier identifier ;) (if_statement "if (file == (gzFile)0x0) {\n    return -1;\n  }" if (parenthesized_expression "(file == (gzFile)0x0)" ( (binary_expression "file == (gzFile)0x0" identifier == (cast_expression "(gzFile)0x0" ( (type_descriptor "gzFile" type_identifier) ) number_literal)) )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "uVar9 = file[1].have;" (assignment_expression "uVar9 = file[1].have" identifier = (field_expression "file[1].have" (subscript_expression "file[1]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if ((uVar9 != 0x1c4f) && (uVar9 != 0x79b1)) {\n    return -1;\n  }" if (parenthesized_expression "((uVar9 != 0x1c4f) && (uVar9 != 0x79b1))" ( (binary_expression "(uVar9 != 0x1c4f) && (uVar9 != 0x79b1)" (parenthesized_expression "(uVar9 != 0x1c4f)" ( (binary_expression "uVar9 != 0x1c4f" identifier != number_literal) )) && (parenthesized_expression "(uVar9 != 0x79b1)" ( (binary_expression "uVar9 != 0x79b1" identifier != number_literal) ))) )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "iVar2 = (int)file[5].pos;" (assignment_expression "iVar2 = (int)file[5].pos" identifier = (cast_expression "(int)file[5].pos" ( (type_descriptor "int" primitive_type) ) (field_expression "file[5].pos" (subscript_expression "file[5]" identifier [ number_literal ]) . field_identifier))) ;) (if_statement "if ((iVar2 != 0) && (iVar2 != -5)) {\n    return -1;\n  }" if (parenthesized_expression "((iVar2 != 0) && (iVar2 != -5))" ( (binary_expression "(iVar2 != 0) && (iVar2 != -5)" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar2 != -5)" ( (binary_expression "iVar2 != -5" identifier != number_literal) ))) )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (1 < offset._0_4_) {\n    return -1;\n  }" if (parenthesized_expression "(1 < offset._0_4_)" ( (binary_expression "1 < offset._0_4_" number_literal < (field_expression "offset._0_4_" identifier . field_identifier)) )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (offset._0_4_ == 0) {\n    *(undefined4 *)&file[5].pos = 0;\n    puVar3 = in_a3 + -(int)file->pos;\n    in_a2 = (in_a2 - *(int *)&file->pos) - (uint)(in_a3 < puVar3);\n    puVar6 = puVar3;\n    if (uVar9 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)in_a2 < 0) {\n      return -1;\n    }\n    iVar2 = *(int *)&file->pos;\n    puVar4 = *(uchar **)((int)&file->pos + 4);\n  }\n  else {\n    puVar3 = in_a3;\n    if (*(int *)&file[5].pos != 0) {\n      puVar3 = in_a3 + (int)file[5].next;\n      in_a2 = (uint)(puVar3 < in_a3) + in_a2 + file[5].have;\n    }\n    *(undefined4 *)&file[5].pos = 0;\n    puVar6 = puVar3;\n    if (uVar9 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    iVar2 = *(int *)&file->pos;\n    puVar5 = *(uchar **)((int)&file->pos + 4);\n    if (file[3].have == 1) {\n      if (-1 < (int)((uint)(puVar3 + (int)puVar5 < puVar3) + in_a2 + iVar2)) {\n        lVar10 = (*(code *)PTR_lseek64_000360dc)\n                           (file[1].next,(uint)(puVar3 + (int)puVar5 < puVar3),\n                            in_a2 - (puVar3 < puVar3 + -file->have),puVar3 + -file->have,1);\n        if (lVar10 == -1) {\n          return -1;\n        }\n        uVar9 = file[6].have;\n        file->have = 0;\n        file[4].have = 0;\n        file[4].next = (uchar *)0x0;\n        *(undefined4 *)&file[5].pos = 0;\n        if (uVar9 != 0) {\n          if ((int)file[5].pos != -4) {\n            (*(code *)PTR_free_00036104)();\n          }\n          file[6].have = 0;\n        }\n        oVar1 = file->pos;\n        iVar2 = *(int *)&file->pos;\n        *(undefined4 *)((int)&file[5].pos + 4) = 0;\n        puVar4 = puVar3 + (int)oVar1;\n        *(undefined4 *)&file[6].pos = 0;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        iVar2 = (uint)(puVar4 < puVar3) + in_a2 + iVar2;\n        *(int *)&file->pos = iVar2;\n        goto LAB_0001e0c4;\n      }\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n    }\n    else if ((int)in_a2 < 0) {\n      puVar6 = puVar3 + (int)puVar5;\n      in_a2 = (uint)(puVar6 < puVar3) + in_a2 + iVar2;\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(file);\n      if (iVar2 == -1) {\n        return -1;\n      }\n      iVar2 = *(int *)&file->pos;\n      puVar4 = *(uchar **)((int)&file->pos + 4);\n      puVar5 = puVar4;\n      puVar3 = puVar6;\n      if (file[1].have != uVar9) goto LAB_0001e09c;\n    }\n    puVar7 = (uchar *)file->have;\n    uVar9 = 0;\n    if (((int)in_a2 < 0) || ((uVar8 = 0, in_a2 == 0 && (puVar3 < puVar7)))) {\n      uVar8 = (int)puVar7 - (int)puVar3;\n      uVar9 = in_a2;\n      puVar7 = puVar3;\n    }\n    puVar4 = puVar5 + (int)puVar7;\n    file->have = uVar8;\n    puVar6 = puVar3 + -(int)puVar7;\n    *(uchar **)((int)&file->pos + 4) = puVar4;\n    iVar2 = (uint)(puVar4 < puVar5) + iVar2 + uVar9;\n    *(int *)&file->pos = iVar2;\n    in_a2 = (in_a2 - uVar9) - (uint)(puVar3 < puVar6);\n    file->next = file->next + (int)puVar7;\n  }" if (parenthesized_expression "(offset._0_4_ == 0)" ( (binary_expression "offset._0_4_ == 0" (field_expression "offset._0_4_" identifier . field_identifier) == number_literal) )) (compound_statement "{\n    *(undefined4 *)&file[5].pos = 0;\n    puVar3 = in_a3 + -(int)file->pos;\n    in_a2 = (in_a2 - *(int *)&file->pos) - (uint)(in_a3 < puVar3);\n    puVar6 = puVar3;\n    if (uVar9 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)in_a2 < 0) {\n      return -1;\n    }\n    iVar2 = *(int *)&file->pos;\n    puVar4 = *(uchar **)((int)&file->pos + 4);\n  }" { (expression_statement "*(undefined4 *)&file[5].pos = 0;" (assignment_expression "*(undefined4 *)&file[5].pos = 0" (pointer_expression "*(undefined4 *)&file[5].pos" * (cast_expression "(undefined4 *)&file[5].pos" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file[5].pos" & (field_expression "file[5].pos" (subscript_expression "file[5]" identifier [ number_literal ]) . field_identifier)))) = number_literal) ;) (expression_statement "puVar3 = in_a3 + -(int)file->pos;" (assignment_expression "puVar3 = in_a3 + -(int)file->pos" identifier = (binary_expression "in_a3 + -(int)file->pos" identifier + (unary_expression "-(int)file->pos" - (cast_expression "(int)file->pos" ( (type_descriptor "int" primitive_type) ) (field_expression "file->pos" identifier -> field_identifier))))) ;) (expression_statement "in_a2 = (in_a2 - *(int *)&file->pos) - (uint)(in_a3 < puVar3);" (assignment_expression "in_a2 = (in_a2 - *(int *)&file->pos) - (uint)(in_a3 < puVar3)" identifier = (binary_expression "(in_a2 - *(int *)&file->pos) - (uint)(in_a3 < puVar3)" (parenthesized_expression "(in_a2 - *(int *)&file->pos)" ( (binary_expression "in_a2 - *(int *)&file->pos" identifier - (pointer_expression "*(int *)&file->pos" * (cast_expression "(int *)&file->pos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file->pos" & (field_expression "file->pos" identifier -> field_identifier))))) )) - (call_expression "(uint)(in_a3 < puVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(in_a3 < puVar3)" ( (binary_expression "in_a3 < puVar3" identifier < identifier) ))))) ;) (expression_statement "puVar6 = puVar3;" (assignment_expression "puVar6 = puVar3" identifier = identifier) ;) (if_statement "if (uVar9 == 0x1c4f) goto LAB_0001e134;" if (parenthesized_expression "(uVar9 == 0x1c4f)" ( (binary_expression "uVar9 == 0x1c4f" identifier == number_literal) )) (goto_statement "goto LAB_0001e134;" goto statement_identifier ;)) (labeled_statement "LAB_0001e08c:\n    if ((int)in_a2 < 0) {\n      return -1;\n    }" statement_identifier : (if_statement "if ((int)in_a2 < 0) {\n      return -1;\n    }" if (parenthesized_expression "((int)in_a2 < 0)" ( (binary_expression "(int)in_a2 < 0" (cast_expression "(int)in_a2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) }))) (expression_statement "iVar2 = *(int *)&file->pos;" (assignment_expression "iVar2 = *(int *)&file->pos" identifier = (pointer_expression "*(int *)&file->pos" * (cast_expression "(int *)&file->pos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file->pos" & (field_expression "file->pos" identifier -> field_identifier))))) ;) (expression_statement "puVar4 = *(uchar **)((int)&file->pos + 4);" (assignment_expression "puVar4 = *(uchar **)((int)&file->pos + 4)" identifier = (pointer_expression "*(uchar **)((int)&file->pos + 4)" * (cast_expression "(uchar **)((int)&file->pos + 4)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&file->pos + 4)" ( (binary_expression "(int)&file->pos + 4" (cast_expression "(int)&file->pos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&file->pos" & (field_expression "file->pos" identifier -> field_identifier))) + number_literal) ))))) ;) }) (else_clause "else {\n    puVar3 = in_a3;\n    if (*(int *)&file[5].pos != 0) {\n      puVar3 = in_a3 + (int)file[5].next;\n      in_a2 = (uint)(puVar3 < in_a3) + in_a2 + file[5].have;\n    }\n    *(undefined4 *)&file[5].pos = 0;\n    puVar6 = puVar3;\n    if (uVar9 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    iVar2 = *(int *)&file->pos;\n    puVar5 = *(uchar **)((int)&file->pos + 4);\n    if (file[3].have == 1) {\n      if (-1 < (int)((uint)(puVar3 + (int)puVar5 < puVar3) + in_a2 + iVar2)) {\n        lVar10 = (*(code *)PTR_lseek64_000360dc)\n                           (file[1].next,(uint)(puVar3 + (int)puVar5 < puVar3),\n                            in_a2 - (puVar3 < puVar3 + -file->have),puVar3 + -file->have,1);\n        if (lVar10 == -1) {\n          return -1;\n        }\n        uVar9 = file[6].have;\n        file->have = 0;\n        file[4].have = 0;\n        file[4].next = (uchar *)0x0;\n        *(undefined4 *)&file[5].pos = 0;\n        if (uVar9 != 0) {\n          if ((int)file[5].pos != -4) {\n            (*(code *)PTR_free_00036104)();\n          }\n          file[6].have = 0;\n        }\n        oVar1 = file->pos;\n        iVar2 = *(int *)&file->pos;\n        *(undefined4 *)((int)&file[5].pos + 4) = 0;\n        puVar4 = puVar3 + (int)oVar1;\n        *(undefined4 *)&file[6].pos = 0;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        iVar2 = (uint)(puVar4 < puVar3) + in_a2 + iVar2;\n        *(int *)&file->pos = iVar2;\n        goto LAB_0001e0c4;\n      }\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n    }\n    else if ((int)in_a2 < 0) {\n      puVar6 = puVar3 + (int)puVar5;\n      in_a2 = (uint)(puVar6 < puVar3) + in_a2 + iVar2;\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(file);\n      if (iVar2 == -1) {\n        return -1;\n      }\n      iVar2 = *(int *)&file->pos;\n      puVar4 = *(uchar **)((int)&file->pos + 4);\n      puVar5 = puVar4;\n      puVar3 = puVar6;\n      if (file[1].have != uVar9) goto LAB_0001e09c;\n    }\n    puVar7 = (uchar *)file->have;\n    uVar9 = 0;\n    if (((int)in_a2 < 0) || ((uVar8 = 0, in_a2 == 0 && (puVar3 < puVar7)))) {\n      uVar8 = (int)puVar7 - (int)puVar3;\n      uVar9 = in_a2;\n      puVar7 = puVar3;\n    }\n    puVar4 = puVar5 + (int)puVar7;\n    file->have = uVar8;\n    puVar6 = puVar3 + -(int)puVar7;\n    *(uchar **)((int)&file->pos + 4) = puVar4;\n    iVar2 = (uint)(puVar4 < puVar5) + iVar2 + uVar9;\n    *(int *)&file->pos = iVar2;\n    in_a2 = (in_a2 - uVar9) - (uint)(puVar3 < puVar6);\n    file->next = file->next + (int)puVar7;\n  }" else (compound_statement "{\n    puVar3 = in_a3;\n    if (*(int *)&file[5].pos != 0) {\n      puVar3 = in_a3 + (int)file[5].next;\n      in_a2 = (uint)(puVar3 < in_a3) + in_a2 + file[5].have;\n    }\n    *(undefined4 *)&file[5].pos = 0;\n    puVar6 = puVar3;\n    if (uVar9 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    iVar2 = *(int *)&file->pos;\n    puVar5 = *(uchar **)((int)&file->pos + 4);\n    if (file[3].have == 1) {\n      if (-1 < (int)((uint)(puVar3 + (int)puVar5 < puVar3) + in_a2 + iVar2)) {\n        lVar10 = (*(code *)PTR_lseek64_000360dc)\n                           (file[1].next,(uint)(puVar3 + (int)puVar5 < puVar3),\n                            in_a2 - (puVar3 < puVar3 + -file->have),puVar3 + -file->have,1);\n        if (lVar10 == -1) {\n          return -1;\n        }\n        uVar9 = file[6].have;\n        file->have = 0;\n        file[4].have = 0;\n        file[4].next = (uchar *)0x0;\n        *(undefined4 *)&file[5].pos = 0;\n        if (uVar9 != 0) {\n          if ((int)file[5].pos != -4) {\n            (*(code *)PTR_free_00036104)();\n          }\n          file[6].have = 0;\n        }\n        oVar1 = file->pos;\n        iVar2 = *(int *)&file->pos;\n        *(undefined4 *)((int)&file[5].pos + 4) = 0;\n        puVar4 = puVar3 + (int)oVar1;\n        *(undefined4 *)&file[6].pos = 0;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        iVar2 = (uint)(puVar4 < puVar3) + in_a2 + iVar2;\n        *(int *)&file->pos = iVar2;\n        goto LAB_0001e0c4;\n      }\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n    }\n    else if ((int)in_a2 < 0) {\n      puVar6 = puVar3 + (int)puVar5;\n      in_a2 = (uint)(puVar6 < puVar3) + in_a2 + iVar2;\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(file);\n      if (iVar2 == -1) {\n        return -1;\n      }\n      iVar2 = *(int *)&file->pos;\n      puVar4 = *(uchar **)((int)&file->pos + 4);\n      puVar5 = puVar4;\n      puVar3 = puVar6;\n      if (file[1].have != uVar9) goto LAB_0001e09c;\n    }\n    puVar7 = (uchar *)file->have;\n    uVar9 = 0;\n    if (((int)in_a2 < 0) || ((uVar8 = 0, in_a2 == 0 && (puVar3 < puVar7)))) {\n      uVar8 = (int)puVar7 - (int)puVar3;\n      uVar9 = in_a2;\n      puVar7 = puVar3;\n    }\n    puVar4 = puVar5 + (int)puVar7;\n    file->have = uVar8;\n    puVar6 = puVar3 + -(int)puVar7;\n    *(uchar **)((int)&file->pos + 4) = puVar4;\n    iVar2 = (uint)(puVar4 < puVar5) + iVar2 + uVar9;\n    *(int *)&file->pos = iVar2;\n    in_a2 = (in_a2 - uVar9) - (uint)(puVar3 < puVar6);\n    file->next = file->next + (int)puVar7;\n  }" { (expression_statement "puVar3 = in_a3;" (assignment_expression "puVar3 = in_a3" identifier = identifier) ;) (if_statement "if (*(int *)&file[5].pos != 0) {\n      puVar3 = in_a3 + (int)file[5].next;\n      in_a2 = (uint)(puVar3 < in_a3) + in_a2 + file[5].have;\n    }" if (parenthesized_expression "(*(int *)&file[5].pos != 0)" ( (binary_expression "*(int *)&file[5].pos != 0" (pointer_expression "*(int *)&file[5].pos" * (cast_expression "(int *)&file[5].pos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file[5].pos" & (field_expression "file[5].pos" (subscript_expression "file[5]" identifier [ number_literal ]) . field_identifier)))) != number_literal) )) (compound_statement "{\n      puVar3 = in_a3 + (int)file[5].next;\n      in_a2 = (uint)(puVar3 < in_a3) + in_a2 + file[5].have;\n    }" { (expression_statement "puVar3 = in_a3 + (int)file[5].next;" (assignment_expression "puVar3 = in_a3 + (int)file[5].next" identifier = (binary_expression "in_a3 + (int)file[5].next" identifier + (cast_expression "(int)file[5].next" ( (type_descriptor "int" primitive_type) ) (field_expression "file[5].next" (subscript_expression "file[5]" identifier [ number_literal ]) . field_identifier)))) ;) (expression_statement "in_a2 = (uint)(puVar3 < in_a3) + in_a2 + file[5].have;" (assignment_expression "in_a2 = (uint)(puVar3 < in_a3) + in_a2 + file[5].have" identifier = (binary_expression "(uint)(puVar3 < in_a3) + in_a2 + file[5].have" (binary_expression "(uint)(puVar3 < in_a3) + in_a2" (call_expression "(uint)(puVar3 < in_a3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar3 < in_a3)" ( (binary_expression "puVar3 < in_a3" identifier < identifier) ))) + identifier) + (field_expression "file[5].have" (subscript_expression "file[5]" identifier [ number_literal ]) . field_identifier))) ;) })) (expression_statement "*(undefined4 *)&file[5].pos = 0;" (assignment_expression "*(undefined4 *)&file[5].pos = 0" (pointer_expression "*(undefined4 *)&file[5].pos" * (cast_expression "(undefined4 *)&file[5].pos" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file[5].pos" & (field_expression "file[5].pos" (subscript_expression "file[5]" identifier [ number_literal ]) . field_identifier)))) = number_literal) ;) (expression_statement "puVar6 = puVar3;" (assignment_expression "puVar6 = puVar3" identifier = identifier) ;) (if_statement "if (uVar9 != 0x1c4f) goto LAB_0001e08c;" if (parenthesized_expression "(uVar9 != 0x1c4f)" ( (binary_expression "uVar9 != 0x1c4f" identifier != number_literal) )) (goto_statement "goto LAB_0001e08c;" goto statement_identifier ;)) (labeled_statement "LAB_0001e134:\n    iVar2 = *(int *)&file->pos;" statement_identifier : (expression_statement "iVar2 = *(int *)&file->pos;" (assignment_expression "iVar2 = *(int *)&file->pos" identifier = (pointer_expression "*(int *)&file->pos" * (cast_expression "(int *)&file->pos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file->pos" & (field_expression "file->pos" identifier -> field_identifier))))) ;)) (expression_statement "puVar5 = *(uchar **)((int)&file->pos + 4);" (assignment_expression "puVar5 = *(uchar **)((int)&file->pos + 4)" identifier = (pointer_expression "*(uchar **)((int)&file->pos + 4)" * (cast_expression "(uchar **)((int)&file->pos + 4)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&file->pos + 4)" ( (binary_expression "(int)&file->pos + 4" (cast_expression "(int)&file->pos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&file->pos" & (field_expression "file->pos" identifier -> field_identifier))) + number_literal) ))))) ;) (if_statement "if (file[3].have == 1) {\n      if (-1 < (int)((uint)(puVar3 + (int)puVar5 < puVar3) + in_a2 + iVar2)) {\n        lVar10 = (*(code *)PTR_lseek64_000360dc)\n                           (file[1].next,(uint)(puVar3 + (int)puVar5 < puVar3),\n                            in_a2 - (puVar3 < puVar3 + -file->have),puVar3 + -file->have,1);\n        if (lVar10 == -1) {\n          return -1;\n        }\n        uVar9 = file[6].have;\n        file->have = 0;\n        file[4].have = 0;\n        file[4].next = (uchar *)0x0;\n        *(undefined4 *)&file[5].pos = 0;\n        if (uVar9 != 0) {\n          if ((int)file[5].pos != -4) {\n            (*(code *)PTR_free_00036104)();\n          }\n          file[6].have = 0;\n        }\n        oVar1 = file->pos;\n        iVar2 = *(int *)&file->pos;\n        *(undefined4 *)((int)&file[5].pos + 4) = 0;\n        puVar4 = puVar3 + (int)oVar1;\n        *(undefined4 *)&file[6].pos = 0;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        iVar2 = (uint)(puVar4 < puVar3) + in_a2 + iVar2;\n        *(int *)&file->pos = iVar2;\n        goto LAB_0001e0c4;\n      }\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n    }\n    else if ((int)in_a2 < 0) {\n      puVar6 = puVar3 + (int)puVar5;\n      in_a2 = (uint)(puVar6 < puVar3) + in_a2 + iVar2;\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(file);\n      if (iVar2 == -1) {\n        return -1;\n      }\n      iVar2 = *(int *)&file->pos;\n      puVar4 = *(uchar **)((int)&file->pos + 4);\n      puVar5 = puVar4;\n      puVar3 = puVar6;\n      if (file[1].have != uVar9) goto LAB_0001e09c;\n    }" if (parenthesized_expression "(file[3].have == 1)" ( (binary_expression "file[3].have == 1" (field_expression "file[3].have" (subscript_expression "file[3]" identifier [ number_literal ]) . field_identifier) == number_literal) )) (compound_statement "{\n      if (-1 < (int)((uint)(puVar3 + (int)puVar5 < puVar3) + in_a2 + iVar2)) {\n        lVar10 = (*(code *)PTR_lseek64_000360dc)\n                           (file[1].next,(uint)(puVar3 + (int)puVar5 < puVar3),\n                            in_a2 - (puVar3 < puVar3 + -file->have),puVar3 + -file->have,1);\n        if (lVar10 == -1) {\n          return -1;\n        }\n        uVar9 = file[6].have;\n        file->have = 0;\n        file[4].have = 0;\n        file[4].next = (uchar *)0x0;\n        *(undefined4 *)&file[5].pos = 0;\n        if (uVar9 != 0) {\n          if ((int)file[5].pos != -4) {\n            (*(code *)PTR_free_00036104)();\n          }\n          file[6].have = 0;\n        }\n        oVar1 = file->pos;\n        iVar2 = *(int *)&file->pos;\n        *(undefined4 *)((int)&file[5].pos + 4) = 0;\n        puVar4 = puVar3 + (int)oVar1;\n        *(undefined4 *)&file[6].pos = 0;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        iVar2 = (uint)(puVar4 < puVar3) + in_a2 + iVar2;\n        *(int *)&file->pos = iVar2;\n        goto LAB_0001e0c4;\n      }\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n    }" { (if_statement "if (-1 < (int)((uint)(puVar3 + (int)puVar5 < puVar3) + in_a2 + iVar2)) {\n        lVar10 = (*(code *)PTR_lseek64_000360dc)\n                           (file[1].next,(uint)(puVar3 + (int)puVar5 < puVar3),\n                            in_a2 - (puVar3 < puVar3 + -file->have),puVar3 + -file->have,1);\n        if (lVar10 == -1) {\n          return -1;\n        }\n        uVar9 = file[6].have;\n        file->have = 0;\n        file[4].have = 0;\n        file[4].next = (uchar *)0x0;\n        *(undefined4 *)&file[5].pos = 0;\n        if (uVar9 != 0) {\n          if ((int)file[5].pos != -4) {\n            (*(code *)PTR_free_00036104)();\n          }\n          file[6].have = 0;\n        }\n        oVar1 = file->pos;\n        iVar2 = *(int *)&file->pos;\n        *(undefined4 *)((int)&file[5].pos + 4) = 0;\n        puVar4 = puVar3 + (int)oVar1;\n        *(undefined4 *)&file[6].pos = 0;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        iVar2 = (uint)(puVar4 < puVar3) + in_a2 + iVar2;\n        *(int *)&file->pos = iVar2;\n        goto LAB_0001e0c4;\n      }" if (parenthesized_expression "(-1 < (int)((uint)(puVar3 + (int)puVar5 < puVar3) + in_a2 + iVar2))" ( (binary_expression "-1 < (int)((uint)(puVar3 + (int)puVar5 < puVar3) + in_a2 + iVar2)" number_literal < (cast_expression "(int)((uint)(puVar3 + (int)puVar5 < puVar3) + in_a2 + iVar2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(puVar3 + (int)puVar5 < puVar3) + in_a2 + iVar2)" ( (binary_expression "(uint)(puVar3 + (int)puVar5 < puVar3) + in_a2 + iVar2" (binary_expression "(uint)(puVar3 + (int)puVar5 < puVar3) + in_a2" (call_expression "(uint)(puVar3 + (int)puVar5 < puVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar3 + (int)puVar5 < puVar3)" ( (binary_expression "puVar3 + (int)puVar5 < puVar3" (binary_expression "puVar3 + (int)puVar5" identifier + (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) ))) + identifier) + identifier) )))) )) (compound_statement "{\n        lVar10 = (*(code *)PTR_lseek64_000360dc)\n                           (file[1].next,(uint)(puVar3 + (int)puVar5 < puVar3),\n                            in_a2 - (puVar3 < puVar3 + -file->have),puVar3 + -file->have,1);\n        if (lVar10 == -1) {\n          return -1;\n        }\n        uVar9 = file[6].have;\n        file->have = 0;\n        file[4].have = 0;\n        file[4].next = (uchar *)0x0;\n        *(undefined4 *)&file[5].pos = 0;\n        if (uVar9 != 0) {\n          if ((int)file[5].pos != -4) {\n            (*(code *)PTR_free_00036104)();\n          }\n          file[6].have = 0;\n        }\n        oVar1 = file->pos;\n        iVar2 = *(int *)&file->pos;\n        *(undefined4 *)((int)&file[5].pos + 4) = 0;\n        puVar4 = puVar3 + (int)oVar1;\n        *(undefined4 *)&file[6].pos = 0;\n        *(uchar **)((int)&file->pos + 4) = puVar4;\n        iVar2 = (uint)(puVar4 < puVar3) + in_a2 + iVar2;\n        *(int *)&file->pos = iVar2;\n        goto LAB_0001e0c4;\n      }" { (expression_statement "lVar10 = (*(code *)PTR_lseek64_000360dc)\n                           (file[1].next,(uint)(puVar3 + (int)puVar5 < puVar3),\n                            in_a2 - (puVar3 < puVar3 + -file->have),puVar3 + -file->have,1);" (assignment_expression "lVar10 = (*(code *)PTR_lseek64_000360dc)\n                           (file[1].next,(uint)(puVar3 + (int)puVar5 < puVar3),\n                            in_a2 - (puVar3 < puVar3 + -file->have),puVar3 + -file->have,1)" identifier = (call_expression "(*(code *)PTR_lseek64_000360dc)\n                           (file[1].next,(uint)(puVar3 + (int)puVar5 < puVar3),\n                            in_a2 - (puVar3 < puVar3 + -file->have),puVar3 + -file->have,1)" (parenthesized_expression "(*(code *)PTR_lseek64_000360dc)" ( (pointer_expression "*(code *)PTR_lseek64_000360dc" * (cast_expression "(code *)PTR_lseek64_000360dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(file[1].next,(uint)(puVar3 + (int)puVar5 < puVar3),\n                            in_a2 - (puVar3 < puVar3 + -file->have),puVar3 + -file->have,1)" ( (field_expression "file[1].next" (subscript_expression "file[1]" identifier [ number_literal ]) . field_identifier) , (call_expression "(uint)(puVar3 + (int)puVar5 < puVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar3 + (int)puVar5 < puVar3)" ( (binary_expression "puVar3 + (int)puVar5 < puVar3" (binary_expression "puVar3 + (int)puVar5" identifier + (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) ))) , (binary_expression "in_a2 - (puVar3 < puVar3 + -file->have)" identifier - (parenthesized_expression "(puVar3 < puVar3 + -file->have)" ( (binary_expression "puVar3 < puVar3 + -file->have" identifier < (binary_expression "puVar3 + -file->have" identifier + (unary_expression "-file->have" - (field_expression "file->have" identifier -> field_identifier)))) ))) , (binary_expression "puVar3 + -file->have" identifier + (unary_expression "-file->have" - (field_expression "file->have" identifier -> field_identifier))) , number_literal )))) ;) (if_statement "if (lVar10 == -1) {\n          return -1;\n        }" if (parenthesized_expression "(lVar10 == -1)" ( (binary_expression "lVar10 == -1" identifier == number_literal) )) (compound_statement "{\n          return -1;\n        }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "uVar9 = file[6].have;" (assignment_expression "uVar9 = file[6].have" identifier = (field_expression "file[6].have" (subscript_expression "file[6]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "file->have = 0;" (assignment_expression "file->have = 0" (field_expression "file->have" identifier -> field_identifier) = number_literal) ;) (expression_statement "file[4].have = 0;" (assignment_expression "file[4].have = 0" (field_expression "file[4].have" (subscript_expression "file[4]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "file[4].next = (uchar *)0x0;" (assignment_expression "file[4].next = (uchar *)0x0" (field_expression "file[4].next" (subscript_expression "file[4]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(undefined4 *)&file[5].pos = 0;" (assignment_expression "*(undefined4 *)&file[5].pos = 0" (pointer_expression "*(undefined4 *)&file[5].pos" * (cast_expression "(undefined4 *)&file[5].pos" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file[5].pos" & (field_expression "file[5].pos" (subscript_expression "file[5]" identifier [ number_literal ]) . field_identifier)))) = number_literal) ;) (if_statement "if (uVar9 != 0) {\n          if ((int)file[5].pos != -4) {\n            (*(code *)PTR_free_00036104)();\n          }\n          file[6].have = 0;\n        }" if (parenthesized_expression "(uVar9 != 0)" ( (binary_expression "uVar9 != 0" identifier != number_literal) )) (compound_statement "{\n          if ((int)file[5].pos != -4) {\n            (*(code *)PTR_free_00036104)();\n          }\n          file[6].have = 0;\n        }" { (if_statement "if ((int)file[5].pos != -4) {\n            (*(code *)PTR_free_00036104)();\n          }" if (parenthesized_expression "((int)file[5].pos != -4)" ( (binary_expression "(int)file[5].pos != -4" (cast_expression "(int)file[5].pos" ( (type_descriptor "int" primitive_type) ) (field_expression "file[5].pos" (subscript_expression "file[5]" identifier [ number_literal ]) . field_identifier)) != number_literal) )) (compound_statement "{\n            (*(code *)PTR_free_00036104)();\n          }" { (expression_statement "(*(code *)PTR_free_00036104)();" (call_expression "(*(code *)PTR_free_00036104)()" (parenthesized_expression "(*(code *)PTR_free_00036104)" ( (pointer_expression "*(code *)PTR_free_00036104" * (cast_expression "(code *)PTR_free_00036104" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "file[6].have = 0;" (assignment_expression "file[6].have = 0" (field_expression "file[6].have" (subscript_expression "file[6]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) })) (expression_statement "oVar1 = file->pos;" (assignment_expression "oVar1 = file->pos" identifier = (field_expression "file->pos" identifier -> field_identifier)) ;) (expression_statement "iVar2 = *(int *)&file->pos;" (assignment_expression "iVar2 = *(int *)&file->pos" identifier = (pointer_expression "*(int *)&file->pos" * (cast_expression "(int *)&file->pos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file->pos" & (field_expression "file->pos" identifier -> field_identifier))))) ;) (expression_statement "*(undefined4 *)((int)&file[5].pos + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&file[5].pos + 4) = 0" (pointer_expression "*(undefined4 *)((int)&file[5].pos + 4)" * (cast_expression "(undefined4 *)((int)&file[5].pos + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&file[5].pos + 4)" ( (binary_expression "(int)&file[5].pos + 4" (cast_expression "(int)&file[5].pos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&file[5].pos" & (field_expression "file[5].pos" (subscript_expression "file[5]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = puVar3 + (int)oVar1;" (assignment_expression "puVar4 = puVar3 + (int)oVar1" identifier = (binary_expression "puVar3 + (int)oVar1" identifier + (cast_expression "(int)oVar1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(undefined4 *)&file[6].pos = 0;" (assignment_expression "*(undefined4 *)&file[6].pos = 0" (pointer_expression "*(undefined4 *)&file[6].pos" * (cast_expression "(undefined4 *)&file[6].pos" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file[6].pos" & (field_expression "file[6].pos" (subscript_expression "file[6]" identifier [ number_literal ]) . field_identifier)))) = number_literal) ;) (expression_statement "*(uchar **)((int)&file->pos + 4) = puVar4;" (assignment_expression "*(uchar **)((int)&file->pos + 4) = puVar4" (pointer_expression "*(uchar **)((int)&file->pos + 4)" * (cast_expression "(uchar **)((int)&file->pos + 4)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&file->pos + 4)" ( (binary_expression "(int)&file->pos + 4" (cast_expression "(int)&file->pos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&file->pos" & (field_expression "file->pos" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = (uint)(puVar4 < puVar3) + in_a2 + iVar2;" (assignment_expression "iVar2 = (uint)(puVar4 < puVar3) + in_a2 + iVar2" identifier = (binary_expression "(uint)(puVar4 < puVar3) + in_a2 + iVar2" (binary_expression "(uint)(puVar4 < puVar3) + in_a2" (call_expression "(uint)(puVar4 < puVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar4 < puVar3)" ( (binary_expression "puVar4 < puVar3" identifier < identifier) ))) + identifier) + identifier)) ;) (expression_statement "*(int *)&file->pos = iVar2;" (assignment_expression "*(int *)&file->pos = iVar2" (pointer_expression "*(int *)&file->pos" * (cast_expression "(int *)&file->pos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file->pos" & (field_expression "file->pos" identifier -> field_identifier)))) = identifier) ;) (goto_statement "goto LAB_0001e0c4;" goto statement_identifier ;) })) (if_statement "if ((int)in_a2 < 0) {\n        return -1;\n      }" if (parenthesized_expression "((int)in_a2 < 0)" ( (binary_expression "(int)in_a2 < 0" (cast_expression "(int)in_a2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) }) (else_clause "else if ((int)in_a2 < 0) {\n      puVar6 = puVar3 + (int)puVar5;\n      in_a2 = (uint)(puVar6 < puVar3) + in_a2 + iVar2;\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(file);\n      if (iVar2 == -1) {\n        return -1;\n      }\n      iVar2 = *(int *)&file->pos;\n      puVar4 = *(uchar **)((int)&file->pos + 4);\n      puVar5 = puVar4;\n      puVar3 = puVar6;\n      if (file[1].have != uVar9) goto LAB_0001e09c;\n    }" else (if_statement "if ((int)in_a2 < 0) {\n      puVar6 = puVar3 + (int)puVar5;\n      in_a2 = (uint)(puVar6 < puVar3) + in_a2 + iVar2;\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(file);\n      if (iVar2 == -1) {\n        return -1;\n      }\n      iVar2 = *(int *)&file->pos;\n      puVar4 = *(uchar **)((int)&file->pos + 4);\n      puVar5 = puVar4;\n      puVar3 = puVar6;\n      if (file[1].have != uVar9) goto LAB_0001e09c;\n    }" if (parenthesized_expression "((int)in_a2 < 0)" ( (binary_expression "(int)in_a2 < 0" (cast_expression "(int)in_a2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      puVar6 = puVar3 + (int)puVar5;\n      in_a2 = (uint)(puVar6 < puVar3) + in_a2 + iVar2;\n      if ((int)in_a2 < 0) {\n        return -1;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(file);\n      if (iVar2 == -1) {\n        return -1;\n      }\n      iVar2 = *(int *)&file->pos;\n      puVar4 = *(uchar **)((int)&file->pos + 4);\n      puVar5 = puVar4;\n      puVar3 = puVar6;\n      if (file[1].have != uVar9) goto LAB_0001e09c;\n    }" { (expression_statement "puVar6 = puVar3 + (int)puVar5;" (assignment_expression "puVar6 = puVar3 + (int)puVar5" identifier = (binary_expression "puVar3 + (int)puVar5" identifier + (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "in_a2 = (uint)(puVar6 < puVar3) + in_a2 + iVar2;" (assignment_expression "in_a2 = (uint)(puVar6 < puVar3) + in_a2 + iVar2" identifier = (binary_expression "(uint)(puVar6 < puVar3) + in_a2 + iVar2" (binary_expression "(uint)(puVar6 < puVar3) + in_a2" (call_expression "(uint)(puVar6 < puVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar6 < puVar3)" ( (binary_expression "puVar6 < puVar3" identifier < identifier) ))) + identifier) + identifier)) ;) (if_statement "if ((int)in_a2 < 0) {\n        return -1;\n      }" if (parenthesized_expression "((int)in_a2 < 0)" ( (binary_expression "(int)in_a2 < 0" (cast_expression "(int)in_a2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "iVar2 = (*(code *)PTR_gzrewind_00036090)(file);" (assignment_expression "iVar2 = (*(code *)PTR_gzrewind_00036090)(file)" identifier = (call_expression "(*(code *)PTR_gzrewind_00036090)(file)" (parenthesized_expression "(*(code *)PTR_gzrewind_00036090)" ( (pointer_expression "*(code *)PTR_gzrewind_00036090" * (cast_expression "(code *)PTR_gzrewind_00036090" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(file)" ( identifier )))) ;) (if_statement "if (iVar2 == -1) {\n        return -1;\n      }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "iVar2 = *(int *)&file->pos;" (assignment_expression "iVar2 = *(int *)&file->pos" identifier = (pointer_expression "*(int *)&file->pos" * (cast_expression "(int *)&file->pos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file->pos" & (field_expression "file->pos" identifier -> field_identifier))))) ;) (expression_statement "puVar4 = *(uchar **)((int)&file->pos + 4);" (assignment_expression "puVar4 = *(uchar **)((int)&file->pos + 4)" identifier = (pointer_expression "*(uchar **)((int)&file->pos + 4)" * (cast_expression "(uchar **)((int)&file->pos + 4)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&file->pos + 4)" ( (binary_expression "(int)&file->pos + 4" (cast_expression "(int)&file->pos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&file->pos" & (field_expression "file->pos" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (expression_statement "puVar3 = puVar6;" (assignment_expression "puVar3 = puVar6" identifier = identifier) ;) (if_statement "if (file[1].have != uVar9) goto LAB_0001e09c;" if (parenthesized_expression "(file[1].have != uVar9)" ( (binary_expression "file[1].have != uVar9" (field_expression "file[1].have" (subscript_expression "file[1]" identifier [ number_literal ]) . field_identifier) != identifier) )) (goto_statement "goto LAB_0001e09c;" goto statement_identifier ;)) })))) (expression_statement "puVar7 = (uchar *)file->have;" (assignment_expression "puVar7 = (uchar *)file->have" identifier = (cast_expression "(uchar *)file->have" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "file->have" identifier -> field_identifier))) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (if_statement "if (((int)in_a2 < 0) || ((uVar8 = 0, in_a2 == 0 && (puVar3 < puVar7)))) {\n      uVar8 = (int)puVar7 - (int)puVar3;\n      uVar9 = in_a2;\n      puVar7 = puVar3;\n    }" if (parenthesized_expression "(((int)in_a2 < 0) || ((uVar8 = 0, in_a2 == 0 && (puVar3 < puVar7))))" ( (binary_expression "((int)in_a2 < 0) || ((uVar8 = 0, in_a2 == 0 && (puVar3 < puVar7)))" (parenthesized_expression "((int)in_a2 < 0)" ( (binary_expression "(int)in_a2 < 0" (cast_expression "(int)in_a2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "((uVar8 = 0, in_a2 == 0 && (puVar3 < puVar7)))" ( (parenthesized_expression "(uVar8 = 0, in_a2 == 0 && (puVar3 < puVar7))" ( (comma_expression "uVar8 = 0, in_a2 == 0 && (puVar3 < puVar7)" (assignment_expression "uVar8 = 0" identifier = number_literal) , (binary_expression "in_a2 == 0 && (puVar3 < puVar7)" (binary_expression "in_a2 == 0" identifier == number_literal) && (parenthesized_expression "(puVar3 < puVar7)" ( (binary_expression "puVar3 < puVar7" identifier < identifier) )))) )) ))) )) (compound_statement "{\n      uVar8 = (int)puVar7 - (int)puVar3;\n      uVar9 = in_a2;\n      puVar7 = puVar3;\n    }" { (expression_statement "uVar8 = (int)puVar7 - (int)puVar3;" (assignment_expression "uVar8 = (int)puVar7 - (int)puVar3" identifier = (binary_expression "(int)puVar7 - (int)puVar3" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar9 = in_a2;" (assignment_expression "uVar9 = in_a2" identifier = identifier) ;) (expression_statement "puVar7 = puVar3;" (assignment_expression "puVar7 = puVar3" identifier = identifier) ;) })) (expression_statement "puVar4 = puVar5 + (int)puVar7;" (assignment_expression "puVar4 = puVar5 + (int)puVar7" identifier = (binary_expression "puVar5 + (int)puVar7" identifier + (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "file->have = uVar8;" (assignment_expression "file->have = uVar8" (field_expression "file->have" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar6 = puVar3 + -(int)puVar7;" (assignment_expression "puVar6 = puVar3 + -(int)puVar7" identifier = (binary_expression "puVar3 + -(int)puVar7" identifier + (unary_expression "-(int)puVar7" - (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "*(uchar **)((int)&file->pos + 4) = puVar4;" (assignment_expression "*(uchar **)((int)&file->pos + 4) = puVar4" (pointer_expression "*(uchar **)((int)&file->pos + 4)" * (cast_expression "(uchar **)((int)&file->pos + 4)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&file->pos + 4)" ( (binary_expression "(int)&file->pos + 4" (cast_expression "(int)&file->pos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&file->pos" & (field_expression "file->pos" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = (uint)(puVar4 < puVar5) + iVar2 + uVar9;" (assignment_expression "iVar2 = (uint)(puVar4 < puVar5) + iVar2 + uVar9" identifier = (binary_expression "(uint)(puVar4 < puVar5) + iVar2 + uVar9" (binary_expression "(uint)(puVar4 < puVar5) + iVar2" (call_expression "(uint)(puVar4 < puVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar4 < puVar5)" ( (binary_expression "puVar4 < puVar5" identifier < identifier) ))) + identifier) + identifier)) ;) (expression_statement "*(int *)&file->pos = iVar2;" (assignment_expression "*(int *)&file->pos = iVar2" (pointer_expression "*(int *)&file->pos" * (cast_expression "(int *)&file->pos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file->pos" & (field_expression "file->pos" identifier -> field_identifier)))) = identifier) ;) (expression_statement "in_a2 = (in_a2 - uVar9) - (uint)(puVar3 < puVar6);" (assignment_expression "in_a2 = (in_a2 - uVar9) - (uint)(puVar3 < puVar6)" identifier = (binary_expression "(in_a2 - uVar9) - (uint)(puVar3 < puVar6)" (parenthesized_expression "(in_a2 - uVar9)" ( (binary_expression "in_a2 - uVar9" identifier - identifier) )) - (call_expression "(uint)(puVar3 < puVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar3 < puVar6)" ( (binary_expression "puVar3 < puVar6" identifier < identifier) ))))) ;) (expression_statement "file->next = file->next + (int)puVar7;" (assignment_expression "file->next = file->next + (int)puVar7" (field_expression "file->next" identifier -> field_identifier) = (binary_expression "file->next + (int)puVar7" (field_expression "file->next" identifier -> field_identifier) + (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (labeled_statement "LAB_0001e09c:\n  if (in_a2 != 0 || puVar6 != (uchar *)0x0) {\n    file[5].have = in_a2;\n    file[5].next = puVar6;\n    *(undefined4 *)&file[5].pos = 1;\n  }" statement_identifier : (if_statement "if (in_a2 != 0 || puVar6 != (uchar *)0x0) {\n    file[5].have = in_a2;\n    file[5].next = puVar6;\n    *(undefined4 *)&file[5].pos = 1;\n  }" if (parenthesized_expression "(in_a2 != 0 || puVar6 != (uchar *)0x0)" ( (binary_expression "in_a2 != 0 || puVar6 != (uchar *)0x0" (binary_expression "in_a2 != 0" identifier != number_literal) || (binary_expression "puVar6 != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n    file[5].have = in_a2;\n    file[5].next = puVar6;\n    *(undefined4 *)&file[5].pos = 1;\n  }" { (expression_statement "file[5].have = in_a2;" (assignment_expression "file[5].have = in_a2" (field_expression "file[5].have" (subscript_expression "file[5]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "file[5].next = puVar6;" (assignment_expression "file[5].next = puVar6" (field_expression "file[5].next" (subscript_expression "file[5]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "*(undefined4 *)&file[5].pos = 1;" (assignment_expression "*(undefined4 *)&file[5].pos = 1" (pointer_expression "*(undefined4 *)&file[5].pos" * (cast_expression "(undefined4 *)&file[5].pos" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&file[5].pos" & (field_expression "file[5].pos" (subscript_expression "file[5]" identifier [ number_literal ]) . field_identifier)))) = number_literal) ;) }))) (expression_statement "puVar4 = puVar6 + (int)puVar4;" (assignment_expression "puVar4 = puVar6 + (int)puVar4" identifier = (binary_expression "puVar6 + (int)puVar4" identifier + (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar2 = (uint)(puVar4 < puVar6) + in_a2 + iVar2;" (assignment_expression "iVar2 = (uint)(puVar4 < puVar6) + in_a2 + iVar2" identifier = (binary_expression "(uint)(puVar4 < puVar6) + in_a2 + iVar2" (binary_expression "(uint)(puVar4 < puVar6) + in_a2" (call_expression "(uint)(puVar4 < puVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar4 < puVar6)" ( (binary_expression "puVar4 < puVar6" identifier < identifier) ))) + identifier) + identifier)) ;) (labeled_statement "LAB_0001e0c4:\n  return CONCAT44(iVar2,puVar4);" statement_identifier : (return_statement "return CONCAT44(iVar2,puVar4);" return (call_expression "CONCAT44(iVar2,puVar4)" identifier (argument_list "(iVar2,puVar4)" ( identifier , identifier ))) ;)) })))
(translation_unit "undefined8 gzseek64(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  longlong lVar9;\n  \n  if (param_1 == (uint *)0x0) {\n    return 0xffffffffffffffff;\n  }\n  uVar8 = param_1[4];\n  if ((uVar8 != 0x1c4f) && (uVar8 != 0x79b1)) {\n    return 0xffffffffffffffff;\n  }\n  if ((param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb)) {\n    return 0xffffffffffffffff;\n  }\n  if (1 < param_5) {\n    return 0xffffffffffffffff;\n  }\n  if (param_5 == 0) {\n    param_1[0x16] = 0;\n    uVar3 = param_4 - param_1[3];\n    param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);\n    uVar6 = uVar3;\n    if (uVar8 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }\n    uVar1 = param_1[2];\n    uVar4 = param_1[3];\n  }\n  else {\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }\nLAB_0001e09c:\n  if (param_3 != 0 || uVar6 != 0) {\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }\n  uVar4 = uVar6 + uVar4;\n  uVar8 = (uint)(uVar4 < uVar6) + param_3 + uVar1;\nLAB_0001e0c4:\n  return CONCAT44(uVar8,uVar4);\n}\n\n" (function_definition "undefined8 gzseek64(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  longlong lVar9;\n  \n  if (param_1 == (uint *)0x0) {\n    return 0xffffffffffffffff;\n  }\n  uVar8 = param_1[4];\n  if ((uVar8 != 0x1c4f) && (uVar8 != 0x79b1)) {\n    return 0xffffffffffffffff;\n  }\n  if ((param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb)) {\n    return 0xffffffffffffffff;\n  }\n  if (1 < param_5) {\n    return 0xffffffffffffffff;\n  }\n  if (param_5 == 0) {\n    param_1[0x16] = 0;\n    uVar3 = param_4 - param_1[3];\n    param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);\n    uVar6 = uVar3;\n    if (uVar8 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }\n    uVar1 = param_1[2];\n    uVar4 = param_1[3];\n  }\n  else {\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }\nLAB_0001e09c:\n  if (param_3 != 0 || uVar6 != 0) {\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }\n  uVar4 = uVar6 + uVar4;\n  uVar8 = (uint)(uVar4 < uVar6) + param_3 + uVar1;\nLAB_0001e0c4:\n  return CONCAT44(uVar8,uVar4);\n}" type_identifier (function_declarator "gzseek64(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5)" identifier (parameter_list "(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  longlong lVar9;\n  \n  if (param_1 == (uint *)0x0) {\n    return 0xffffffffffffffff;\n  }\n  uVar8 = param_1[4];\n  if ((uVar8 != 0x1c4f) && (uVar8 != 0x79b1)) {\n    return 0xffffffffffffffff;\n  }\n  if ((param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb)) {\n    return 0xffffffffffffffff;\n  }\n  if (1 < param_5) {\n    return 0xffffffffffffffff;\n  }\n  if (param_5 == 0) {\n    param_1[0x16] = 0;\n    uVar3 = param_4 - param_1[3];\n    param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);\n    uVar6 = uVar3;\n    if (uVar8 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }\n    uVar1 = param_1[2];\n    uVar4 = param_1[3];\n  }\n  else {\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }\nLAB_0001e09c:\n  if (param_3 != 0 || uVar6 != 0) {\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }\n  uVar4 = uVar6 + uVar4;\n  uVar8 = (uint)(uVar4 < uVar6) + param_3 + uVar1;\nLAB_0001e0c4:\n  return CONCAT44(uVar8,uVar4);\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "longlong lVar9;" type_identifier identifier ;) (if_statement "if (param_1 == (uint *)0x0) {\n    return 0xffffffffffffffff;\n  }" if (parenthesized_expression "(param_1 == (uint *)0x0)" ( (binary_expression "param_1 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0xffffffffffffffff;\n  }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) })) (expression_statement "uVar8 = param_1[4];" (assignment_expression "uVar8 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (if_statement "if ((uVar8 != 0x1c4f) && (uVar8 != 0x79b1)) {\n    return 0xffffffffffffffff;\n  }" if (parenthesized_expression "((uVar8 != 0x1c4f) && (uVar8 != 0x79b1))" ( (binary_expression "(uVar8 != 0x1c4f) && (uVar8 != 0x79b1)" (parenthesized_expression "(uVar8 != 0x1c4f)" ( (binary_expression "uVar8 != 0x1c4f" identifier != number_literal) )) && (parenthesized_expression "(uVar8 != 0x79b1)" ( (binary_expression "uVar8 != 0x79b1" identifier != number_literal) ))) )) (compound_statement "{\n    return 0xffffffffffffffff;\n  }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) })) (if_statement "if ((param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb)) {\n    return 0xffffffffffffffff;\n  }" if (parenthesized_expression "((param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb))" ( (binary_expression "(param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb)" (parenthesized_expression "(param_1[0x17] != 0)" ( (binary_expression "param_1[0x17] != 0" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(param_1[0x17] != 0xfffffffb)" ( (binary_expression "param_1[0x17] != 0xfffffffb" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n    return 0xffffffffffffffff;\n  }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) })) (if_statement "if (1 < param_5) {\n    return 0xffffffffffffffff;\n  }" if (parenthesized_expression "(1 < param_5)" ( (binary_expression "1 < param_5" number_literal < identifier) )) (compound_statement "{\n    return 0xffffffffffffffff;\n  }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) })) (if_statement "if (param_5 == 0) {\n    param_1[0x16] = 0;\n    uVar3 = param_4 - param_1[3];\n    param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);\n    uVar6 = uVar3;\n    if (uVar8 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }\n    uVar1 = param_1[2];\n    uVar4 = param_1[3];\n  }\n  else {\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n    param_1[0x16] = 0;\n    uVar3 = param_4 - param_1[3];\n    param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);\n    uVar6 = uVar3;\n    if (uVar8 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }\n    uVar1 = param_1[2];\n    uVar4 = param_1[3];\n  }" { (expression_statement "param_1[0x16] = 0;" (assignment_expression "param_1[0x16] = 0" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar3 = param_4 - param_1[3];" (assignment_expression "uVar3 = param_4 - param_1[3]" identifier = (binary_expression "param_4 - param_1[3]" identifier - (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (expression_statement "param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);" (assignment_expression "param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3)" identifier = (binary_expression "(param_3 - param_1[2]) - (uint)(param_4 < uVar3)" (parenthesized_expression "(param_3 - param_1[2])" ( (binary_expression "param_3 - param_1[2]" identifier - (subscript_expression "param_1[2]" identifier [ number_literal ])) )) - (call_expression "(uint)(param_4 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 < uVar3)" ( (binary_expression "param_4 < uVar3" identifier < identifier) ))))) ;) (expression_statement "uVar6 = uVar3;" (assignment_expression "uVar6 = uVar3" identifier = identifier) ;) (if_statement "if (uVar8 == 0x1c4f) goto LAB_0001e134;" if (parenthesized_expression "(uVar8 == 0x1c4f)" ( (binary_expression "uVar8 == 0x1c4f" identifier == number_literal) )) (goto_statement "goto LAB_0001e134;" goto statement_identifier ;)) (labeled_statement "LAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }" statement_identifier : (if_statement "if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      return 0xffffffffffffffff;\n    }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) }))) (expression_statement "uVar1 = param_1[2];" (assignment_expression "uVar1 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_1[3];" (assignment_expression "uVar4 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }" else (compound_statement "{\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }" { (expression_statement "uVar3 = param_4;" (assignment_expression "uVar3 = param_4" identifier = identifier) ;) (if_statement "if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }" if (parenthesized_expression "(param_1[0x16] != 0)" ( (binary_expression "param_1[0x16] != 0" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }" { (expression_statement "uVar3 = param_4 + param_1[0x15];" (assignment_expression "uVar3 = param_4 + param_1[0x15]" identifier = (binary_expression "param_4 + param_1[0x15]" identifier + (subscript_expression "param_1[0x15]" identifier [ number_literal ]))) ;) (expression_statement "param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];" (assignment_expression "param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14]" identifier = (binary_expression "(uint)(uVar3 < param_4) + param_3 + param_1[0x14]" (binary_expression "(uint)(uVar3 < param_4) + param_3" (call_expression "(uint)(uVar3 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < param_4)" ( (binary_expression "uVar3 < param_4" identifier < identifier) ))) + identifier) + (subscript_expression "param_1[0x14]" identifier [ number_literal ]))) ;) })) (expression_statement "param_1[0x16] = 0;" (assignment_expression "param_1[0x16] = 0" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar6 = uVar3;" (assignment_expression "uVar6 = uVar3" identifier = identifier) ;) (if_statement "if (uVar8 != 0x1c4f) goto LAB_0001e08c;" if (parenthesized_expression "(uVar8 != 0x1c4f)" ( (binary_expression "uVar8 != 0x1c4f" identifier != number_literal) )) (goto_statement "goto LAB_0001e08c;" goto statement_identifier ;)) (labeled_statement "LAB_0001e134:\n    uVar1 = param_1[2];" statement_identifier : (expression_statement "uVar1 = param_1[2];" (assignment_expression "uVar1 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;)) (expression_statement "uVar5 = param_1[3];" (assignment_expression "uVar5 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (if_statement "if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }" if (parenthesized_expression "(param_1[0xc] == 1)" ( (binary_expression "param_1[0xc] == 1" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }" { (expression_statement "uVar8 = (uint)(uVar3 + uVar5 < uVar3);" (assignment_expression "uVar8 = (uint)(uVar3 + uVar5 < uVar3)" identifier = (call_expression "(uint)(uVar3 + uVar5 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 + uVar5 < uVar3)" ( (binary_expression "uVar3 + uVar5 < uVar3" (binary_expression "uVar3 + uVar5" identifier + identifier) < identifier) )))) ;) (if_statement "if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }" if (parenthesized_expression "(-1 < (int)(uVar8 + param_3 + uVar1))" ( (binary_expression "-1 < (int)(uVar8 + param_3 + uVar1)" number_literal < (cast_expression "(int)(uVar8 + param_3 + uVar1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar8 + param_3 + uVar1)" ( (binary_expression "uVar8 + param_3 + uVar1" (binary_expression "uVar8 + param_3" identifier + identifier) + identifier) )))) )) (compound_statement "{\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }" { (expression_statement "lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;" (assignment_expression "lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)" identifier = (call_expression "(*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)" (parenthesized_expression "(*(code *)PTR_lseek64_000360dc)" ( (pointer_expression "*(code *)PTR_lseek64_000360dc" * (cast_expression "(code *)PTR_lseek64_000360dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)" ( (subscript_expression "param_1[5]" identifier [ number_literal ]) , identifier , (binary_expression "param_3 - (uVar3 < uVar3 - *param_1)" identifier - (parenthesized_expression "(uVar3 < uVar3 - *param_1)" ( (binary_expression "uVar3 < uVar3 - *param_1" identifier < (binary_expression "uVar3 - *param_1" identifier - (pointer_expression "*param_1" * identifier))) ))) , (binary_expression "uVar3 - *param_1" identifier - (pointer_expression "*param_1" * identifier)) , number_literal )))) ;) (if_statement "if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }" if (parenthesized_expression "(lVar9 == -1)" ( (binary_expression "lVar9 == -1" identifier == number_literal) )) (compound_statement "{\n          return 0xffffffffffffffff;\n        }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) })) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x11] = 0;" (assignment_expression "param_1[0x11] = 0" (subscript_expression "param_1[0x11]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x16] = 0;" (assignment_expression "param_1[0x16] = 0" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }" if (parenthesized_expression "(param_1[0x18] != 0)" ( (binary_expression "param_1[0x18] != 0" (subscript_expression "param_1[0x18]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }" { (if_statement "if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }" if (parenthesized_expression "(param_1[0x17] != 0xfffffffc)" ( (binary_expression "param_1[0x17] != 0xfffffffc" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            (*(code *)PTR_free_00036104)();\n          }" { (expression_statement "(*(code *)PTR_free_00036104)();" (call_expression "(*(code *)PTR_free_00036104)()" (parenthesized_expression "(*(code *)PTR_free_00036104)" ( (pointer_expression "*(code *)PTR_free_00036104" * (cast_expression "(code *)PTR_free_00036104" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "param_1[0x18] = 0;" (assignment_expression "param_1[0x18] = 0" (subscript_expression "param_1[0x18]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "param_1[0x17] = 0;" (assignment_expression "param_1[0x17] = 0" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar4 = uVar3 + param_1[3];" (assignment_expression "uVar4 = uVar3 + param_1[3]" identifier = (binary_expression "uVar3 + param_1[3]" identifier + (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (expression_statement "param_1[0x1a] = 0;" (assignment_expression "param_1[0x1a] = 0" (subscript_expression "param_1[0x1a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[3] = uVar4;" (assignment_expression "param_1[3] = uVar4" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];" (assignment_expression "uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2]" identifier = (binary_expression "(uint)(uVar4 < uVar3) + param_3 + param_1[2]" (binary_expression "(uint)(uVar4 < uVar3) + param_3" (call_expression "(uint)(uVar4 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < uVar3)" ( (binary_expression "uVar4 < uVar3" identifier < identifier) ))) + identifier) + (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "param_1[2] = uVar8;" (assignment_expression "param_1[2] = uVar8" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_0001e0c4;" goto statement_identifier ;) })) (if_statement "if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        return 0xffffffffffffffff;\n      }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) })) }) (else_clause "else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }" else (if_statement "if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }" { (expression_statement "uVar6 = uVar3 + uVar5;" (assignment_expression "uVar6 = uVar3 + uVar5" identifier = (binary_expression "uVar3 + uVar5" identifier + identifier)) ;) (expression_statement "param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;" (assignment_expression "param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1" identifier = (binary_expression "(uint)(uVar6 < uVar3) + param_3 + uVar1" (binary_expression "(uint)(uVar6 < uVar3) + param_3" (call_expression "(uint)(uVar6 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < uVar3)" ( (binary_expression "uVar6 < uVar3" identifier < identifier) ))) + identifier) + identifier)) ;) (if_statement "if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        return 0xffffffffffffffff;\n      }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) })) (expression_statement "iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);" (assignment_expression "iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1)" identifier = (call_expression "(*(code *)PTR_gzrewind_00036090)(param_1)" (parenthesized_expression "(*(code *)PTR_gzrewind_00036090)" ( (pointer_expression "*(code *)PTR_gzrewind_00036090" * (cast_expression "(code *)PTR_gzrewind_00036090" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0xffffffffffffffff;\n      }" { (return_statement "return 0xffffffffffffffff;" return number_literal ;) })) (expression_statement "uVar1 = param_1[2];" (assignment_expression "uVar1 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_1[3];" (assignment_expression "uVar4 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" identifier = identifier) ;) (expression_statement "uVar3 = uVar6;" (assignment_expression "uVar3 = uVar6" identifier = identifier) ;) (if_statement "if (param_1[4] != uVar8) goto LAB_0001e09c;" if (parenthesized_expression "(param_1[4] != uVar8)" ( (binary_expression "param_1[4] != uVar8" (subscript_expression "param_1[4]" identifier [ number_literal ]) != identifier) )) (goto_statement "goto LAB_0001e09c;" goto statement_identifier ;)) })))) (expression_statement "uVar7 = *param_1;" (assignment_expression "uVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }" if (parenthesized_expression "(((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7))))" ( (binary_expression "((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))" (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))" ( (parenthesized_expression "(uVar6 = 0, param_3 == 0 && (uVar3 < uVar7))" ( (comma_expression "uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)" (assignment_expression "uVar6 = 0" identifier = number_literal) , (binary_expression "param_3 == 0 && (uVar3 < uVar7)" (binary_expression "param_3 == 0" identifier == number_literal) && (parenthesized_expression "(uVar3 < uVar7)" ( (binary_expression "uVar3 < uVar7" identifier < identifier) )))) )) ))) )) (compound_statement "{\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }" { (expression_statement "uVar6 = uVar7 - uVar3;" (assignment_expression "uVar6 = uVar7 - uVar3" identifier = (binary_expression "uVar7 - uVar3" identifier - identifier)) ;) (expression_statement "uVar8 = param_3;" (assignment_expression "uVar8 = param_3" identifier = identifier) ;) (expression_statement "uVar7 = uVar3;" (assignment_expression "uVar7 = uVar3" identifier = identifier) ;) })) (expression_statement "uVar4 = uVar5 + uVar7;" (assignment_expression "uVar4 = uVar5 + uVar7" identifier = (binary_expression "uVar5 + uVar7" identifier + identifier)) ;) (expression_statement "*param_1 = uVar6;" (assignment_expression "*param_1 = uVar6" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "uVar6 = uVar3 - uVar7;" (assignment_expression "uVar6 = uVar3 - uVar7" identifier = (binary_expression "uVar3 - uVar7" identifier - identifier)) ;) (expression_statement "param_1[3] = uVar4;" (assignment_expression "param_1[3] = uVar4" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;" (assignment_expression "uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8" identifier = (binary_expression "(uint)(uVar4 < uVar5) + uVar1 + uVar8" (binary_expression "(uint)(uVar4 < uVar5) + uVar1" (call_expression "(uint)(uVar4 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < uVar5)" ( (binary_expression "uVar4 < uVar5" identifier < identifier) ))) + identifier) + identifier)) ;) (expression_statement "param_1[2] = uVar1;" (assignment_expression "param_1[2] = uVar1" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);" (assignment_expression "param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6)" identifier = (binary_expression "(param_3 - uVar8) - (uint)(uVar3 < uVar6)" (parenthesized_expression "(param_3 - uVar8)" ( (binary_expression "param_3 - uVar8" identifier - identifier) )) - (call_expression "(uint)(uVar3 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < uVar6)" ( (binary_expression "uVar3 < uVar6" identifier < identifier) ))))) ;) (expression_statement "param_1[1] = param_1[1] + uVar7;" (assignment_expression "param_1[1] = param_1[1] + uVar7" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "param_1[1] + uVar7" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier)) ;) }))) (labeled_statement "LAB_0001e09c:\n  if (param_3 != 0 || uVar6 != 0) {\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }" statement_identifier : (if_statement "if (param_3 != 0 || uVar6 != 0) {\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }" if (parenthesized_expression "(param_3 != 0 || uVar6 != 0)" ( (binary_expression "param_3 != 0 || uVar6 != 0" (binary_expression "param_3 != 0" identifier != number_literal) || (binary_expression "uVar6 != 0" identifier != number_literal)) )) (compound_statement "{\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }" { (expression_statement "param_1[0x14] = param_3;" (assignment_expression "param_1[0x14] = param_3" (subscript_expression "param_1[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0x15] = uVar6;" (assignment_expression "param_1[0x15] = uVar6" (subscript_expression "param_1[0x15]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0x16] = 1;" (assignment_expression "param_1[0x16] = 1" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) = number_literal) ;) }))) (expression_statement "uVar4 = uVar6 + uVar4;" (assignment_expression "uVar4 = uVar6 + uVar4" identifier = (binary_expression "uVar6 + uVar4" identifier + identifier)) ;) (expression_statement "uVar8 = (uint)(uVar4 < uVar6) + param_3 + uVar1;" (assignment_expression "uVar8 = (uint)(uVar4 < uVar6) + param_3 + uVar1" identifier = (binary_expression "(uint)(uVar4 < uVar6) + param_3 + uVar1" (binary_expression "(uint)(uVar4 < uVar6) + param_3" (call_expression "(uint)(uVar4 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < uVar6)" ( (binary_expression "uVar4 < uVar6" identifier < identifier) ))) + identifier) + identifier)) ;) (labeled_statement "LAB_0001e0c4:\n  return CONCAT44(uVar8,uVar4);" statement_identifier : (return_statement "return CONCAT44(uVar8,uVar4);" return (call_expression "CONCAT44(uVar8,uVar4)" identifier (argument_list "(uVar8,uVar4)" ( identifier , identifier ))) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (subscript_expression IDENT [ LIT ])) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (return_statement return LIT ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT) + (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + IDENT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT - (pointer_expression * IDENT))) ))) , (binary_expression IDENT - (pointer_expression * IDENT)) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (goto_statement goto statement_identifier ;)) })))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (binary_expression IDENT < IDENT) )))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT) + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT) + IDENT)) ;) (labeled_statement statement_identifier : (return_statement return (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) })))
(function_definition "undefined8 gzseek64(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  longlong lVar9;\n  \n  if (param_1 == (uint *)0x0) {\n    return 0xffffffffffffffff;\n  }\n  uVar8 = param_1[4];\n  if ((uVar8 != 0x1c4f) && (uVar8 != 0x79b1)) {\n    return 0xffffffffffffffff;\n  }\n  if ((param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb)) {\n    return 0xffffffffffffffff;\n  }\n  if (1 < param_5) {\n    return 0xffffffffffffffff;\n  }\n  if (param_5 == 0) {\n    param_1[0x16] = 0;\n    uVar3 = param_4 - param_1[3];\n    param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);\n    uVar6 = uVar3;\n    if (uVar8 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }\n    uVar1 = param_1[2];\n    uVar4 = param_1[3];\n  }\n  else {\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }\nLAB_0001e09c:\n  if (param_3 != 0 || uVar6 != 0) {\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }\n  uVar4 = uVar6 + uVar4;\n  uVar8 = (uint)(uVar4 < uVar6) + param_3 + uVar1;\nLAB_0001e0c4:\n  return CONCAT44(uVar8,uVar4);\n}" (type_identifier "undefined8") (function_declarator "gzseek64(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5)" (identifier "gzseek64") (parameter_list "(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  longlong lVar9;\n  \n  if (param_1 == (uint *)0x0) {\n    return 0xffffffffffffffff;\n  }\n  uVar8 = param_1[4];\n  if ((uVar8 != 0x1c4f) && (uVar8 != 0x79b1)) {\n    return 0xffffffffffffffff;\n  }\n  if ((param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb)) {\n    return 0xffffffffffffffff;\n  }\n  if (1 < param_5) {\n    return 0xffffffffffffffff;\n  }\n  if (param_5 == 0) {\n    param_1[0x16] = 0;\n    uVar3 = param_4 - param_1[3];\n    param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);\n    uVar6 = uVar3;\n    if (uVar8 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }\n    uVar1 = param_1[2];\n    uVar4 = param_1[3];\n  }\n  else {\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }\nLAB_0001e09c:\n  if (param_3 != 0 || uVar6 != 0) {\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }\n  uVar4 = uVar6 + uVar4;\n  uVar8 = (uint)(uVar4 < uVar6) + param_3 + uVar1;\nLAB_0001e0c4:\n  return CONCAT44(uVar8,uVar4);\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "longlong lVar9;" (type_identifier "longlong") (identifier "lVar9") (; ";")) (if_statement "if (param_1 == (uint *)0x0) {\n    return 0xffffffffffffffff;\n  }" (if "if") (parenthesized_expression "(param_1 == (uint *)0x0)" (( "(") (binary_expression "param_1 == (uint *)0x0" (identifier "param_1") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return 0xffffffffffffffff;\n  }" ({ "{") (return_statement "return 0xffffffffffffffff;" (return "return") (number_literal "0xffffffffffffffff") (; ";")) (} "}"))) (expression_statement "uVar8 = param_1[4];" (assignment_expression "uVar8 = param_1[4]" (identifier "uVar8") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if ((uVar8 != 0x1c4f) && (uVar8 != 0x79b1)) {\n    return 0xffffffffffffffff;\n  }" (if "if") (parenthesized_expression "((uVar8 != 0x1c4f) && (uVar8 != 0x79b1))" (( "(") (binary_expression "(uVar8 != 0x1c4f) && (uVar8 != 0x79b1)" (parenthesized_expression "(uVar8 != 0x1c4f)" (( "(") (binary_expression "uVar8 != 0x1c4f" (identifier "uVar8") (!= "!=") (number_literal "0x1c4f")) () ")")) (&& "&&") (parenthesized_expression "(uVar8 != 0x79b1)" (( "(") (binary_expression "uVar8 != 0x79b1" (identifier "uVar8") (!= "!=") (number_literal "0x79b1")) () ")"))) () ")")) (compound_statement "{\n    return 0xffffffffffffffff;\n  }" ({ "{") (return_statement "return 0xffffffffffffffff;" (return "return") (number_literal "0xffffffffffffffff") (; ";")) (} "}"))) (if_statement "if ((param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb)) {\n    return 0xffffffffffffffff;\n  }" (if "if") (parenthesized_expression "((param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb))" (( "(") (binary_expression "(param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb)" (parenthesized_expression "(param_1[0x17] != 0)" (( "(") (binary_expression "param_1[0x17] != 0" (subscript_expression "param_1[0x17]" (identifier "param_1") ([ "[") (number_literal "0x17") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_1[0x17] != 0xfffffffb)" (( "(") (binary_expression "param_1[0x17] != 0xfffffffb" (subscript_expression "param_1[0x17]" (identifier "param_1") ([ "[") (number_literal "0x17") (] "]")) (!= "!=") (number_literal "0xfffffffb")) () ")"))) () ")")) (compound_statement "{\n    return 0xffffffffffffffff;\n  }" ({ "{") (return_statement "return 0xffffffffffffffff;" (return "return") (number_literal "0xffffffffffffffff") (; ";")) (} "}"))) (if_statement "if (1 < param_5) {\n    return 0xffffffffffffffff;\n  }" (if "if") (parenthesized_expression "(1 < param_5)" (( "(") (binary_expression "1 < param_5" (number_literal "1") (< "<") (identifier "param_5")) () ")")) (compound_statement "{\n    return 0xffffffffffffffff;\n  }" ({ "{") (return_statement "return 0xffffffffffffffff;" (return "return") (number_literal "0xffffffffffffffff") (; ";")) (} "}"))) (if_statement "if (param_5 == 0) {\n    param_1[0x16] = 0;\n    uVar3 = param_4 - param_1[3];\n    param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);\n    uVar6 = uVar3;\n    if (uVar8 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }\n    uVar1 = param_1[2];\n    uVar4 = param_1[3];\n  }\n  else {\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }" (if "if") (parenthesized_expression "(param_5 == 0)" (( "(") (binary_expression "param_5 == 0" (identifier "param_5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    param_1[0x16] = 0;\n    uVar3 = param_4 - param_1[3];\n    param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);\n    uVar6 = uVar3;\n    if (uVar8 == 0x1c4f) goto LAB_0001e134;\nLAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }\n    uVar1 = param_1[2];\n    uVar4 = param_1[3];\n  }" ({ "{") (expression_statement "param_1[0x16] = 0;" (assignment_expression "param_1[0x16] = 0" (subscript_expression "param_1[0x16]" (identifier "param_1") ([ "[") (number_literal "0x16") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = param_4 - param_1[3];" (assignment_expression "uVar3 = param_4 - param_1[3]" (identifier "uVar3") (= "=") (binary_expression "param_4 - param_1[3]" (identifier "param_4") (- "-") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);" (assignment_expression "param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3)" (identifier "param_3") (= "=") (binary_expression "(param_3 - param_1[2]) - (uint)(param_4 < uVar3)" (parenthesized_expression "(param_3 - param_1[2])" (( "(") (binary_expression "param_3 - param_1[2]" (identifier "param_3") (- "-") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) () ")")) (- "-") (call_expression "(uint)(param_4 < uVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_4 < uVar3)" (( "(") (binary_expression "param_4 < uVar3" (identifier "param_4") (< "<") (identifier "uVar3")) () ")"))))) (; ";")) (expression_statement "uVar6 = uVar3;" (assignment_expression "uVar6 = uVar3" (identifier "uVar6") (= "=") (identifier "uVar3")) (; ";")) (if_statement "if (uVar8 == 0x1c4f) goto LAB_0001e134;" (if "if") (parenthesized_expression "(uVar8 == 0x1c4f)" (( "(") (binary_expression "uVar8 == 0x1c4f" (identifier "uVar8") (== "==") (number_literal "0x1c4f")) () ")")) (goto_statement "goto LAB_0001e134;" (goto "goto") (statement_identifier "LAB_0001e134") (; ";"))) (labeled_statement "LAB_0001e08c:\n    if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }" (statement_identifier "LAB_0001e08c") (: ":") (if_statement "if ((int)param_3 < 0) {\n      return 0xffffffffffffffff;\n    }" (if "if") (parenthesized_expression "((int)param_3 < 0)" (( "(") (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      return 0xffffffffffffffff;\n    }" ({ "{") (return_statement "return 0xffffffffffffffff;" (return "return") (number_literal "0xffffffffffffffff") (; ";")) (} "}")))) (expression_statement "uVar1 = param_1[2];" (assignment_expression "uVar1 = param_1[2]" (identifier "uVar1") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar4 = param_1[3];" (assignment_expression "uVar4 = param_1[3]" (identifier "uVar4") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }" (else "else") (compound_statement "{\n    uVar3 = param_4;\n    if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }\n    param_1[0x16] = 0;\n    uVar6 = uVar3;\n    if (uVar8 != 0x1c4f) goto LAB_0001e08c;\nLAB_0001e134:\n    uVar1 = param_1[2];\n    uVar5 = param_1[3];\n    if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }\n    uVar7 = *param_1;\n    uVar8 = 0;\n    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }\n    uVar4 = uVar5 + uVar7;\n    *param_1 = uVar6;\n    uVar6 = uVar3 - uVar7;\n    param_1[3] = uVar4;\n    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;\n    param_1[2] = uVar1;\n    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);\n    param_1[1] = param_1[1] + uVar7;\n  }" ({ "{") (expression_statement "uVar3 = param_4;" (assignment_expression "uVar3 = param_4" (identifier "uVar3") (= "=") (identifier "param_4")) (; ";")) (if_statement "if (param_1[0x16] != 0) {\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }" (if "if") (parenthesized_expression "(param_1[0x16] != 0)" (( "(") (binary_expression "param_1[0x16] != 0" (subscript_expression "param_1[0x16]" (identifier "param_1") ([ "[") (number_literal "0x16") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar3 = param_4 + param_1[0x15];\n      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];\n    }" ({ "{") (expression_statement "uVar3 = param_4 + param_1[0x15];" (assignment_expression "uVar3 = param_4 + param_1[0x15]" (identifier "uVar3") (= "=") (binary_expression "param_4 + param_1[0x15]" (identifier "param_4") (+ "+") (subscript_expression "param_1[0x15]" (identifier "param_1") ([ "[") (number_literal "0x15") (] "]")))) (; ";")) (expression_statement "param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];" (assignment_expression "param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14]" (identifier "param_3") (= "=") (binary_expression "(uint)(uVar3 < param_4) + param_3 + param_1[0x14]" (binary_expression "(uint)(uVar3 < param_4) + param_3" (call_expression "(uint)(uVar3 < param_4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar3 < param_4)" (( "(") (binary_expression "uVar3 < param_4" (identifier "uVar3") (< "<") (identifier "param_4")) () ")"))) (+ "+") (identifier "param_3")) (+ "+") (subscript_expression "param_1[0x14]" (identifier "param_1") ([ "[") (number_literal "0x14") (] "]")))) (; ";")) (} "}"))) (expression_statement "param_1[0x16] = 0;" (assignment_expression "param_1[0x16] = 0" (subscript_expression "param_1[0x16]" (identifier "param_1") ([ "[") (number_literal "0x16") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar6 = uVar3;" (assignment_expression "uVar6 = uVar3" (identifier "uVar6") (= "=") (identifier "uVar3")) (; ";")) (if_statement "if (uVar8 != 0x1c4f) goto LAB_0001e08c;" (if "if") (parenthesized_expression "(uVar8 != 0x1c4f)" (( "(") (binary_expression "uVar8 != 0x1c4f" (identifier "uVar8") (!= "!=") (number_literal "0x1c4f")) () ")")) (goto_statement "goto LAB_0001e08c;" (goto "goto") (statement_identifier "LAB_0001e08c") (; ";"))) (labeled_statement "LAB_0001e134:\n    uVar1 = param_1[2];" (statement_identifier "LAB_0001e134") (: ":") (expression_statement "uVar1 = param_1[2];" (assignment_expression "uVar1 = param_1[2]" (identifier "uVar1") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";"))) (expression_statement "uVar5 = param_1[3];" (assignment_expression "uVar5 = param_1[3]" (identifier "uVar5") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if (param_1[0xc] == 1) {\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }\n    else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }" (if "if") (parenthesized_expression "(param_1[0xc] == 1)" (( "(") (binary_expression "param_1[0xc] == 1" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      uVar8 = (uint)(uVar3 + uVar5 < uVar3);\n      if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n    }" ({ "{") (expression_statement "uVar8 = (uint)(uVar3 + uVar5 < uVar3);" (assignment_expression "uVar8 = (uint)(uVar3 + uVar5 < uVar3)" (identifier "uVar8") (= "=") (call_expression "(uint)(uVar3 + uVar5 < uVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar3 + uVar5 < uVar3)" (( "(") (binary_expression "uVar3 + uVar5 < uVar3" (binary_expression "uVar3 + uVar5" (identifier "uVar3") (+ "+") (identifier "uVar5")) (< "<") (identifier "uVar3")) () ")")))) (; ";")) (if_statement "if (-1 < (int)(uVar8 + param_3 + uVar1)) {\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }" (if "if") (parenthesized_expression "(-1 < (int)(uVar8 + param_3 + uVar1))" (( "(") (binary_expression "-1 < (int)(uVar8 + param_3 + uVar1)" (number_literal "-1") (< "<") (cast_expression "(int)(uVar8 + param_3 + uVar1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar8 + param_3 + uVar1)" (( "(") (binary_expression "uVar8 + param_3 + uVar1" (binary_expression "uVar8 + param_3" (identifier "uVar8") (+ "+") (identifier "param_3")) (+ "+") (identifier "uVar1")) () ")")))) () ")")) (compound_statement "{\n        lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;\n        if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }\n        *param_1 = 0;\n        param_1[0x10] = 0;\n        param_1[0x11] = 0;\n        param_1[0x16] = 0;\n        if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }\n        param_1[0x17] = 0;\n        uVar4 = uVar3 + param_1[3];\n        param_1[0x1a] = 0;\n        param_1[3] = uVar4;\n        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];\n        param_1[2] = uVar8;\n        goto LAB_0001e0c4;\n      }" ({ "{") (expression_statement "lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)\n        ;" (assignment_expression "lVar9 = (*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)" (identifier "lVar9") (= "=") (call_expression "(*(code *)PTR_lseek64_000360dc)\n                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)" (parenthesized_expression "(*(code *)PTR_lseek64_000360dc)" (( "(") (pointer_expression "*(code *)PTR_lseek64_000360dc" (* "*") (cast_expression "(code *)PTR_lseek64_000360dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_lseek64_000360dc"))) () ")")) (argument_list "(param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)" (( "(") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (, ",") (identifier "uVar8") (, ",") (binary_expression "param_3 - (uVar3 < uVar3 - *param_1)" (identifier "param_3") (- "-") (parenthesized_expression "(uVar3 < uVar3 - *param_1)" (( "(") (binary_expression "uVar3 < uVar3 - *param_1" (identifier "uVar3") (< "<") (binary_expression "uVar3 - *param_1" (identifier "uVar3") (- "-") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) () ")"))) (, ",") (binary_expression "uVar3 - *param_1" (identifier "uVar3") (- "-") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if (lVar9 == -1) {\n          return 0xffffffffffffffff;\n        }" (if "if") (parenthesized_expression "(lVar9 == -1)" (( "(") (binary_expression "lVar9 == -1" (identifier "lVar9") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          return 0xffffffffffffffff;\n        }" ({ "{") (return_statement "return 0xffffffffffffffff;" (return "return") (number_literal "0xffffffffffffffff") (; ";")) (} "}"))) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x11] = 0;" (assignment_expression "param_1[0x11] = 0" (subscript_expression "param_1[0x11]" (identifier "param_1") ([ "[") (number_literal "0x11") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x16] = 0;" (assignment_expression "param_1[0x16] = 0" (subscript_expression "param_1[0x16]" (identifier "param_1") ([ "[") (number_literal "0x16") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_1[0x18] != 0) {\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }" (if "if") (parenthesized_expression "(param_1[0x18] != 0)" (( "(") (binary_expression "param_1[0x18] != 0" (subscript_expression "param_1[0x18]" (identifier "param_1") ([ "[") (number_literal "0x18") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }\n          param_1[0x18] = 0;\n        }" ({ "{") (if_statement "if (param_1[0x17] != 0xfffffffc) {\n            (*(code *)PTR_free_00036104)();\n          }" (if "if") (parenthesized_expression "(param_1[0x17] != 0xfffffffc)" (( "(") (binary_expression "param_1[0x17] != 0xfffffffc" (subscript_expression "param_1[0x17]" (identifier "param_1") ([ "[") (number_literal "0x17") (] "]")) (!= "!=") (number_literal "0xfffffffc")) () ")")) (compound_statement "{\n            (*(code *)PTR_free_00036104)();\n          }" ({ "{") (expression_statement "(*(code *)PTR_free_00036104)();" (call_expression "(*(code *)PTR_free_00036104)()" (parenthesized_expression "(*(code *)PTR_free_00036104)" (( "(") (pointer_expression "*(code *)PTR_free_00036104" (* "*") (cast_expression "(code *)PTR_free_00036104" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_00036104"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "param_1[0x18] = 0;" (assignment_expression "param_1[0x18] = 0" (subscript_expression "param_1[0x18]" (identifier "param_1") ([ "[") (number_literal "0x18") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "param_1[0x17] = 0;" (assignment_expression "param_1[0x17] = 0" (subscript_expression "param_1[0x17]" (identifier "param_1") ([ "[") (number_literal "0x17") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar4 = uVar3 + param_1[3];" (assignment_expression "uVar4 = uVar3 + param_1[3]" (identifier "uVar4") (= "=") (binary_expression "uVar3 + param_1[3]" (identifier "uVar3") (+ "+") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "param_1[0x1a] = 0;" (assignment_expression "param_1[0x1a] = 0" (subscript_expression "param_1[0x1a]" (identifier "param_1") ([ "[") (number_literal "0x1a") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[3] = uVar4;" (assignment_expression "param_1[3] = uVar4" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];" (assignment_expression "uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2]" (identifier "uVar8") (= "=") (binary_expression "(uint)(uVar4 < uVar3) + param_3 + param_1[2]" (binary_expression "(uint)(uVar4 < uVar3) + param_3" (call_expression "(uint)(uVar4 < uVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar4 < uVar3)" (( "(") (binary_expression "uVar4 < uVar3" (identifier "uVar4") (< "<") (identifier "uVar3")) () ")"))) (+ "+") (identifier "param_3")) (+ "+") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "param_1[2] = uVar8;" (assignment_expression "param_1[2] = uVar8" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (goto_statement "goto LAB_0001e0c4;" (goto "goto") (statement_identifier "LAB_0001e0c4") (; ";")) (} "}"))) (if_statement "if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }" (if "if") (parenthesized_expression "((int)param_3 < 0)" (( "(") (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        return 0xffffffffffffffff;\n      }" ({ "{") (return_statement "return 0xffffffffffffffff;" (return "return") (number_literal "0xffffffffffffffff") (; ";")) (} "}"))) (} "}")) (else_clause "else if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }" (else "else") (if_statement "if ((int)param_3 < 0) {\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }" (if "if") (parenthesized_expression "((int)param_3 < 0)" (( "(") (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      uVar6 = uVar3 + uVar5;\n      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;\n      if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }\n      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);\n      if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }\n      uVar1 = param_1[2];\n      uVar4 = param_1[3];\n      uVar5 = uVar4;\n      uVar3 = uVar6;\n      if (param_1[4] != uVar8) goto LAB_0001e09c;\n    }" ({ "{") (expression_statement "uVar6 = uVar3 + uVar5;" (assignment_expression "uVar6 = uVar3 + uVar5" (identifier "uVar6") (= "=") (binary_expression "uVar3 + uVar5" (identifier "uVar3") (+ "+") (identifier "uVar5"))) (; ";")) (expression_statement "param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;" (assignment_expression "param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1" (identifier "param_3") (= "=") (binary_expression "(uint)(uVar6 < uVar3) + param_3 + uVar1" (binary_expression "(uint)(uVar6 < uVar3) + param_3" (call_expression "(uint)(uVar6 < uVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar6 < uVar3)" (( "(") (binary_expression "uVar6 < uVar3" (identifier "uVar6") (< "<") (identifier "uVar3")) () ")"))) (+ "+") (identifier "param_3")) (+ "+") (identifier "uVar1"))) (; ";")) (if_statement "if ((int)param_3 < 0) {\n        return 0xffffffffffffffff;\n      }" (if "if") (parenthesized_expression "((int)param_3 < 0)" (( "(") (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        return 0xffffffffffffffff;\n      }" ({ "{") (return_statement "return 0xffffffffffffffff;" (return "return") (number_literal "0xffffffffffffffff") (; ";")) (} "}"))) (expression_statement "iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);" (assignment_expression "iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR_gzrewind_00036090)(param_1)" (parenthesized_expression "(*(code *)PTR_gzrewind_00036090)" (( "(") (pointer_expression "*(code *)PTR_gzrewind_00036090" (* "*") (cast_expression "(code *)PTR_gzrewind_00036090" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_gzrewind_00036090"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar2 == -1) {\n        return 0xffffffffffffffff;\n      }" (if "if") (parenthesized_expression "(iVar2 == -1)" (( "(") (binary_expression "iVar2 == -1" (identifier "iVar2") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        return 0xffffffffffffffff;\n      }" ({ "{") (return_statement "return 0xffffffffffffffff;" (return "return") (number_literal "0xffffffffffffffff") (; ";")) (} "}"))) (expression_statement "uVar1 = param_1[2];" (assignment_expression "uVar1 = param_1[2]" (identifier "uVar1") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar4 = param_1[3];" (assignment_expression "uVar4 = param_1[3]" (identifier "uVar4") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" (identifier "uVar5") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar3 = uVar6;" (assignment_expression "uVar3 = uVar6" (identifier "uVar3") (= "=") (identifier "uVar6")) (; ";")) (if_statement "if (param_1[4] != uVar8) goto LAB_0001e09c;" (if "if") (parenthesized_expression "(param_1[4] != uVar8)" (( "(") (binary_expression "param_1[4] != uVar8" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (!= "!=") (identifier "uVar8")) () ")")) (goto_statement "goto LAB_0001e09c;" (goto "goto") (statement_identifier "LAB_0001e09c") (; ";"))) (} "}"))))) (expression_statement "uVar7 = *param_1;" (assignment_expression "uVar7 = *param_1" (identifier "uVar7") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (if_statement "if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }" (if "if") (parenthesized_expression "(((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7))))" (( "(") (binary_expression "((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))" (parenthesized_expression "((int)param_3 < 0)" (( "(") (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))" (( "(") (parenthesized_expression "(uVar6 = 0, param_3 == 0 && (uVar3 < uVar7))" (( "(") (comma_expression "uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (, ",") (binary_expression "param_3 == 0 && (uVar3 < uVar7)" (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(uVar3 < uVar7)" (( "(") (binary_expression "uVar3 < uVar7" (identifier "uVar3") (< "<") (identifier "uVar7")) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n      uVar6 = uVar7 - uVar3;\n      uVar8 = param_3;\n      uVar7 = uVar3;\n    }" ({ "{") (expression_statement "uVar6 = uVar7 - uVar3;" (assignment_expression "uVar6 = uVar7 - uVar3" (identifier "uVar6") (= "=") (binary_expression "uVar7 - uVar3" (identifier "uVar7") (- "-") (identifier "uVar3"))) (; ";")) (expression_statement "uVar8 = param_3;" (assignment_expression "uVar8 = param_3" (identifier "uVar8") (= "=") (identifier "param_3")) (; ";")) (expression_statement "uVar7 = uVar3;" (assignment_expression "uVar7 = uVar3" (identifier "uVar7") (= "=") (identifier "uVar3")) (; ";")) (} "}"))) (expression_statement "uVar4 = uVar5 + uVar7;" (assignment_expression "uVar4 = uVar5 + uVar7" (identifier "uVar4") (= "=") (binary_expression "uVar5 + uVar7" (identifier "uVar5") (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "*param_1 = uVar6;" (assignment_expression "*param_1 = uVar6" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar6 = uVar3 - uVar7;" (assignment_expression "uVar6 = uVar3 - uVar7" (identifier "uVar6") (= "=") (binary_expression "uVar3 - uVar7" (identifier "uVar3") (- "-") (identifier "uVar7"))) (; ";")) (expression_statement "param_1[3] = uVar4;" (assignment_expression "param_1[3] = uVar4" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;" (assignment_expression "uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8" (identifier "uVar1") (= "=") (binary_expression "(uint)(uVar4 < uVar5) + uVar1 + uVar8" (binary_expression "(uint)(uVar4 < uVar5) + uVar1" (call_expression "(uint)(uVar4 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar4 < uVar5)" (( "(") (binary_expression "uVar4 < uVar5" (identifier "uVar4") (< "<") (identifier "uVar5")) () ")"))) (+ "+") (identifier "uVar1")) (+ "+") (identifier "uVar8"))) (; ";")) (expression_statement "param_1[2] = uVar1;" (assignment_expression "param_1[2] = uVar1" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);" (assignment_expression "param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6)" (identifier "param_3") (= "=") (binary_expression "(param_3 - uVar8) - (uint)(uVar3 < uVar6)" (parenthesized_expression "(param_3 - uVar8)" (( "(") (binary_expression "param_3 - uVar8" (identifier "param_3") (- "-") (identifier "uVar8")) () ")")) (- "-") (call_expression "(uint)(uVar3 < uVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar3 < uVar6)" (( "(") (binary_expression "uVar3 < uVar6" (identifier "uVar3") (< "<") (identifier "uVar6")) () ")"))))) (; ";")) (expression_statement "param_1[1] = param_1[1] + uVar7;" (assignment_expression "param_1[1] = param_1[1] + uVar7" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "param_1[1] + uVar7" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "uVar7"))) (; ";")) (} "}")))) (labeled_statement "LAB_0001e09c:\n  if (param_3 != 0 || uVar6 != 0) {\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }" (statement_identifier "LAB_0001e09c") (: ":") (if_statement "if (param_3 != 0 || uVar6 != 0) {\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }" (if "if") (parenthesized_expression "(param_3 != 0 || uVar6 != 0)" (( "(") (binary_expression "param_3 != 0 || uVar6 != 0" (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n    param_1[0x14] = param_3;\n    param_1[0x15] = uVar6;\n    param_1[0x16] = 1;\n  }" ({ "{") (expression_statement "param_1[0x14] = param_3;" (assignment_expression "param_1[0x14] = param_3" (subscript_expression "param_1[0x14]" (identifier "param_1") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "param_1[0x15] = uVar6;" (assignment_expression "param_1[0x15] = uVar6" (subscript_expression "param_1[0x15]" (identifier "param_1") ([ "[") (number_literal "0x15") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "param_1[0x16] = 1;" (assignment_expression "param_1[0x16] = 1" (subscript_expression "param_1[0x16]" (identifier "param_1") ([ "[") (number_literal "0x16") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "uVar4 = uVar6 + uVar4;" (assignment_expression "uVar4 = uVar6 + uVar4" (identifier "uVar4") (= "=") (binary_expression "uVar6 + uVar4" (identifier "uVar6") (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "uVar8 = (uint)(uVar4 < uVar6) + param_3 + uVar1;" (assignment_expression "uVar8 = (uint)(uVar4 < uVar6) + param_3 + uVar1" (identifier "uVar8") (= "=") (binary_expression "(uint)(uVar4 < uVar6) + param_3 + uVar1" (binary_expression "(uint)(uVar4 < uVar6) + param_3" (call_expression "(uint)(uVar4 < uVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar4 < uVar6)" (( "(") (binary_expression "uVar4 < uVar6" (identifier "uVar4") (< "<") (identifier "uVar6")) () ")"))) (+ "+") (identifier "param_3")) (+ "+") (identifier "uVar1"))) (; ";")) (labeled_statement "LAB_0001e0c4:\n  return CONCAT44(uVar8,uVar4);" (statement_identifier "LAB_0001e0c4") (: ":") (return_statement "return CONCAT44(uVar8,uVar4);" (return "return") (call_expression "CONCAT44(uVar8,uVar4)" (identifier "CONCAT44") (argument_list "(uVar8,uVar4)" (( "(") (identifier "uVar8") (, ",") (identifier "uVar4") () ")"))) (; ";"))) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (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 (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_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: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_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 (return_statement (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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 (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (goto_statement label: (statement_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 (return_statement (number_literal))))) alternative: (else_clause (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 (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (identifier)) right: (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 (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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 (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (identifier)) right: (identifier)))) (labeled_statement label: (statement_identifier) (return_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))))))

undefined8 MASKED(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  longlong lVar9;
  
  if (param_1 == (uint *)0x0) {
    return 0xffffffffffffffff;
  }
  uVar8 = param_1[4];
  if ((uVar8 != 0x1c4f) && (uVar8 != 0x79b1)) {
    return 0xffffffffffffffff;
  }
  if ((param_1[0x17] != 0) && (param_1[0x17] != 0xfffffffb)) {
    return 0xffffffffffffffff;
  }
  if (1 < param_5) {
    return 0xffffffffffffffff;
  }
  if (param_5 == 0) {
    param_1[0x16] = 0;
    uVar3 = param_4 - param_1[3];
    param_3 = (param_3 - param_1[2]) - (uint)(param_4 < uVar3);
    uVar6 = uVar3;
    if (uVar8 == 0x1c4f) goto LAB_0001e134;
LAB_0001e08c:
    if ((int)param_3 < 0) {
      return 0xffffffffffffffff;
    }
    uVar1 = param_1[2];
    uVar4 = param_1[3];
  }
  else {
    uVar3 = param_4;
    if (param_1[0x16] != 0) {
      uVar3 = param_4 + param_1[0x15];
      param_3 = (uint)(uVar3 < param_4) + param_3 + param_1[0x14];
    }
    param_1[0x16] = 0;
    uVar6 = uVar3;
    if (uVar8 != 0x1c4f) goto LAB_0001e08c;
LAB_0001e134:
    uVar1 = param_1[2];
    uVar5 = param_1[3];
    if (param_1[0xc] == 1) {
      uVar8 = (uint)(uVar3 + uVar5 < uVar3);
      if (-1 < (int)(uVar8 + param_3 + uVar1)) {
        lVar9 = (*(code *)PTR_lseek64_000360dc)
                          (param_1[5],uVar8,param_3 - (uVar3 < uVar3 - *param_1),uVar3 - *param_1,1)
        ;
        if (lVar9 == -1) {
          return 0xffffffffffffffff;
        }
        *param_1 = 0;
        param_1[0x10] = 0;
        param_1[0x11] = 0;
        param_1[0x16] = 0;
        if (param_1[0x18] != 0) {
          if (param_1[0x17] != 0xfffffffc) {
            (*(code *)PTR_free_00036104)();
          }
          param_1[0x18] = 0;
        }
        param_1[0x17] = 0;
        uVar4 = uVar3 + param_1[3];
        param_1[0x1a] = 0;
        param_1[3] = uVar4;
        uVar8 = (uint)(uVar4 < uVar3) + param_3 + param_1[2];
        param_1[2] = uVar8;
        goto LAB_0001e0c4;
      }
      if ((int)param_3 < 0) {
        return 0xffffffffffffffff;
      }
    }
    else if ((int)param_3 < 0) {
      uVar6 = uVar3 + uVar5;
      param_3 = (uint)(uVar6 < uVar3) + param_3 + uVar1;
      if ((int)param_3 < 0) {
        return 0xffffffffffffffff;
      }
      iVar2 = (*(code *)PTR_gzrewind_00036090)(param_1);
      if (iVar2 == -1) {
        return 0xffffffffffffffff;
      }
      uVar1 = param_1[2];
      uVar4 = param_1[3];
      uVar5 = uVar4;
      uVar3 = uVar6;
      if (param_1[4] != uVar8) goto LAB_0001e09c;
    }
    uVar7 = *param_1;
    uVar8 = 0;
    if (((int)param_3 < 0) || ((uVar6 = 0, param_3 == 0 && (uVar3 < uVar7)))) {
      uVar6 = uVar7 - uVar3;
      uVar8 = param_3;
      uVar7 = uVar3;
    }
    uVar4 = uVar5 + uVar7;
    *param_1 = uVar6;
    uVar6 = uVar3 - uVar7;
    param_1[3] = uVar4;
    uVar1 = (uint)(uVar4 < uVar5) + uVar1 + uVar8;
    param_1[2] = uVar1;
    param_3 = (param_3 - uVar8) - (uint)(uVar3 < uVar6);
    param_1[1] = param_1[1] + uVar7;
  }
LAB_0001e09c:
  if (param_3 != 0 || uVar6 != 0) {
    param_1[0x14] = param_3;
    param_1[0x15] = uVar6;
    param_1[0x16] = 1;
  }
  uVar4 = uVar6 + uVar4;
  uVar8 = (uint)(uVar4 < uVar6) + param_3 + uVar1;
LAB_0001e0c4:
  return CONCAT44(uVar8,uVar4);
}

