
void png_handle_fcTL(png_structp png_ptr,png_infop info_ptr,png_uint_32 length)

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  png_uint_32 pVar4;
  int iVar5;
  uint uVar6;
  png_structp ppVar7;
  png_structp png_ptr_00;
  png_uint_32 pVar8;
  png_bytep ppVar9;
  undefined *puVar10;
  int *piVar11;
  undefined *puVar12;
  code *pcVar13;
  undefined8 uVar14;
  uint auStack_bc [14];
  png_structp ppStack_84;
  png_structp ppStack_7c;
  png_uint_32 pStack_78;
  code *pcStack_74;
  png_uint_32 local_60;
  int local_5c;
  uint local_58;
  uint local_54;
  uint local_50;
  uint local_4c;
  png_byte data [22];
  
  puVar12 = PTR___stack_chk_guard_000534bc;
  iVar2 = *(int *)PTR___stack_chk_guard_000534bc;
  png_ensure_sequence_number(png_ptr,length);
  uVar3 = png_ptr->mode;
  if ((uVar3 & 1) == 0) goto LAB_000313f8;
  if ((uVar3 & 4) == 0) {
    if ((int)(uVar3 << 0xe) < 0) {
      puVar10 = PTR_s_nt_0005301c + 0xc54;
      goto LAB_000311f4;
    }
    if (length != 0x1a) {
      puVar10 = PTR_s_nt_0005301c + 0xc7c;
      goto LAB_000311f4;
    }
    png_crc_read(png_ptr,data,0x16);
    png_crc_finish(png_ptr,0);
    pVar8 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data);
    pVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 4);
    length = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 8);
    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 0xc);
    if (png_ptr->num_frames_read == 0) {
      if (length == 0 && iVar5 == 0) {
        if (info_ptr != (png_infop)0x0) {
          if ((info_ptr->width == pVar8) && (info_ptr->height == pVar4)) goto LAB_00031338;
          (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xcd0);
        }
      }
      else {
        (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xca0);
      }
    }
    else if (info_ptr != (png_infop)0x0) {
LAB_00031338:
      local_4c = (uint)data[0x15];
      local_50 = (uint)data[0x14];
      local_54 = (uint)data[0x12] * 0x100 + (uint)data[0x13] & 0xffff;
      local_58 = (uint)data[0x10] * 0x100 + (uint)data[0x11] & 0xffff;
      local_60 = length;
      local_5c = iVar5;
      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(png_ptr,info_ptr,pVar8,pVar4);
      png_read_reinit(png_ptr,info_ptr);
      png_ptr->mode = png_ptr->mode | 0x20000;
    }
  }
  else {
    puVar10 = PTR_s_nt_0005301c + 0xc34;
LAB_000311f4:
    (*(code *)PTR_png_warning_00053440)(png_ptr,puVar10);
    png_crc_finish(png_ptr,length - 4);
  }
  if (iVar2 == *(int *)puVar12) {
    return;
  }
  (*(code *)PTR___stack_chk_fail_00053484)();
LAB_000313f8:
  pcVar13 = png_progressive_read_reset;
  png_ptr_00 = png_ptr;
  puVar12 = PTR_png_error_0005340c;
  (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + 0xc18);
  pStack_78 = length;
  ppStack_7c = png_ptr;
  pcStack_74 = pcVar13;
  auStack_bc[1] = 4;
  auStack_bc[7] = 8;
  auStack_bc[8] = 8;
  auStack_bc[9] = 4;
  auStack_bc[10] = 4;
  piVar11 = *(int **)(puVar12 + 0x220b0);
  auStack_bc[3] = 2;
  auStack_bc[5] = 1;
  auStack_bc[0xb] = 2;
  auStack_bc[0xc] = 2;
  auStack_bc[0xd] = 1;
  auStack_bc[0] = 0;
  auStack_bc[2] = 0;
  auStack_bc[4] = 0;
  auStack_bc[6] = 0;
  pVar8 = png_ptr_00->height;
  ppStack_84 = (png_structp)*piVar11;
  if (png_ptr_00->interlaced == '\0') {
    png_ptr_00->num_rows = pVar8;
    png_ptr_00->iwidth = png_ptr_00->width;
  }
  else {
    if ((png_ptr_00->transformations & 2) == 0) {
      pVar8 = pVar8 + 7 >> 3;
    }
    png_ptr_00->num_rows = pVar8;
    uVar3 = auStack_bc[png_ptr_00->pass + 7];
    if (uVar3 == 0) {
      trap(7);
    }
    png_ptr_00->iwidth = (((png_ptr_00->width - 1) + uVar3) - auStack_bc[png_ptr_00->pass]) / uVar3;
  }
  pcVar13 = *(code **)(puVar12 + 0x21f00);
  png_ptr_00->flags = png_ptr_00->flags & 0xfffffff7;
  iVar2 = (*pcVar13)(&png_ptr_00->zstream);
  if (iVar2 == 0) {
    bVar1 = png_ptr_00->pixel_depth;
    ppVar9 = png_ptr_00->row_buf;
    uVar3 = png_ptr_00->iwidth;
    (png_ptr_00->zstream).avail_in = 0;
    (png_ptr_00->zstream).next_in = (Bytef *)0x0;
    (png_ptr_00->zstream).next_out = ppVar9;
    if (bVar1 < 8) {
      uVar6 = bVar1 * uVar3 + 7 >> 3;
    }
    else {
      uVar6 = (bVar1 >> 3) * uVar3;
    }
    ppVar7 = (png_structp)*piVar11;
    (png_ptr_00->zstream).avail_out = uVar6 + 1;
    png_ptr_00 = ppStack_84;
    if (ppStack_84 == ppVar7) {
      return;
    }
  }
  else {
    uVar3 = *(int *)(puVar12 + 0x21c10) + 0xd08;
    (**(code **)(puVar12 + 0x22000))();
  }
  pcVar13 = *(code **)(puVar12 + 0x22078);
  (*pcVar13)();
  uVar3 = uVar3 & 0xb;
  if (uVar3 != 0) goto LAB_000315f4;
  if ((png_ptr_00->mode & 0x8000) == 0) {
    png_app_warning(png_ptr_00,(png_const_charp)(*(int *)(pcVar13 + 0x21a7c) + 0xe6c));
    uVar3 = png_ptr_00->mode & 0xb;
    if (uVar3 != 0) {
      for (; (-uVar3 & uVar3) != uVar3; uVar3 = uVar3 & uVar3 - 1) {
      }
      return;
    }
    iVar2 = *(int *)(pcVar13 + 0x21a7c);
  }
  else {
    iVar2 = *(int *)(pcVar13 + 0x21a7c);
  }
  uVar14 = (**(code **)(pcVar13 + 0x21e6c))(png_ptr_00,iVar2 + 0xe40);
  do {
    uVar3 = (uint)((ulonglong)uVar14 >> 0x20) & (uint)uVar14;
LAB_000315f4:
    uVar14 = CONCAT44(uVar3,uVar3 - 1);
  } while ((-uVar3 & uVar3) != uVar3);
  return;
}



uint FUN_00031160(int param_1,int *param_2,int param_3)

{
  byte bVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  undefined *puVar8;
  int *piVar9;
  undefined *puVar10;
  code *pcVar11;
  undefined8 uVar12;
  uint auStack_bc [16];
  int iStack_7c;
  int iStack_78;
  code *pcStack_74;
  int local_60;
  int local_5c;
  uint local_58;
  uint local_54;
  uint local_50;
  uint local_4c;
  undefined1 auStack_3c [4];
  undefined1 auStack_38 [4];
  undefined1 auStack_34 [4];
  undefined1 auStack_30 [4];
  byte local_2c;
  byte local_2b;
  byte local_2a;
  byte local_29;
  byte local_28;
  byte local_27;
  uint local_24;
  
  puVar10 = PTR___stack_chk_guard_000534bc;
  local_24 = *(uint *)PTR___stack_chk_guard_000534bc;
  FUN_0002f4f4(param_1,param_3);
  uVar2 = *(uint *)(param_1 + 0x124);
  if ((uVar2 & 1) == 0) goto LAB_000313f8;
  if ((uVar2 & 4) == 0) {
    if ((int)(uVar2 << 0xe) < 0) {
      puVar8 = PTR_s_nt_0005301c + 0xc54;
      goto LAB_000311f4;
    }
    if (param_3 != 0x1a) {
      puVar8 = PTR_s_nt_0005301c + 0xc7c;
      goto LAB_000311f4;
    }
    FUN_0002aef8(param_1,auStack_3c,0x16);
    FUN_0002b068(param_1,0);
    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);
    iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);
    param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);
    iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);
    if (*(int *)(param_1 + 0x318) == 0) {
      if (param_3 == 0 && iVar4 == 0) {
        if (param_2 != (int *)0x0) {
          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;
          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);
        }
      }
      else {
        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);
      }
    }
    else if (param_2 != (int *)0x0) {
LAB_00031338:
      local_4c = (uint)local_27;
      local_50 = (uint)local_28;
      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;
      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;
      local_60 = param_3;
      local_5c = iVar4;
      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);
      FUN_000310c4(param_1,param_2);
      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;
    }
  }
  else {
    puVar8 = PTR_s_nt_0005301c + 0xc34;
LAB_000311f4:
    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);
    FUN_0002b068(param_1,param_3 + -4);
  }
  if (local_24 == *(uint *)puVar10) {
    return *(uint *)puVar10;
  }
  (*(code *)PTR___stack_chk_fail_00053484)();
LAB_000313f8:
  pcVar11 = FUN_0003140c;
  uVar2 = param_1;
  puVar10 = PTR_png_error_0005340c;
  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xc18);
  iStack_78 = param_3;
  iStack_7c = param_1;
  pcStack_74 = pcVar11;
  auStack_bc[1] = 4;
  auStack_bc[7] = 8;
  auStack_bc[8] = 8;
  auStack_bc[9] = 4;
  auStack_bc[10] = 4;
  piVar9 = *(int **)(puVar10 + 0x220b0);
  auStack_bc[3] = 2;
  auStack_bc[5] = 1;
  auStack_bc[0xb] = 2;
  auStack_bc[0xc] = 2;
  auStack_bc[0xd] = 1;
  auStack_bc[0] = 0;
  auStack_bc[2] = 0;
  auStack_bc[4] = 0;
  auStack_bc[6] = 0;
  uVar7 = *(uint *)(uVar2 + 0x1b4);
  auStack_bc[0xe] = *piVar9;
  if (*(char *)(uVar2 + 0x1fc) == '\0') {
    *(uint *)(uVar2 + 0x1b8) = uVar7;
    *(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);
  }
  else {
    if ((*(uint *)(uVar2 + 300) & 2) == 0) {
      uVar7 = uVar7 + 7 >> 3;
    }
    *(uint *)(uVar2 + 0x1b8) = uVar7;
    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];
    if (uVar7 == 0) {
      trap(7);
    }
    *(uint *)(uVar2 + 0x1c4) =
         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;
  }
  pcVar11 = *(code **)(puVar10 + 0x21f00);
  *(uint *)(uVar2 + 0x128) = *(uint *)(uVar2 + 0x128) & 0xfffffff7;
  iVar5 = (*pcVar11)(uVar2 + 0x134);
  if (iVar5 == 0) {
    bVar1 = *(byte *)(uVar2 + 0x202);
    uVar7 = *(uint *)(uVar2 + 0x1c4);
    *(undefined4 *)(uVar2 + 0x138) = 0;
    *(undefined4 *)(uVar2 + 0x134) = 0;
    *(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);
    if (bVar1 < 8) {
      uVar6 = bVar1 * uVar7 + 7 >> 3;
    }
    else {
      uVar6 = (bVar1 >> 3) * uVar7;
    }
    iVar5 = *piVar9;
    *(uint *)(uVar2 + 0x144) = uVar6 + 1;
    uVar2 = auStack_bc[0xe];
    if (auStack_bc[0xe] == iVar5) {
      return uVar6 + 1;
    }
  }
  else {
    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;
    (**(code **)(puVar10 + 0x22000))();
  }
  pcVar11 = *(code **)(puVar10 + 0x22078);
  (*pcVar11)();
  uVar7 = uVar7 & 0xb;
  if (uVar7 != 0) goto LAB_000315f4;
  if ((*(uint *)(uVar2 + 0x124) & 0x8000) == 0) {
    FUN_0001a110();
    uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;
    if (uVar7 != 0) {
      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {
      }
      return uVar7;
    }
    iVar5 = *(int *)(pcVar11 + 0x21a7c);
  }
  else {
    iVar5 = *(int *)(pcVar11 + 0x21a7c);
  }
  uVar12 = (**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40);
  do {
    uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;
LAB_000315f4:
    uVar12 = CONCAT44(uVar7,uVar7 - 1);
  } while ((-uVar7 & uVar7) != uVar7);
  return uVar7 & 0xff;
}


lui gp,0x3
addiu gp,gp,-0x6170
addu gp,gp,t9
addiu sp,sp,-0x70
lw t9,-0x7f30(gp)
sw s2,0x5c(sp)
lw s2,-0x7b34(gp)
sw s0,0x54(sp)
or s0,a0,zero
sw gp,0x28(sp)
sw s3,0x60(sp)
or s3,a1,zero
sw s1,0x58(sp)
or a1,a2,zero
sw ra,0x6c(sp)
or s1,a2,zero
sw s5,0x68(sp)
sw s4,0x64(sp)
lw v0,0x0(s2)
sw v0,0x4c(sp)
bal 0x0002f4f4
_nop
lw v0,0x124(s0)
andi v1,v0,0x1
beq v1,zero,0x000313f8
_lw gp,0x28(sp)
andi v1,v0,0x4
bne v1,zero,0x0003131c
_ext v0,v0,0x11,0x1
bne v0,zero,0x000313c0
_li v0,0x1a
beq s1,v0,0x00031244
_lw t9,-0x7f50(gp)
lw a1,-0x7fd4(gp)
or a0,s0,zero
lw t9,-0x7bb0(gp)
addiu a1,a1,0xc7c
jalr t9
_nop
addiu a1,s1,-0x4
lw gp,0x28(sp)
lw t9,-0x7eac(gp)
bal 0x0002b068
_or a0,s0,zero
lw gp,0x28(sp)
lw v1,0x4c(sp)
lw v0,0x0(s2)
bne v1,v0,0x000313ec
_lw ra,0x6c(sp)
lw s5,0x68(sp)
lw s4,0x64(sp)
lw s3,0x60(sp)
lw s2,0x5c(sp)
lw s1,0x58(sp)
lw s0,0x54(sp)
jr ra
_addiu sp,sp,0x70
addiu s1,sp,0x34
li a2,0x16
or a1,s1,zero
bal 0x0002aef8
_or a0,s0,zero
or a1,zero,zero
lw gp,0x28(sp)
lw t9,-0x7eac(gp)
bal 0x0002b068
_or a0,s0,zero
or a1,s1,zero
lw gp,0x28(sp)
lw t9,-0x7cb4(gp)
jalr t9
_or a0,s0,zero
addiu a1,sp,0x38
lw gp,0x28(sp)
or a0,s0,zero
lw t9,-0x7cb4(gp)
jalr t9
_or s4,v0,zero
addiu a1,sp,0x3c
lw gp,0x28(sp)
or a0,s0,zero
lw t9,-0x7cb4(gp)
jalr t9
_or s5,v0,zero
addiu a1,sp,0x40
lw gp,0x28(sp)
or a0,s0,zero
lw t9,-0x7cb4(gp)
jalr t9
_or s1,v0,zero
lw v1,0x318(s0)
bne v1,zero,0x00031330
_lw gp,0x28(sp)
or v1,s1,v0
bne v1,zero,0x000313d4
_lw a1,-0x7fd4(gp)
beq s3,zero,0x00031214
_nop
lw v1,0x0(s3)
bne v1,s4,0x00031304
_lw a1,-0x7fd4(gp)
lw v1,0x4(s3)
beq v1,s5,0x00031338
_lbu a2,0x46(sp)
lw a1,-0x7fd4(gp)
or a0,s0,zero
lw t9,-0x7bb0(gp)
jalr t9
_addiu a1,a1,0xcd0
b 0x00031214
_lw gp,0x28(sp)
lw a1,-0x7fd4(gp)
or a0,s0,zero
lw t9,-0x7bb0(gp)
b 0x000311f4
_addiu a1,a1,0xc34
beq s3,zero,0x00031214
_lbu a2,0x46(sp)
or a1,s3,zero
lbu v1,0x44(sp)
or a0,s0,zero
lbu t3,0x47(sp)
or a3,s5,zero
lbu t2,0x45(sp)
sll a2,a2,0x8
sll v1,v1,0x8
lbu t1,0x49(sp)
lbu t0,0x48(sp)
addu a2,a2,t3
addu v1,v1,t2
lw t9,-0x7d0c(gp)
andi a2,a2,0xffff
sw t1,0x24(sp)
andi v1,v1,0xffff
sw t0,0x20(sp)
sw v1,0x18(sp)
sw a2,0x1c(sp)
or a2,s4,zero
sw v0,0x14(sp)
jalr t9
_sw s1,0x10(sp)
or a1,s3,zero
lw gp,0x28(sp)
lw t9,-0x7f24(gp)
bal 0x000310c4
_or a0,s0,zero
lui v1,0x2
lw v0,0x124(s0)
lw gp,0x28(sp)
or v0,v0,v1
b 0x00031214
_sw v0,0x124(s0)
lw a1,-0x7fd4(gp)
or a0,s0,zero
lw t9,-0x7bb0(gp)
b 0x000311f4
_addiu a1,a1,0xc54
or a0,s0,zero
lw t9,-0x7bb0(gp)
jalr t9
_addiu a1,a1,0xca0
b 0x00031214
_lw gp,0x28(sp)
lw t9,-0x7b6c(gp)
jalr t9
_nop
lw a1,-0x7fd4(gp)
or a0,s0,zero
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,0xc18
(translation_unit "uint FUN_00031160(int param_1,int *param_2,int param_3)\n\n{\n  byte bVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined *puVar8;\n  int *piVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined8 uVar12;\n  uint auStack_bc [16];\n  int iStack_7c;\n  int iStack_78;\n  code *pcStack_74;\n  int local_60;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  uint local_4c;\n  undefined1 auStack_3c [4];\n  undefined1 auStack_38 [4];\n  undefined1 auStack_34 [4];\n  undefined1 auStack_30 [4];\n  byte local_2c;\n  byte local_2b;\n  byte local_2a;\n  byte local_29;\n  byte local_28;\n  byte local_27;\n  uint local_24;\n  \n  puVar10 = PTR___stack_chk_guard_000534bc;\n  local_24 = *(uint *)PTR___stack_chk_guard_000534bc;\n  FUN_0002f4f4(param_1,param_3);\n  uVar2 = *(uint *)(param_1 + 0x124);\n  if ((uVar2 & 1) == 0) goto LAB_000313f8;\n  if ((uVar2 & 4) == 0) {\n    if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    FUN_0002aef8(param_1,auStack_3c,0x16);\n    FUN_0002b068(param_1,0);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);\n    iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);\n    param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);\n    iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);\n    if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }\n  }\n  else {\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }\n  if (local_24 == *(uint *)puVar10) {\n    return *(uint *)puVar10;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\nLAB_000313f8:\n  pcVar11 = FUN_0003140c;\n  uVar2 = param_1;\n  puVar10 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xc18);\n  iStack_78 = param_3;\n  iStack_7c = param_1;\n  pcStack_74 = pcVar11;\n  auStack_bc[1] = 4;\n  auStack_bc[7] = 8;\n  auStack_bc[8] = 8;\n  auStack_bc[9] = 4;\n  auStack_bc[10] = 4;\n  piVar9 = *(int **)(puVar10 + 0x220b0);\n  auStack_bc[3] = 2;\n  auStack_bc[5] = 1;\n  auStack_bc[0xb] = 2;\n  auStack_bc[0xc] = 2;\n  auStack_bc[0xd] = 1;\n  auStack_bc[0] = 0;\n  auStack_bc[2] = 0;\n  auStack_bc[4] = 0;\n  auStack_bc[6] = 0;\n  uVar7 = *(uint *)(uVar2 + 0x1b4);\n  auStack_bc[0xe] = *piVar9;\n  if (*(char *)(uVar2 + 0x1fc) == '\0') {\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    *(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);\n  }\n  else {\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x21f00);\n  *(uint *)(uVar2 + 0x128) = *(uint *)(uVar2 + 0x128) & 0xfffffff7;\n  iVar5 = (*pcVar11)(uVar2 + 0x134);\n  if (iVar5 == 0) {\n    bVar1 = *(byte *)(uVar2 + 0x202);\n    uVar7 = *(uint *)(uVar2 + 0x1c4);\n    *(undefined4 *)(uVar2 + 0x138) = 0;\n    *(undefined4 *)(uVar2 + 0x134) = 0;\n    *(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }\n    iVar5 = *piVar9;\n    *(uint *)(uVar2 + 0x144) = uVar6 + 1;\n    uVar2 = auStack_bc[0xe];\n    if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }\n  }\n  else {\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }\n  pcVar11 = *(code **)(puVar10 + 0x22078);\n  (*pcVar11)();\n  uVar7 = uVar7 & 0xb;\n  if (uVar7 != 0) goto LAB_000315f4;\n  if ((*(uint *)(uVar2 + 0x124) & 0x8000) == 0) {\n    FUN_0001a110();\n    uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;\n    if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  else {\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  uVar12 = (**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40);\n  do {\n    uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;\nLAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);\n  } while ((-uVar7 & uVar7) != uVar7);\n  return uVar7 & 0xff;\n}\n\n" (function_definition "uint FUN_00031160(int param_1,int *param_2,int param_3)\n\n{\n  byte bVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined *puVar8;\n  int *piVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined8 uVar12;\n  uint auStack_bc [16];\n  int iStack_7c;\n  int iStack_78;\n  code *pcStack_74;\n  int local_60;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  uint local_4c;\n  undefined1 auStack_3c [4];\n  undefined1 auStack_38 [4];\n  undefined1 auStack_34 [4];\n  undefined1 auStack_30 [4];\n  byte local_2c;\n  byte local_2b;\n  byte local_2a;\n  byte local_29;\n  byte local_28;\n  byte local_27;\n  uint local_24;\n  \n  puVar10 = PTR___stack_chk_guard_000534bc;\n  local_24 = *(uint *)PTR___stack_chk_guard_000534bc;\n  FUN_0002f4f4(param_1,param_3);\n  uVar2 = *(uint *)(param_1 + 0x124);\n  if ((uVar2 & 1) == 0) goto LAB_000313f8;\n  if ((uVar2 & 4) == 0) {\n    if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    FUN_0002aef8(param_1,auStack_3c,0x16);\n    FUN_0002b068(param_1,0);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);\n    iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);\n    param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);\n    iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);\n    if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }\n  }\n  else {\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }\n  if (local_24 == *(uint *)puVar10) {\n    return *(uint *)puVar10;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\nLAB_000313f8:\n  pcVar11 = FUN_0003140c;\n  uVar2 = param_1;\n  puVar10 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xc18);\n  iStack_78 = param_3;\n  iStack_7c = param_1;\n  pcStack_74 = pcVar11;\n  auStack_bc[1] = 4;\n  auStack_bc[7] = 8;\n  auStack_bc[8] = 8;\n  auStack_bc[9] = 4;\n  auStack_bc[10] = 4;\n  piVar9 = *(int **)(puVar10 + 0x220b0);\n  auStack_bc[3] = 2;\n  auStack_bc[5] = 1;\n  auStack_bc[0xb] = 2;\n  auStack_bc[0xc] = 2;\n  auStack_bc[0xd] = 1;\n  auStack_bc[0] = 0;\n  auStack_bc[2] = 0;\n  auStack_bc[4] = 0;\n  auStack_bc[6] = 0;\n  uVar7 = *(uint *)(uVar2 + 0x1b4);\n  auStack_bc[0xe] = *piVar9;\n  if (*(char *)(uVar2 + 0x1fc) == '\0') {\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    *(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);\n  }\n  else {\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x21f00);\n  *(uint *)(uVar2 + 0x128) = *(uint *)(uVar2 + 0x128) & 0xfffffff7;\n  iVar5 = (*pcVar11)(uVar2 + 0x134);\n  if (iVar5 == 0) {\n    bVar1 = *(byte *)(uVar2 + 0x202);\n    uVar7 = *(uint *)(uVar2 + 0x1c4);\n    *(undefined4 *)(uVar2 + 0x138) = 0;\n    *(undefined4 *)(uVar2 + 0x134) = 0;\n    *(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }\n    iVar5 = *piVar9;\n    *(uint *)(uVar2 + 0x144) = uVar6 + 1;\n    uVar2 = auStack_bc[0xe];\n    if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }\n  }\n  else {\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }\n  pcVar11 = *(code **)(puVar10 + 0x22078);\n  (*pcVar11)();\n  uVar7 = uVar7 & 0xb;\n  if (uVar7 != 0) goto LAB_000315f4;\n  if ((*(uint *)(uVar2 + 0x124) & 0x8000) == 0) {\n    FUN_0001a110();\n    uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;\n    if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  else {\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  uVar12 = (**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40);\n  do {\n    uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;\nLAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);\n  } while ((-uVar7 & uVar7) != uVar7);\n  return uVar7 & 0xff;\n}" type_identifier (function_declarator "FUN_00031160(int param_1,int *param_2,int param_3)" identifier (parameter_list "(int param_1,int *param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined *puVar8;\n  int *piVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined8 uVar12;\n  uint auStack_bc [16];\n  int iStack_7c;\n  int iStack_78;\n  code *pcStack_74;\n  int local_60;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  uint local_4c;\n  undefined1 auStack_3c [4];\n  undefined1 auStack_38 [4];\n  undefined1 auStack_34 [4];\n  undefined1 auStack_30 [4];\n  byte local_2c;\n  byte local_2b;\n  byte local_2a;\n  byte local_29;\n  byte local_28;\n  byte local_27;\n  uint local_24;\n  \n  puVar10 = PTR___stack_chk_guard_000534bc;\n  local_24 = *(uint *)PTR___stack_chk_guard_000534bc;\n  FUN_0002f4f4(param_1,param_3);\n  uVar2 = *(uint *)(param_1 + 0x124);\n  if ((uVar2 & 1) == 0) goto LAB_000313f8;\n  if ((uVar2 & 4) == 0) {\n    if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    FUN_0002aef8(param_1,auStack_3c,0x16);\n    FUN_0002b068(param_1,0);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);\n    iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);\n    param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);\n    iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);\n    if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }\n  }\n  else {\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }\n  if (local_24 == *(uint *)puVar10) {\n    return *(uint *)puVar10;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\nLAB_000313f8:\n  pcVar11 = FUN_0003140c;\n  uVar2 = param_1;\n  puVar10 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xc18);\n  iStack_78 = param_3;\n  iStack_7c = param_1;\n  pcStack_74 = pcVar11;\n  auStack_bc[1] = 4;\n  auStack_bc[7] = 8;\n  auStack_bc[8] = 8;\n  auStack_bc[9] = 4;\n  auStack_bc[10] = 4;\n  piVar9 = *(int **)(puVar10 + 0x220b0);\n  auStack_bc[3] = 2;\n  auStack_bc[5] = 1;\n  auStack_bc[0xb] = 2;\n  auStack_bc[0xc] = 2;\n  auStack_bc[0xd] = 1;\n  auStack_bc[0] = 0;\n  auStack_bc[2] = 0;\n  auStack_bc[4] = 0;\n  auStack_bc[6] = 0;\n  uVar7 = *(uint *)(uVar2 + 0x1b4);\n  auStack_bc[0xe] = *piVar9;\n  if (*(char *)(uVar2 + 0x1fc) == '\0') {\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    *(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);\n  }\n  else {\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x21f00);\n  *(uint *)(uVar2 + 0x128) = *(uint *)(uVar2 + 0x128) & 0xfffffff7;\n  iVar5 = (*pcVar11)(uVar2 + 0x134);\n  if (iVar5 == 0) {\n    bVar1 = *(byte *)(uVar2 + 0x202);\n    uVar7 = *(uint *)(uVar2 + 0x1c4);\n    *(undefined4 *)(uVar2 + 0x138) = 0;\n    *(undefined4 *)(uVar2 + 0x134) = 0;\n    *(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }\n    iVar5 = *piVar9;\n    *(uint *)(uVar2 + 0x144) = uVar6 + 1;\n    uVar2 = auStack_bc[0xe];\n    if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }\n  }\n  else {\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }\n  pcVar11 = *(code **)(puVar10 + 0x22078);\n  (*pcVar11)();\n  uVar7 = uVar7 & 0xb;\n  if (uVar7 != 0) goto LAB_000315f4;\n  if ((*(uint *)(uVar2 + 0x124) & 0x8000) == 0) {\n    FUN_0001a110();\n    uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;\n    if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  else {\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  uVar12 = (**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40);\n  do {\n    uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;\nLAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);\n  } while ((-uVar7 & uVar7) != uVar7);\n  return uVar7 & 0xff;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "undefined8 uVar12;" type_identifier identifier ;) (declaration "uint auStack_bc [16];" type_identifier (array_declarator "auStack_bc [16]" identifier [ number_literal ]) ;) (declaration "int iStack_7c;" primitive_type identifier ;) (declaration "int iStack_78;" primitive_type identifier ;) (declaration "code *pcStack_74;" type_identifier (pointer_declarator "*pcStack_74" * identifier) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "undefined1 auStack_3c [4];" type_identifier (array_declarator "auStack_3c [4]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_38 [4];" type_identifier (array_declarator "auStack_38 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_34 [4];" type_identifier (array_declarator "auStack_34 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_30 [4];" type_identifier (array_declarator "auStack_30 [4]" identifier [ number_literal ]) ;) (declaration "byte local_2c;" type_identifier identifier ;) (declaration "byte local_2b;" type_identifier identifier ;) (declaration "byte local_2a;" type_identifier identifier ;) (declaration "byte local_29;" type_identifier identifier ;) (declaration "byte local_28;" type_identifier identifier ;) (declaration "byte local_27;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (expression_statement "puVar10 = PTR___stack_chk_guard_000534bc;" (assignment_expression "puVar10 = PTR___stack_chk_guard_000534bc" identifier = identifier) ;) (expression_statement "local_24 = *(uint *)PTR___stack_chk_guard_000534bc;" (assignment_expression "local_24 = *(uint *)PTR___stack_chk_guard_000534bc" identifier = (pointer_expression "*(uint *)PTR___stack_chk_guard_000534bc" * (cast_expression "(uint *)PTR___stack_chk_guard_000534bc" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "FUN_0002f4f4(param_1,param_3);" (call_expression "FUN_0002f4f4(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))) ;) (expression_statement "uVar2 = *(uint *)(param_1 + 0x124);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0x124)" identifier = (pointer_expression "*(uint *)(param_1 + 0x124)" * (cast_expression "(uint *)(param_1 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) ))))) ;) (if_statement "if ((uVar2 & 1) == 0) goto LAB_000313f8;" if (parenthesized_expression "((uVar2 & 1) == 0)" ( (binary_expression "(uVar2 & 1) == 0" (parenthesized_expression "(uVar2 & 1)" ( (binary_expression "uVar2 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000313f8;" goto statement_identifier ;)) (if_statement "if ((uVar2 & 4) == 0) {\n    if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    FUN_0002aef8(param_1,auStack_3c,0x16);\n    FUN_0002b068(param_1,0);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);\n    iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);\n    param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);\n    iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);\n    if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }\n  }\n  else {\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }" if (parenthesized_expression "((uVar2 & 4) == 0)" ( (binary_expression "(uVar2 & 4) == 0" (parenthesized_expression "(uVar2 & 4)" ( (binary_expression "uVar2 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    FUN_0002aef8(param_1,auStack_3c,0x16);\n    FUN_0002b068(param_1,0);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);\n    iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);\n    param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);\n    iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);\n    if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }\n  }" { (if_statement "if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }" if (parenthesized_expression "((int)(uVar2 << 0xe) < 0)" ( (binary_expression "(int)(uVar2 << 0xe) < 0" (cast_expression "(int)(uVar2 << 0xe)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 << 0xe)" ( (binary_expression "uVar2 << 0xe" identifier << number_literal) ))) < number_literal) )) (compound_statement "{\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }" { (expression_statement "puVar8 = PTR_s_nt_0005301c + 0xc54;" (assignment_expression "puVar8 = PTR_s_nt_0005301c + 0xc54" identifier = (binary_expression "PTR_s_nt_0005301c + 0xc54" identifier + number_literal)) ;) (goto_statement "goto LAB_000311f4;" goto statement_identifier ;) })) (if_statement "if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }" if (parenthesized_expression "(param_3 != 0x1a)" ( (binary_expression "param_3 != 0x1a" identifier != number_literal) )) (compound_statement "{\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }" { (expression_statement "puVar8 = PTR_s_nt_0005301c + 0xc7c;" (assignment_expression "puVar8 = PTR_s_nt_0005301c + 0xc7c" identifier = (binary_expression "PTR_s_nt_0005301c + 0xc7c" identifier + number_literal)) ;) (goto_statement "goto LAB_000311f4;" goto statement_identifier ;) })) (expression_statement "FUN_0002aef8(param_1,auStack_3c,0x16);" (call_expression "FUN_0002aef8(param_1,auStack_3c,0x16)" identifier (argument_list "(param_1,auStack_3c,0x16)" ( identifier , identifier , number_literal ))) ;) (expression_statement "FUN_0002b068(param_1,0);" (call_expression "FUN_0002b068(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal ))) ;) (expression_statement "iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);" (assignment_expression "iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c)" identifier = (call_expression "(*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c)" (parenthesized_expression "(*(code *)PTR_png_get_uint_31_0005333c)" ( (pointer_expression "*(code *)PTR_png_get_uint_31_0005333c" * (cast_expression "(code *)PTR_png_get_uint_31_0005333c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,auStack_3c)" ( identifier , identifier )))) ;) (expression_statement "iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);" (assignment_expression "iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38)" identifier = (call_expression "(*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38)" (parenthesized_expression "(*(code *)PTR_png_get_uint_31_0005333c)" ( (pointer_expression "*(code *)PTR_png_get_uint_31_0005333c" * (cast_expression "(code *)PTR_png_get_uint_31_0005333c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,auStack_38)" ( identifier , identifier )))) ;) (expression_statement "param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);" (assignment_expression "param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34)" identifier = (call_expression "(*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34)" (parenthesized_expression "(*(code *)PTR_png_get_uint_31_0005333c)" ( (pointer_expression "*(code *)PTR_png_get_uint_31_0005333c" * (cast_expression "(code *)PTR_png_get_uint_31_0005333c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,auStack_34)" ( identifier , identifier )))) ;) (expression_statement "iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);" (assignment_expression "iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30)" identifier = (call_expression "(*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30)" (parenthesized_expression "(*(code *)PTR_png_get_uint_31_0005333c)" ( (pointer_expression "*(code *)PTR_png_get_uint_31_0005333c" * (cast_expression "(code *)PTR_png_get_uint_31_0005333c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,auStack_30)" ( identifier , identifier )))) ;) (if_statement "if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x318) == 0)" ( (binary_expression "*(int *)(param_1 + 0x318) == 0" (pointer_expression "*(int *)(param_1 + 0x318)" * (cast_expression "(int *)(param_1 + 0x318)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x318)" ( (binary_expression "param_1 + 0x318" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }" { (if_statement "if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }" if (parenthesized_expression "(param_3 == 0 && iVar4 == 0)" ( (binary_expression "param_3 == 0 && iVar4 == 0" (binary_expression "param_3 == 0" identifier == number_literal) && (binary_expression "iVar4 == 0" identifier == number_literal)) )) (compound_statement "{\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }" { (if_statement "if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }" if (parenthesized_expression "(param_2 != (int *)0x0)" ( (binary_expression "param_2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }" { (if_statement "if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;" if (parenthesized_expression "((*param_2 == iVar5) && (param_2[1] == iVar3))" ( (binary_expression "(*param_2 == iVar5) && (param_2[1] == iVar3)" (parenthesized_expression "(*param_2 == iVar5)" ( (binary_expression "*param_2 == iVar5" (pointer_expression "*param_2" * identifier) == identifier) )) && (parenthesized_expression "(param_2[1] == iVar3)" ( (binary_expression "param_2[1] == iVar3" (subscript_expression "param_2[1]" identifier [ number_literal ]) == identifier) ))) )) (goto_statement "goto LAB_00031338;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);" (call_expression "(*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0)" (parenthesized_expression "(*(code *)PTR_png_warning_00053440)" ( (pointer_expression "*(code *)PTR_png_warning_00053440" * (cast_expression "(code *)PTR_png_warning_00053440" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,PTR_s_nt_0005301c + 0xcd0)" ( identifier , (binary_expression "PTR_s_nt_0005301c + 0xcd0" identifier + number_literal) ))) ;) })) }) (else_clause "else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }" else (compound_statement "{\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }" { (expression_statement "(*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);" (call_expression "(*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0)" (parenthesized_expression "(*(code *)PTR_png_warning_00053440)" ( (pointer_expression "*(code *)PTR_png_warning_00053440" * (cast_expression "(code *)PTR_png_warning_00053440" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,PTR_s_nt_0005301c + 0xca0)" ( identifier , (binary_expression "PTR_s_nt_0005301c + 0xca0" identifier + number_literal) ))) ;) }))) }) (else_clause "else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }" else (if_statement "if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }" if (parenthesized_expression "(param_2 != (int *)0x0)" ( (binary_expression "param_2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }" { (labeled_statement "LAB_00031338:\n      local_4c = (uint)local_27;" statement_identifier : (expression_statement "local_4c = (uint)local_27;" (assignment_expression "local_4c = (uint)local_27" identifier = (cast_expression "(uint)local_27" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) (expression_statement "local_50 = (uint)local_28;" (assignment_expression "local_50 = (uint)local_28" identifier = (cast_expression "(uint)local_28" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;" (assignment_expression "local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff" identifier = (binary_expression "(uint)local_2a * 0x100 + (uint)local_29 & 0xffff" (binary_expression "(uint)local_2a * 0x100 + (uint)local_29" (binary_expression "(uint)local_2a * 0x100" (cast_expression "(uint)local_2a" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + (cast_expression "(uint)local_29" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal)) ;) (expression_statement "local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;" (assignment_expression "local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff" identifier = (binary_expression "(uint)local_2c * 0x100 + (uint)local_2b & 0xffff" (binary_expression "(uint)local_2c * 0x100 + (uint)local_2b" (binary_expression "(uint)local_2c * 0x100" (cast_expression "(uint)local_2c" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + (cast_expression "(uint)local_2b" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal)) ;) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" identifier = identifier) ;) (expression_statement "local_5c = iVar4;" (assignment_expression "local_5c = iVar4" identifier = identifier) ;) (expression_statement "(*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);" (call_expression "(*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3)" (parenthesized_expression "(*(code *)PTR_png_set_next_frame_fcTL_000532e4)" ( (pointer_expression "*(code *)PTR_png_set_next_frame_fcTL_000532e4" * (cast_expression "(code *)PTR_png_set_next_frame_fcTL_000532e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_2,iVar5,iVar3)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_000310c4(param_1,param_2);" (call_expression "FUN_000310c4(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier ))) ;) (expression_statement "*(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;" (assignment_expression "*(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000" (pointer_expression "*(uint *)(param_1 + 0x124)" * (cast_expression "(uint *)(param_1 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 0x124) | 0x20000" (pointer_expression "*(uint *)(param_1 + 0x124)" * (cast_expression "(uint *)(param_1 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) )))) | number_literal)) ;) })))) }) (else_clause "else {\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }" else (compound_statement "{\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }" { (expression_statement "puVar8 = PTR_s_nt_0005301c + 0xc34;" (assignment_expression "puVar8 = PTR_s_nt_0005301c + 0xc34" identifier = (binary_expression "PTR_s_nt_0005301c + 0xc34" identifier + number_literal)) ;) (labeled_statement "LAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);" statement_identifier : (expression_statement "(*(code *)PTR_png_warning_00053440)(param_1,puVar8);" (call_expression "(*(code *)PTR_png_warning_00053440)(param_1,puVar8)" (parenthesized_expression "(*(code *)PTR_png_warning_00053440)" ( (pointer_expression "*(code *)PTR_png_warning_00053440" * (cast_expression "(code *)PTR_png_warning_00053440" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,puVar8)" ( identifier , identifier ))) ;)) (expression_statement "FUN_0002b068(param_1,param_3 + -4);" (call_expression "FUN_0002b068(param_1,param_3 + -4)" identifier (argument_list "(param_1,param_3 + -4)" ( identifier , (binary_expression "param_3 + -4" identifier + number_literal) ))) ;) }))) (if_statement "if (local_24 == *(uint *)puVar10) {\n    return *(uint *)puVar10;\n  }" if (parenthesized_expression "(local_24 == *(uint *)puVar10)" ( (binary_expression "local_24 == *(uint *)puVar10" identifier == (pointer_expression "*(uint *)puVar10" * (cast_expression "(uint *)puVar10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(uint *)puVar10;\n  }" { (return_statement "return *(uint *)puVar10;" return (pointer_expression "*(uint *)puVar10" * (cast_expression "(uint *)puVar10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_00053484)();" (call_expression "(*(code *)PTR___stack_chk_fail_00053484)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00053484)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00053484" * (cast_expression "(code *)PTR___stack_chk_fail_00053484" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_000313f8:\n  pcVar11 = FUN_0003140c;" statement_identifier : (expression_statement "pcVar11 = FUN_0003140c;" (assignment_expression "pcVar11 = FUN_0003140c" identifier = identifier) ;)) (expression_statement "uVar2 = param_1;" (assignment_expression "uVar2 = param_1" identifier = identifier) ;) (expression_statement "puVar10 = PTR_png_error_0005340c;" (assignment_expression "puVar10 = PTR_png_error_0005340c" identifier = identifier) ;) (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xc18);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xc18)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,PTR_s_nt_0005301c + 0xc18)" ( identifier , (binary_expression "PTR_s_nt_0005301c + 0xc18" identifier + number_literal) ))) ;) (expression_statement "iStack_78 = param_3;" (assignment_expression "iStack_78 = param_3" identifier = identifier) ;) (expression_statement "iStack_7c = param_1;" (assignment_expression "iStack_7c = param_1" identifier = identifier) ;) (expression_statement "pcStack_74 = pcVar11;" (assignment_expression "pcStack_74 = pcVar11" identifier = identifier) ;) (expression_statement "auStack_bc[1] = 4;" (assignment_expression "auStack_bc[1] = 4" (subscript_expression "auStack_bc[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[7] = 8;" (assignment_expression "auStack_bc[7] = 8" (subscript_expression "auStack_bc[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[8] = 8;" (assignment_expression "auStack_bc[8] = 8" (subscript_expression "auStack_bc[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[9] = 4;" (assignment_expression "auStack_bc[9] = 4" (subscript_expression "auStack_bc[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[10] = 4;" (assignment_expression "auStack_bc[10] = 4" (subscript_expression "auStack_bc[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar9 = *(int **)(puVar10 + 0x220b0);" (assignment_expression "piVar9 = *(int **)(puVar10 + 0x220b0)" identifier = (pointer_expression "*(int **)(puVar10 + 0x220b0)" * (cast_expression "(int **)(puVar10 + 0x220b0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x220b0)" ( (binary_expression "puVar10 + 0x220b0" identifier + number_literal) ))))) ;) (expression_statement "auStack_bc[3] = 2;" (assignment_expression "auStack_bc[3] = 2" (subscript_expression "auStack_bc[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[5] = 1;" (assignment_expression "auStack_bc[5] = 1" (subscript_expression "auStack_bc[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[0xb] = 2;" (assignment_expression "auStack_bc[0xb] = 2" (subscript_expression "auStack_bc[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[0xc] = 2;" (assignment_expression "auStack_bc[0xc] = 2" (subscript_expression "auStack_bc[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[0xd] = 1;" (assignment_expression "auStack_bc[0xd] = 1" (subscript_expression "auStack_bc[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[0] = 0;" (assignment_expression "auStack_bc[0] = 0" (subscript_expression "auStack_bc[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[2] = 0;" (assignment_expression "auStack_bc[2] = 0" (subscript_expression "auStack_bc[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[4] = 0;" (assignment_expression "auStack_bc[4] = 0" (subscript_expression "auStack_bc[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[6] = 0;" (assignment_expression "auStack_bc[6] = 0" (subscript_expression "auStack_bc[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar7 = *(uint *)(uVar2 + 0x1b4);" (assignment_expression "uVar7 = *(uint *)(uVar2 + 0x1b4)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x1b4)" * (cast_expression "(uint *)(uVar2 + 0x1b4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1b4)" ( (binary_expression "uVar2 + 0x1b4" identifier + number_literal) ))))) ;) (expression_statement "auStack_bc[0xe] = *piVar9;" (assignment_expression "auStack_bc[0xe] = *piVar9" (subscript_expression "auStack_bc[0xe]" identifier [ number_literal ]) = (pointer_expression "*piVar9" * identifier)) ;) (if_statement "if (*(char *)(uVar2 + 0x1fc) == '\0') {\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    *(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);\n  }\n  else {\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }" if (parenthesized_expression "(*(char *)(uVar2 + 0x1fc) == '\0')" ( (binary_expression "*(char *)(uVar2 + 0x1fc) == '\0'" (pointer_expression "*(char *)(uVar2 + 0x1fc)" * (cast_expression "(char *)(uVar2 + 0x1fc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1fc)" ( (binary_expression "uVar2 + 0x1fc" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    *(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);\n  }" { (expression_statement "*(uint *)(uVar2 + 0x1b8) = uVar7;" (assignment_expression "*(uint *)(uVar2 + 0x1b8) = uVar7" (pointer_expression "*(uint *)(uVar2 + 0x1b8)" * (cast_expression "(uint *)(uVar2 + 0x1b8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1b8)" ( (binary_expression "uVar2 + 0x1b8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);" (assignment_expression "*(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0)" (pointer_expression "*(int *)(uVar2 + 0x1c4)" * (cast_expression "(int *)(uVar2 + 0x1c4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c4)" ( (binary_expression "uVar2 + 0x1c4" identifier + number_literal) )))) = (pointer_expression "*(int *)(uVar2 + 0x1b0)" * (cast_expression "(int *)(uVar2 + 0x1b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1b0)" ( (binary_expression "uVar2 + 0x1b0" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }" else (compound_statement "{\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }" { (if_statement "if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }" if (parenthesized_expression "((*(uint *)(uVar2 + 300) & 2) == 0)" ( (binary_expression "(*(uint *)(uVar2 + 300) & 2) == 0" (parenthesized_expression "(*(uint *)(uVar2 + 300) & 2)" ( (binary_expression "*(uint *)(uVar2 + 300) & 2" (pointer_expression "*(uint *)(uVar2 + 300)" * (cast_expression "(uint *)(uVar2 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 300)" ( (binary_expression "uVar2 + 300" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar7 = uVar7 + 7 >> 3;\n    }" { (expression_statement "uVar7 = uVar7 + 7 >> 3;" (assignment_expression "uVar7 = uVar7 + 7 >> 3" identifier = (binary_expression "uVar7 + 7 >> 3" (binary_expression "uVar7 + 7" identifier + number_literal) >> number_literal)) ;) })) (expression_statement "*(uint *)(uVar2 + 0x1b8) = uVar7;" (assignment_expression "*(uint *)(uVar2 + 0x1b8) = uVar7" (pointer_expression "*(uint *)(uVar2 + 0x1b8)" * (cast_expression "(uint *)(uVar2 + 0x1b8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1b8)" ( (binary_expression "uVar2 + 0x1b8" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];" (assignment_expression "uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7]" identifier = (subscript_expression "auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7]" identifier [ (binary_expression "*(byte *)(uVar2 + 0x1fd) + 7" (pointer_expression "*(byte *)(uVar2 + 0x1fd)" * (cast_expression "(byte *)(uVar2 + 0x1fd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1fd)" ( (binary_expression "uVar2 + 0x1fd" identifier + number_literal) )))) + number_literal) ])) ;) (if_statement "if (uVar7 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "*(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;" (assignment_expression "*(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7" (pointer_expression "*(uint *)(uVar2 + 0x1c4)" * (cast_expression "(uint *)(uVar2 + 0x1c4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c4)" ( (binary_expression "uVar2 + 0x1c4" identifier + number_literal) )))) = (binary_expression "((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7" (parenthesized_expression "((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)])" ( (binary_expression "(*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]" (parenthesized_expression "(*(int *)(uVar2 + 0x1b0) + -1 + uVar7)" ( (binary_expression "*(int *)(uVar2 + 0x1b0) + -1 + uVar7" (binary_expression "*(int *)(uVar2 + 0x1b0) + -1" (pointer_expression "*(int *)(uVar2 + 0x1b0)" * (cast_expression "(int *)(uVar2 + 0x1b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1b0)" ( (binary_expression "uVar2 + 0x1b0" identifier + number_literal) )))) + number_literal) + identifier) )) - (subscript_expression "auStack_bc[*(byte *)(uVar2 + 0x1fd)]" identifier [ (pointer_expression "*(byte *)(uVar2 + 0x1fd)" * (cast_expression "(byte *)(uVar2 + 0x1fd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1fd)" ( (binary_expression "uVar2 + 0x1fd" identifier + number_literal) )))) ])) )) / identifier)) ;) }))) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x21f00);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x21f00)" identifier = (pointer_expression "*(code **)(puVar10 + 0x21f00)" * (cast_expression "(code **)(puVar10 + 0x21f00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x21f00)" ( (binary_expression "puVar10 + 0x21f00" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(uVar2 + 0x128) = *(uint *)(uVar2 + 0x128) & 0xfffffff7;" (assignment_expression "*(uint *)(uVar2 + 0x128) = *(uint *)(uVar2 + 0x128) & 0xfffffff7" (pointer_expression "*(uint *)(uVar2 + 0x128)" * (cast_expression "(uint *)(uVar2 + 0x128)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x128)" ( (binary_expression "uVar2 + 0x128" identifier + number_literal) )))) = (binary_expression "*(uint *)(uVar2 + 0x128) & 0xfffffff7" (pointer_expression "*(uint *)(uVar2 + 0x128)" * (cast_expression "(uint *)(uVar2 + 0x128)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x128)" ( (binary_expression "uVar2 + 0x128" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "iVar5 = (*pcVar11)(uVar2 + 0x134);" (assignment_expression "iVar5 = (*pcVar11)(uVar2 + 0x134)" identifier = (call_expression "(*pcVar11)(uVar2 + 0x134)" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "(uVar2 + 0x134)" ( (binary_expression "uVar2 + 0x134" identifier + number_literal) )))) ;) (if_statement "if (iVar5 == 0) {\n    bVar1 = *(byte *)(uVar2 + 0x202);\n    uVar7 = *(uint *)(uVar2 + 0x1c4);\n    *(undefined4 *)(uVar2 + 0x138) = 0;\n    *(undefined4 *)(uVar2 + 0x134) = 0;\n    *(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }\n    iVar5 = *piVar9;\n    *(uint *)(uVar2 + 0x144) = uVar6 + 1;\n    uVar2 = auStack_bc[0xe];\n    if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }\n  }\n  else {\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar1 = *(byte *)(uVar2 + 0x202);\n    uVar7 = *(uint *)(uVar2 + 0x1c4);\n    *(undefined4 *)(uVar2 + 0x138) = 0;\n    *(undefined4 *)(uVar2 + 0x134) = 0;\n    *(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }\n    iVar5 = *piVar9;\n    *(uint *)(uVar2 + 0x144) = uVar6 + 1;\n    uVar2 = auStack_bc[0xe];\n    if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }\n  }" { (expression_statement "bVar1 = *(byte *)(uVar2 + 0x202);" (assignment_expression "bVar1 = *(byte *)(uVar2 + 0x202)" identifier = (pointer_expression "*(byte *)(uVar2 + 0x202)" * (cast_expression "(byte *)(uVar2 + 0x202)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x202)" ( (binary_expression "uVar2 + 0x202" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = *(uint *)(uVar2 + 0x1c4);" (assignment_expression "uVar7 = *(uint *)(uVar2 + 0x1c4)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x1c4)" * (cast_expression "(uint *)(uVar2 + 0x1c4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c4)" ( (binary_expression "uVar2 + 0x1c4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x138) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x138) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x138)" * (cast_expression "(undefined4 *)(uVar2 + 0x138)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x138)" ( (binary_expression "uVar2 + 0x138" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x134) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x134) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x134)" * (cast_expression "(undefined4 *)(uVar2 + 0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x134)" ( (binary_expression "uVar2 + 0x134" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);" (assignment_expression "*(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4)" (pointer_expression "*(undefined4 *)(uVar2 + 0x140)" * (cast_expression "(undefined4 *)(uVar2 + 0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x140)" ( (binary_expression "uVar2 + 0x140" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(uVar2 + 0x1d4)" * (cast_expression "(undefined4 *)(uVar2 + 0x1d4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1d4)" ( (binary_expression "uVar2 + 0x1d4" identifier + number_literal) ))))) ;) (if_statement "if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }" if (parenthesized_expression "(bVar1 < 8)" ( (binary_expression "bVar1 < 8" identifier < number_literal) )) (compound_statement "{\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }" { (expression_statement "uVar6 = bVar1 * uVar7 + 7 >> 3;" (assignment_expression "uVar6 = bVar1 * uVar7 + 7 >> 3" identifier = (binary_expression "bVar1 * uVar7 + 7 >> 3" (binary_expression "bVar1 * uVar7 + 7" (binary_expression "bVar1 * uVar7" identifier * identifier) + number_literal) >> number_literal)) ;) }) (else_clause "else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }" else (compound_statement "{\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }" { (expression_statement "uVar6 = (bVar1 >> 3) * uVar7;" (assignment_expression "uVar6 = (bVar1 >> 3) * uVar7" identifier = (binary_expression "(bVar1 >> 3) * uVar7" (parenthesized_expression "(bVar1 >> 3)" ( (binary_expression "bVar1 >> 3" identifier >> number_literal) )) * identifier)) ;) }))) (expression_statement "iVar5 = *piVar9;" (assignment_expression "iVar5 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "*(uint *)(uVar2 + 0x144) = uVar6 + 1;" (assignment_expression "*(uint *)(uVar2 + 0x144) = uVar6 + 1" (pointer_expression "*(uint *)(uVar2 + 0x144)" * (cast_expression "(uint *)(uVar2 + 0x144)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x144)" ( (binary_expression "uVar2 + 0x144" identifier + number_literal) )))) = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = auStack_bc[0xe];" (assignment_expression "uVar2 = auStack_bc[0xe]" identifier = (subscript_expression "auStack_bc[0xe]" identifier [ number_literal ])) ;) (if_statement "if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }" if (parenthesized_expression "(auStack_bc[0xe] == iVar5)" ( (binary_expression "auStack_bc[0xe] == iVar5" (subscript_expression "auStack_bc[0xe]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n      return uVar6 + 1;\n    }" { (return_statement "return uVar6 + 1;" return (binary_expression "uVar6 + 1" identifier + number_literal) ;) })) }) (else_clause "else {\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }" else (compound_statement "{\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }" { (expression_statement "uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;" (assignment_expression "uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08" identifier = (binary_expression "*(int *)(puVar10 + 0x21c10) + 0xd08" (pointer_expression "*(int *)(puVar10 + 0x21c10)" * (cast_expression "(int *)(puVar10 + 0x21c10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x21c10)" ( (binary_expression "puVar10 + 0x21c10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(**(code **)(puVar10 + 0x22000))();" (call_expression "(**(code **)(puVar10 + 0x22000))()" (parenthesized_expression "(**(code **)(puVar10 + 0x22000))" ( (pointer_expression "**(code **)(puVar10 + 0x22000)" * (pointer_expression "*(code **)(puVar10 + 0x22000)" * (cast_expression "(code **)(puVar10 + 0x22000)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x22000)" ( (binary_expression "puVar10 + 0x22000" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) }))) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x22078);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x22078)" identifier = (pointer_expression "*(code **)(puVar10 + 0x22078)" * (cast_expression "(code **)(puVar10 + 0x22078)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x22078)" ( (binary_expression "puVar10 + 0x22078" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uVar7 = uVar7 & 0xb;" (assignment_expression "uVar7 = uVar7 & 0xb" identifier = (binary_expression "uVar7 & 0xb" identifier & number_literal)) ;) (if_statement "if (uVar7 != 0) goto LAB_000315f4;" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000315f4;" goto statement_identifier ;)) (if_statement "if ((*(uint *)(uVar2 + 0x124) & 0x8000) == 0) {\n    FUN_0001a110();\n    uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;\n    if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  else {\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }" if (parenthesized_expression "((*(uint *)(uVar2 + 0x124) & 0x8000) == 0)" ( (binary_expression "(*(uint *)(uVar2 + 0x124) & 0x8000) == 0" (parenthesized_expression "(*(uint *)(uVar2 + 0x124) & 0x8000)" ( (binary_expression "*(uint *)(uVar2 + 0x124) & 0x8000" (pointer_expression "*(uint *)(uVar2 + 0x124)" * (cast_expression "(uint *)(uVar2 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x124)" ( (binary_expression "uVar2 + 0x124" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    FUN_0001a110();\n    uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;\n    if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }" { (expression_statement "FUN_0001a110();" (call_expression "FUN_0001a110()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;" (assignment_expression "uVar7 = *(uint *)(uVar2 + 0x124) & 0xb" identifier = (binary_expression "*(uint *)(uVar2 + 0x124) & 0xb" (pointer_expression "*(uint *)(uVar2 + 0x124)" * (cast_expression "(uint *)(uVar2 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x124)" ( (binary_expression "uVar2 + 0x124" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }" { (for_statement "for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }" for ( ; (binary_expression "(-uVar7 & uVar7) != uVar7" (parenthesized_expression "(-uVar7 & uVar7)" ( (binary_expression "-uVar7 & uVar7" (unary_expression "-uVar7" - identifier) & identifier) )) != identifier) ; (assignment_expression "uVar7 = uVar7 & uVar7 - 1" identifier = (binary_expression "uVar7 & uVar7 - 1" identifier & (binary_expression "uVar7 - 1" identifier - number_literal))) ) (compound_statement "{\n      }" { })) (return_statement "return uVar7;" return identifier ;) })) (expression_statement "iVar5 = *(int *)(pcVar11 + 0x21a7c);" (assignment_expression "iVar5 = *(int *)(pcVar11 + 0x21a7c)" identifier = (pointer_expression "*(int *)(pcVar11 + 0x21a7c)" * (cast_expression "(int *)(pcVar11 + 0x21a7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x21a7c)" ( (binary_expression "pcVar11 + 0x21a7c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }" else (compound_statement "{\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }" { (expression_statement "iVar5 = *(int *)(pcVar11 + 0x21a7c);" (assignment_expression "iVar5 = *(int *)(pcVar11 + 0x21a7c)" identifier = (pointer_expression "*(int *)(pcVar11 + 0x21a7c)" * (cast_expression "(int *)(pcVar11 + 0x21a7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x21a7c)" ( (binary_expression "pcVar11 + 0x21a7c" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar12 = (**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40);" (assignment_expression "uVar12 = (**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40)" identifier = (call_expression "(**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40)" (parenthesized_expression "(**(code **)(pcVar11 + 0x21e6c))" ( (pointer_expression "**(code **)(pcVar11 + 0x21e6c)" * (pointer_expression "*(code **)(pcVar11 + 0x21e6c)" * (cast_expression "(code **)(pcVar11 + 0x21e6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x21e6c)" ( (binary_expression "pcVar11 + 0x21e6c" identifier + number_literal) ))))) )) (argument_list "(uVar2,iVar5 + 0xe40)" ( identifier , (binary_expression "iVar5 + 0xe40" identifier + number_literal) )))) ;) (do_statement "do {\n    uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;\nLAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);\n  } while ((-uVar7 & uVar7) != uVar7);" do (compound_statement "{\n    uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;\nLAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);\n  }" { (expression_statement "uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;" (assignment_expression "uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12" identifier = (binary_expression "(uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12" (call_expression "(uint)((ulonglong)uVar12 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar12 >> 0x20)" ( (binary_expression "(ulonglong)uVar12 >> 0x20" (cast_expression "(ulonglong)uVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) & (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (labeled_statement "LAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);" statement_identifier : (expression_statement "uVar12 = CONCAT44(uVar7,uVar7 - 1);" (assignment_expression "uVar12 = CONCAT44(uVar7,uVar7 - 1)" identifier = (call_expression "CONCAT44(uVar7,uVar7 - 1)" identifier (argument_list "(uVar7,uVar7 - 1)" ( identifier , (binary_expression "uVar7 - 1" identifier - number_literal) )))) ;)) }) while (parenthesized_expression "((-uVar7 & uVar7) != uVar7)" ( (binary_expression "(-uVar7 & uVar7) != uVar7" (parenthesized_expression "(-uVar7 & uVar7)" ( (binary_expression "-uVar7 & uVar7" (unary_expression "-uVar7" - identifier) & identifier) )) != identifier) )) ;) (return_statement "return uVar7 & 0xff;" return (binary_expression "uVar7 & 0xff" identifier & number_literal) ;) })))
(translation_unit "void png_handle_fcTL(png_structp png_ptr,png_infop info_ptr,png_uint_32 length)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  png_uint_32 pVar4;\n  int iVar5;\n  uint uVar6;\n  png_structp ppVar7;\n  png_structp png_ptr_00;\n  png_uint_32 pVar8;\n  png_bytep ppVar9;\n  undefined *puVar10;\n  int *piVar11;\n  undefined *puVar12;\n  code *pcVar13;\n  undefined8 uVar14;\n  uint auStack_bc [14];\n  png_structp ppStack_84;\n  png_structp ppStack_7c;\n  png_uint_32 pStack_78;\n  code *pcStack_74;\n  png_uint_32 local_60;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  uint local_4c;\n  png_byte data [22];\n  \n  puVar12 = PTR___stack_chk_guard_000534bc;\n  iVar2 = *(int *)PTR___stack_chk_guard_000534bc;\n  png_ensure_sequence_number(png_ptr,length);\n  uVar3 = png_ptr->mode;\n  if ((uVar3 & 1) == 0) goto LAB_000313f8;\n  if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xe) < 0) {\n      puVar10 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (length != 0x1a) {\n      puVar10 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    png_crc_read(png_ptr,data,0x16);\n    png_crc_finish(png_ptr,0);\n    pVar8 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data);\n    pVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 4);\n    length = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 8);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 0xc);\n    if (png_ptr->num_frames_read == 0) {\n      if (length == 0 && iVar5 == 0) {\n        if (info_ptr != (png_infop)0x0) {\n          if ((info_ptr->width == pVar8) && (info_ptr->height == pVar4)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (info_ptr != (png_infop)0x0) {\nLAB_00031338:\n      local_4c = (uint)data[0x15];\n      local_50 = (uint)data[0x14];\n      local_54 = (uint)data[0x12] * 0x100 + (uint)data[0x13] & 0xffff;\n      local_58 = (uint)data[0x10] * 0x100 + (uint)data[0x11] & 0xffff;\n      local_60 = length;\n      local_5c = iVar5;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(png_ptr,info_ptr,pVar8,pVar4);\n      png_read_reinit(png_ptr,info_ptr);\n      png_ptr->mode = png_ptr->mode | 0x20000;\n    }\n  }\n  else {\n    puVar10 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(png_ptr,puVar10);\n    png_crc_finish(png_ptr,length - 4);\n  }\n  if (iVar2 == *(int *)puVar12) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\nLAB_000313f8:\n  pcVar13 = png_progressive_read_reset;\n  png_ptr_00 = png_ptr;\n  puVar12 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + 0xc18);\n  pStack_78 = length;\n  ppStack_7c = png_ptr;\n  pcStack_74 = pcVar13;\n  auStack_bc[1] = 4;\n  auStack_bc[7] = 8;\n  auStack_bc[8] = 8;\n  auStack_bc[9] = 4;\n  auStack_bc[10] = 4;\n  piVar11 = *(int **)(puVar12 + 0x220b0);\n  auStack_bc[3] = 2;\n  auStack_bc[5] = 1;\n  auStack_bc[0xb] = 2;\n  auStack_bc[0xc] = 2;\n  auStack_bc[0xd] = 1;\n  auStack_bc[0] = 0;\n  auStack_bc[2] = 0;\n  auStack_bc[4] = 0;\n  auStack_bc[6] = 0;\n  pVar8 = png_ptr_00->height;\n  ppStack_84 = (png_structp)*piVar11;\n  if (png_ptr_00->interlaced == '\0') {\n    png_ptr_00->num_rows = pVar8;\n    png_ptr_00->iwidth = png_ptr_00->width;\n  }\n  else {\n    if ((png_ptr_00->transformations & 2) == 0) {\n      pVar8 = pVar8 + 7 >> 3;\n    }\n    png_ptr_00->num_rows = pVar8;\n    uVar3 = auStack_bc[png_ptr_00->pass + 7];\n    if (uVar3 == 0) {\n      trap(7);\n    }\n    png_ptr_00->iwidth = (((png_ptr_00->width - 1) + uVar3) - auStack_bc[png_ptr_00->pass]) / uVar3;\n  }\n  pcVar13 = *(code **)(puVar12 + 0x21f00);\n  png_ptr_00->flags = png_ptr_00->flags & 0xfffffff7;\n  iVar2 = (*pcVar13)(&png_ptr_00->zstream);\n  if (iVar2 == 0) {\n    bVar1 = png_ptr_00->pixel_depth;\n    ppVar9 = png_ptr_00->row_buf;\n    uVar3 = png_ptr_00->iwidth;\n    (png_ptr_00->zstream).avail_in = 0;\n    (png_ptr_00->zstream).next_in = (Bytef *)0x0;\n    (png_ptr_00->zstream).next_out = ppVar9;\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar3 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar3;\n    }\n    ppVar7 = (png_structp)*piVar11;\n    (png_ptr_00->zstream).avail_out = uVar6 + 1;\n    png_ptr_00 = ppStack_84;\n    if (ppStack_84 == ppVar7) {\n      return;\n    }\n  }\n  else {\n    uVar3 = *(int *)(puVar12 + 0x21c10) + 0xd08;\n    (**(code **)(puVar12 + 0x22000))();\n  }\n  pcVar13 = *(code **)(puVar12 + 0x22078);\n  (*pcVar13)();\n  uVar3 = uVar3 & 0xb;\n  if (uVar3 != 0) goto LAB_000315f4;\n  if ((png_ptr_00->mode & 0x8000) == 0) {\n    png_app_warning(png_ptr_00,(png_const_charp)(*(int *)(pcVar13 + 0x21a7c) + 0xe6c));\n    uVar3 = png_ptr_00->mode & 0xb;\n    if (uVar3 != 0) {\n      for (; (-uVar3 & uVar3) != uVar3; uVar3 = uVar3 & uVar3 - 1) {\n      }\n      return;\n    }\n    iVar2 = *(int *)(pcVar13 + 0x21a7c);\n  }\n  else {\n    iVar2 = *(int *)(pcVar13 + 0x21a7c);\n  }\n  uVar14 = (**(code **)(pcVar13 + 0x21e6c))(png_ptr_00,iVar2 + 0xe40);\n  do {\n    uVar3 = (uint)((ulonglong)uVar14 >> 0x20) & (uint)uVar14;\nLAB_000315f4:\n    uVar14 = CONCAT44(uVar3,uVar3 - 1);\n  } while ((-uVar3 & uVar3) != uVar3);\n  return;\n}\n\n" (function_definition "void png_handle_fcTL(png_structp png_ptr,png_infop info_ptr,png_uint_32 length)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  png_uint_32 pVar4;\n  int iVar5;\n  uint uVar6;\n  png_structp ppVar7;\n  png_structp png_ptr_00;\n  png_uint_32 pVar8;\n  png_bytep ppVar9;\n  undefined *puVar10;\n  int *piVar11;\n  undefined *puVar12;\n  code *pcVar13;\n  undefined8 uVar14;\n  uint auStack_bc [14];\n  png_structp ppStack_84;\n  png_structp ppStack_7c;\n  png_uint_32 pStack_78;\n  code *pcStack_74;\n  png_uint_32 local_60;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  uint local_4c;\n  png_byte data [22];\n  \n  puVar12 = PTR___stack_chk_guard_000534bc;\n  iVar2 = *(int *)PTR___stack_chk_guard_000534bc;\n  png_ensure_sequence_number(png_ptr,length);\n  uVar3 = png_ptr->mode;\n  if ((uVar3 & 1) == 0) goto LAB_000313f8;\n  if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xe) < 0) {\n      puVar10 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (length != 0x1a) {\n      puVar10 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    png_crc_read(png_ptr,data,0x16);\n    png_crc_finish(png_ptr,0);\n    pVar8 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data);\n    pVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 4);\n    length = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 8);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 0xc);\n    if (png_ptr->num_frames_read == 0) {\n      if (length == 0 && iVar5 == 0) {\n        if (info_ptr != (png_infop)0x0) {\n          if ((info_ptr->width == pVar8) && (info_ptr->height == pVar4)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (info_ptr != (png_infop)0x0) {\nLAB_00031338:\n      local_4c = (uint)data[0x15];\n      local_50 = (uint)data[0x14];\n      local_54 = (uint)data[0x12] * 0x100 + (uint)data[0x13] & 0xffff;\n      local_58 = (uint)data[0x10] * 0x100 + (uint)data[0x11] & 0xffff;\n      local_60 = length;\n      local_5c = iVar5;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(png_ptr,info_ptr,pVar8,pVar4);\n      png_read_reinit(png_ptr,info_ptr);\n      png_ptr->mode = png_ptr->mode | 0x20000;\n    }\n  }\n  else {\n    puVar10 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(png_ptr,puVar10);\n    png_crc_finish(png_ptr,length - 4);\n  }\n  if (iVar2 == *(int *)puVar12) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\nLAB_000313f8:\n  pcVar13 = png_progressive_read_reset;\n  png_ptr_00 = png_ptr;\n  puVar12 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + 0xc18);\n  pStack_78 = length;\n  ppStack_7c = png_ptr;\n  pcStack_74 = pcVar13;\n  auStack_bc[1] = 4;\n  auStack_bc[7] = 8;\n  auStack_bc[8] = 8;\n  auStack_bc[9] = 4;\n  auStack_bc[10] = 4;\n  piVar11 = *(int **)(puVar12 + 0x220b0);\n  auStack_bc[3] = 2;\n  auStack_bc[5] = 1;\n  auStack_bc[0xb] = 2;\n  auStack_bc[0xc] = 2;\n  auStack_bc[0xd] = 1;\n  auStack_bc[0] = 0;\n  auStack_bc[2] = 0;\n  auStack_bc[4] = 0;\n  auStack_bc[6] = 0;\n  pVar8 = png_ptr_00->height;\n  ppStack_84 = (png_structp)*piVar11;\n  if (png_ptr_00->interlaced == '\0') {\n    png_ptr_00->num_rows = pVar8;\n    png_ptr_00->iwidth = png_ptr_00->width;\n  }\n  else {\n    if ((png_ptr_00->transformations & 2) == 0) {\n      pVar8 = pVar8 + 7 >> 3;\n    }\n    png_ptr_00->num_rows = pVar8;\n    uVar3 = auStack_bc[png_ptr_00->pass + 7];\n    if (uVar3 == 0) {\n      trap(7);\n    }\n    png_ptr_00->iwidth = (((png_ptr_00->width - 1) + uVar3) - auStack_bc[png_ptr_00->pass]) / uVar3;\n  }\n  pcVar13 = *(code **)(puVar12 + 0x21f00);\n  png_ptr_00->flags = png_ptr_00->flags & 0xfffffff7;\n  iVar2 = (*pcVar13)(&png_ptr_00->zstream);\n  if (iVar2 == 0) {\n    bVar1 = png_ptr_00->pixel_depth;\n    ppVar9 = png_ptr_00->row_buf;\n    uVar3 = png_ptr_00->iwidth;\n    (png_ptr_00->zstream).avail_in = 0;\n    (png_ptr_00->zstream).next_in = (Bytef *)0x0;\n    (png_ptr_00->zstream).next_out = ppVar9;\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar3 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar3;\n    }\n    ppVar7 = (png_structp)*piVar11;\n    (png_ptr_00->zstream).avail_out = uVar6 + 1;\n    png_ptr_00 = ppStack_84;\n    if (ppStack_84 == ppVar7) {\n      return;\n    }\n  }\n  else {\n    uVar3 = *(int *)(puVar12 + 0x21c10) + 0xd08;\n    (**(code **)(puVar12 + 0x22000))();\n  }\n  pcVar13 = *(code **)(puVar12 + 0x22078);\n  (*pcVar13)();\n  uVar3 = uVar3 & 0xb;\n  if (uVar3 != 0) goto LAB_000315f4;\n  if ((png_ptr_00->mode & 0x8000) == 0) {\n    png_app_warning(png_ptr_00,(png_const_charp)(*(int *)(pcVar13 + 0x21a7c) + 0xe6c));\n    uVar3 = png_ptr_00->mode & 0xb;\n    if (uVar3 != 0) {\n      for (; (-uVar3 & uVar3) != uVar3; uVar3 = uVar3 & uVar3 - 1) {\n      }\n      return;\n    }\n    iVar2 = *(int *)(pcVar13 + 0x21a7c);\n  }\n  else {\n    iVar2 = *(int *)(pcVar13 + 0x21a7c);\n  }\n  uVar14 = (**(code **)(pcVar13 + 0x21e6c))(png_ptr_00,iVar2 + 0xe40);\n  do {\n    uVar3 = (uint)((ulonglong)uVar14 >> 0x20) & (uint)uVar14;\nLAB_000315f4:\n    uVar14 = CONCAT44(uVar3,uVar3 - 1);\n  } while ((-uVar3 & uVar3) != uVar3);\n  return;\n}" primitive_type (function_declarator "png_handle_fcTL(png_structp png_ptr,png_infop info_ptr,png_uint_32 length)" identifier (parameter_list "(png_structp png_ptr,png_infop info_ptr,png_uint_32 length)" ( (parameter_declaration "png_structp png_ptr" type_identifier identifier) , (parameter_declaration "png_infop info_ptr" type_identifier identifier) , (parameter_declaration "png_uint_32 length" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  png_uint_32 pVar4;\n  int iVar5;\n  uint uVar6;\n  png_structp ppVar7;\n  png_structp png_ptr_00;\n  png_uint_32 pVar8;\n  png_bytep ppVar9;\n  undefined *puVar10;\n  int *piVar11;\n  undefined *puVar12;\n  code *pcVar13;\n  undefined8 uVar14;\n  uint auStack_bc [14];\n  png_structp ppStack_84;\n  png_structp ppStack_7c;\n  png_uint_32 pStack_78;\n  code *pcStack_74;\n  png_uint_32 local_60;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  uint local_4c;\n  png_byte data [22];\n  \n  puVar12 = PTR___stack_chk_guard_000534bc;\n  iVar2 = *(int *)PTR___stack_chk_guard_000534bc;\n  png_ensure_sequence_number(png_ptr,length);\n  uVar3 = png_ptr->mode;\n  if ((uVar3 & 1) == 0) goto LAB_000313f8;\n  if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xe) < 0) {\n      puVar10 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (length != 0x1a) {\n      puVar10 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    png_crc_read(png_ptr,data,0x16);\n    png_crc_finish(png_ptr,0);\n    pVar8 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data);\n    pVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 4);\n    length = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 8);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 0xc);\n    if (png_ptr->num_frames_read == 0) {\n      if (length == 0 && iVar5 == 0) {\n        if (info_ptr != (png_infop)0x0) {\n          if ((info_ptr->width == pVar8) && (info_ptr->height == pVar4)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (info_ptr != (png_infop)0x0) {\nLAB_00031338:\n      local_4c = (uint)data[0x15];\n      local_50 = (uint)data[0x14];\n      local_54 = (uint)data[0x12] * 0x100 + (uint)data[0x13] & 0xffff;\n      local_58 = (uint)data[0x10] * 0x100 + (uint)data[0x11] & 0xffff;\n      local_60 = length;\n      local_5c = iVar5;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(png_ptr,info_ptr,pVar8,pVar4);\n      png_read_reinit(png_ptr,info_ptr);\n      png_ptr->mode = png_ptr->mode | 0x20000;\n    }\n  }\n  else {\n    puVar10 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(png_ptr,puVar10);\n    png_crc_finish(png_ptr,length - 4);\n  }\n  if (iVar2 == *(int *)puVar12) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\nLAB_000313f8:\n  pcVar13 = png_progressive_read_reset;\n  png_ptr_00 = png_ptr;\n  puVar12 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + 0xc18);\n  pStack_78 = length;\n  ppStack_7c = png_ptr;\n  pcStack_74 = pcVar13;\n  auStack_bc[1] = 4;\n  auStack_bc[7] = 8;\n  auStack_bc[8] = 8;\n  auStack_bc[9] = 4;\n  auStack_bc[10] = 4;\n  piVar11 = *(int **)(puVar12 + 0x220b0);\n  auStack_bc[3] = 2;\n  auStack_bc[5] = 1;\n  auStack_bc[0xb] = 2;\n  auStack_bc[0xc] = 2;\n  auStack_bc[0xd] = 1;\n  auStack_bc[0] = 0;\n  auStack_bc[2] = 0;\n  auStack_bc[4] = 0;\n  auStack_bc[6] = 0;\n  pVar8 = png_ptr_00->height;\n  ppStack_84 = (png_structp)*piVar11;\n  if (png_ptr_00->interlaced == '\0') {\n    png_ptr_00->num_rows = pVar8;\n    png_ptr_00->iwidth = png_ptr_00->width;\n  }\n  else {\n    if ((png_ptr_00->transformations & 2) == 0) {\n      pVar8 = pVar8 + 7 >> 3;\n    }\n    png_ptr_00->num_rows = pVar8;\n    uVar3 = auStack_bc[png_ptr_00->pass + 7];\n    if (uVar3 == 0) {\n      trap(7);\n    }\n    png_ptr_00->iwidth = (((png_ptr_00->width - 1) + uVar3) - auStack_bc[png_ptr_00->pass]) / uVar3;\n  }\n  pcVar13 = *(code **)(puVar12 + 0x21f00);\n  png_ptr_00->flags = png_ptr_00->flags & 0xfffffff7;\n  iVar2 = (*pcVar13)(&png_ptr_00->zstream);\n  if (iVar2 == 0) {\n    bVar1 = png_ptr_00->pixel_depth;\n    ppVar9 = png_ptr_00->row_buf;\n    uVar3 = png_ptr_00->iwidth;\n    (png_ptr_00->zstream).avail_in = 0;\n    (png_ptr_00->zstream).next_in = (Bytef *)0x0;\n    (png_ptr_00->zstream).next_out = ppVar9;\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar3 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar3;\n    }\n    ppVar7 = (png_structp)*piVar11;\n    (png_ptr_00->zstream).avail_out = uVar6 + 1;\n    png_ptr_00 = ppStack_84;\n    if (ppStack_84 == ppVar7) {\n      return;\n    }\n  }\n  else {\n    uVar3 = *(int *)(puVar12 + 0x21c10) + 0xd08;\n    (**(code **)(puVar12 + 0x22000))();\n  }\n  pcVar13 = *(code **)(puVar12 + 0x22078);\n  (*pcVar13)();\n  uVar3 = uVar3 & 0xb;\n  if (uVar3 != 0) goto LAB_000315f4;\n  if ((png_ptr_00->mode & 0x8000) == 0) {\n    png_app_warning(png_ptr_00,(png_const_charp)(*(int *)(pcVar13 + 0x21a7c) + 0xe6c));\n    uVar3 = png_ptr_00->mode & 0xb;\n    if (uVar3 != 0) {\n      for (; (-uVar3 & uVar3) != uVar3; uVar3 = uVar3 & uVar3 - 1) {\n      }\n      return;\n    }\n    iVar2 = *(int *)(pcVar13 + 0x21a7c);\n  }\n  else {\n    iVar2 = *(int *)(pcVar13 + 0x21a7c);\n  }\n  uVar14 = (**(code **)(pcVar13 + 0x21e6c))(png_ptr_00,iVar2 + 0xe40);\n  do {\n    uVar3 = (uint)((ulonglong)uVar14 >> 0x20) & (uint)uVar14;\nLAB_000315f4:\n    uVar14 = CONCAT44(uVar3,uVar3 - 1);\n  } while ((-uVar3 & uVar3) != uVar3);\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "png_uint_32 pVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "png_structp ppVar7;" type_identifier identifier ;) (declaration "png_structp png_ptr_00;" type_identifier identifier ;) (declaration "png_uint_32 pVar8;" type_identifier identifier ;) (declaration "png_bytep ppVar9;" type_identifier identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "undefined *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "undefined8 uVar14;" type_identifier identifier ;) (declaration "uint auStack_bc [14];" type_identifier (array_declarator "auStack_bc [14]" identifier [ number_literal ]) ;) (declaration "png_structp ppStack_84;" type_identifier identifier ;) (declaration "png_structp ppStack_7c;" type_identifier identifier ;) (declaration "png_uint_32 pStack_78;" type_identifier identifier ;) (declaration "code *pcStack_74;" type_identifier (pointer_declarator "*pcStack_74" * identifier) ;) (declaration "png_uint_32 local_60;" type_identifier identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "png_byte data [22];" type_identifier (array_declarator "data [22]" identifier [ number_literal ]) ;) (expression_statement "puVar12 = PTR___stack_chk_guard_000534bc;" (assignment_expression "puVar12 = PTR___stack_chk_guard_000534bc" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)PTR___stack_chk_guard_000534bc;" (assignment_expression "iVar2 = *(int *)PTR___stack_chk_guard_000534bc" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000534bc" * (cast_expression "(int *)PTR___stack_chk_guard_000534bc" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "png_ensure_sequence_number(png_ptr,length);" (call_expression "png_ensure_sequence_number(png_ptr,length)" identifier (argument_list "(png_ptr,length)" ( identifier , identifier ))) ;) (expression_statement "uVar3 = png_ptr->mode;" (assignment_expression "uVar3 = png_ptr->mode" identifier = (field_expression "png_ptr->mode" identifier -> field_identifier)) ;) (if_statement "if ((uVar3 & 1) == 0) goto LAB_000313f8;" if (parenthesized_expression "((uVar3 & 1) == 0)" ( (binary_expression "(uVar3 & 1) == 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000313f8;" goto statement_identifier ;)) (if_statement "if ((uVar3 & 4) == 0) {\n    if ((int)(uVar3 << 0xe) < 0) {\n      puVar10 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (length != 0x1a) {\n      puVar10 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    png_crc_read(png_ptr,data,0x16);\n    png_crc_finish(png_ptr,0);\n    pVar8 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data);\n    pVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 4);\n    length = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 8);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 0xc);\n    if (png_ptr->num_frames_read == 0) {\n      if (length == 0 && iVar5 == 0) {\n        if (info_ptr != (png_infop)0x0) {\n          if ((info_ptr->width == pVar8) && (info_ptr->height == pVar4)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (info_ptr != (png_infop)0x0) {\nLAB_00031338:\n      local_4c = (uint)data[0x15];\n      local_50 = (uint)data[0x14];\n      local_54 = (uint)data[0x12] * 0x100 + (uint)data[0x13] & 0xffff;\n      local_58 = (uint)data[0x10] * 0x100 + (uint)data[0x11] & 0xffff;\n      local_60 = length;\n      local_5c = iVar5;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(png_ptr,info_ptr,pVar8,pVar4);\n      png_read_reinit(png_ptr,info_ptr);\n      png_ptr->mode = png_ptr->mode | 0x20000;\n    }\n  }\n  else {\n    puVar10 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(png_ptr,puVar10);\n    png_crc_finish(png_ptr,length - 4);\n  }" if (parenthesized_expression "((uVar3 & 4) == 0)" ( (binary_expression "(uVar3 & 4) == 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((int)(uVar3 << 0xe) < 0) {\n      puVar10 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (length != 0x1a) {\n      puVar10 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    png_crc_read(png_ptr,data,0x16);\n    png_crc_finish(png_ptr,0);\n    pVar8 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data);\n    pVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 4);\n    length = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 8);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 0xc);\n    if (png_ptr->num_frames_read == 0) {\n      if (length == 0 && iVar5 == 0) {\n        if (info_ptr != (png_infop)0x0) {\n          if ((info_ptr->width == pVar8) && (info_ptr->height == pVar4)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (info_ptr != (png_infop)0x0) {\nLAB_00031338:\n      local_4c = (uint)data[0x15];\n      local_50 = (uint)data[0x14];\n      local_54 = (uint)data[0x12] * 0x100 + (uint)data[0x13] & 0xffff;\n      local_58 = (uint)data[0x10] * 0x100 + (uint)data[0x11] & 0xffff;\n      local_60 = length;\n      local_5c = iVar5;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(png_ptr,info_ptr,pVar8,pVar4);\n      png_read_reinit(png_ptr,info_ptr);\n      png_ptr->mode = png_ptr->mode | 0x20000;\n    }\n  }" { (if_statement "if ((int)(uVar3 << 0xe) < 0) {\n      puVar10 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }" if (parenthesized_expression "((int)(uVar3 << 0xe) < 0)" ( (binary_expression "(int)(uVar3 << 0xe) < 0" (cast_expression "(int)(uVar3 << 0xe)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar3 << 0xe)" ( (binary_expression "uVar3 << 0xe" identifier << number_literal) ))) < number_literal) )) (compound_statement "{\n      puVar10 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }" { (expression_statement "puVar10 = PTR_s_nt_0005301c + 0xc54;" (assignment_expression "puVar10 = PTR_s_nt_0005301c + 0xc54" identifier = (binary_expression "PTR_s_nt_0005301c + 0xc54" identifier + number_literal)) ;) (goto_statement "goto LAB_000311f4;" goto statement_identifier ;) })) (if_statement "if (length != 0x1a) {\n      puVar10 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }" if (parenthesized_expression "(length != 0x1a)" ( (binary_expression "length != 0x1a" identifier != number_literal) )) (compound_statement "{\n      puVar10 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }" { (expression_statement "puVar10 = PTR_s_nt_0005301c + 0xc7c;" (assignment_expression "puVar10 = PTR_s_nt_0005301c + 0xc7c" identifier = (binary_expression "PTR_s_nt_0005301c + 0xc7c" identifier + number_literal)) ;) (goto_statement "goto LAB_000311f4;" goto statement_identifier ;) })) (expression_statement "png_crc_read(png_ptr,data,0x16);" (call_expression "png_crc_read(png_ptr,data,0x16)" identifier (argument_list "(png_ptr,data,0x16)" ( identifier , identifier , number_literal ))) ;) (expression_statement "png_crc_finish(png_ptr,0);" (call_expression "png_crc_finish(png_ptr,0)" identifier (argument_list "(png_ptr,0)" ( identifier , number_literal ))) ;) (expression_statement "pVar8 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data);" (assignment_expression "pVar8 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data)" identifier = (call_expression "(*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data)" (parenthesized_expression "(*(code *)PTR_png_get_uint_31_0005333c)" ( (pointer_expression "*(code *)PTR_png_get_uint_31_0005333c" * (cast_expression "(code *)PTR_png_get_uint_31_0005333c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,data)" ( identifier , identifier )))) ;) (expression_statement "pVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 4);" (assignment_expression "pVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 4)" identifier = (call_expression "(*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 4)" (parenthesized_expression "(*(code *)PTR_png_get_uint_31_0005333c)" ( (pointer_expression "*(code *)PTR_png_get_uint_31_0005333c" * (cast_expression "(code *)PTR_png_get_uint_31_0005333c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,data + 4)" ( identifier , (binary_expression "data + 4" identifier + number_literal) )))) ;) (expression_statement "length = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 8);" (assignment_expression "length = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 8)" identifier = (call_expression "(*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 8)" (parenthesized_expression "(*(code *)PTR_png_get_uint_31_0005333c)" ( (pointer_expression "*(code *)PTR_png_get_uint_31_0005333c" * (cast_expression "(code *)PTR_png_get_uint_31_0005333c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,data + 8)" ( identifier , (binary_expression "data + 8" identifier + number_literal) )))) ;) (expression_statement "iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 0xc);" (assignment_expression "iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 0xc)" identifier = (call_expression "(*(code *)PTR_png_get_uint_31_0005333c)(png_ptr,data + 0xc)" (parenthesized_expression "(*(code *)PTR_png_get_uint_31_0005333c)" ( (pointer_expression "*(code *)PTR_png_get_uint_31_0005333c" * (cast_expression "(code *)PTR_png_get_uint_31_0005333c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,data + 0xc)" ( identifier , (binary_expression "data + 0xc" identifier + number_literal) )))) ;) (if_statement "if (png_ptr->num_frames_read == 0) {\n      if (length == 0 && iVar5 == 0) {\n        if (info_ptr != (png_infop)0x0) {\n          if ((info_ptr->width == pVar8) && (info_ptr->height == pVar4)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (info_ptr != (png_infop)0x0) {\nLAB_00031338:\n      local_4c = (uint)data[0x15];\n      local_50 = (uint)data[0x14];\n      local_54 = (uint)data[0x12] * 0x100 + (uint)data[0x13] & 0xffff;\n      local_58 = (uint)data[0x10] * 0x100 + (uint)data[0x11] & 0xffff;\n      local_60 = length;\n      local_5c = iVar5;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(png_ptr,info_ptr,pVar8,pVar4);\n      png_read_reinit(png_ptr,info_ptr);\n      png_ptr->mode = png_ptr->mode | 0x20000;\n    }" if (parenthesized_expression "(png_ptr->num_frames_read == 0)" ( (binary_expression "png_ptr->num_frames_read == 0" (field_expression "png_ptr->num_frames_read" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      if (length == 0 && iVar5 == 0) {\n        if (info_ptr != (png_infop)0x0) {\n          if ((info_ptr->width == pVar8) && (info_ptr->height == pVar4)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xca0);\n      }\n    }" { (if_statement "if (length == 0 && iVar5 == 0) {\n        if (info_ptr != (png_infop)0x0) {\n          if ((info_ptr->width == pVar8) && (info_ptr->height == pVar4)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xca0);\n      }" if (parenthesized_expression "(length == 0 && iVar5 == 0)" ( (binary_expression "length == 0 && iVar5 == 0" (binary_expression "length == 0" identifier == number_literal) && (binary_expression "iVar5 == 0" identifier == number_literal)) )) (compound_statement "{\n        if (info_ptr != (png_infop)0x0) {\n          if ((info_ptr->width == pVar8) && (info_ptr->height == pVar4)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }" { (if_statement "if (info_ptr != (png_infop)0x0) {\n          if ((info_ptr->width == pVar8) && (info_ptr->height == pVar4)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xcd0);\n        }" if (parenthesized_expression "(info_ptr != (png_infop)0x0)" ( (binary_expression "info_ptr != (png_infop)0x0" identifier != (cast_expression "(png_infop)0x0" ( (type_descriptor "png_infop" type_identifier) ) number_literal)) )) (compound_statement "{\n          if ((info_ptr->width == pVar8) && (info_ptr->height == pVar4)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xcd0);\n        }" { (if_statement "if ((info_ptr->width == pVar8) && (info_ptr->height == pVar4)) goto LAB_00031338;" if (parenthesized_expression "((info_ptr->width == pVar8) && (info_ptr->height == pVar4))" ( (binary_expression "(info_ptr->width == pVar8) && (info_ptr->height == pVar4)" (parenthesized_expression "(info_ptr->width == pVar8)" ( (binary_expression "info_ptr->width == pVar8" (field_expression "info_ptr->width" identifier -> field_identifier) == identifier) )) && (parenthesized_expression "(info_ptr->height == pVar4)" ( (binary_expression "info_ptr->height == pVar4" (field_expression "info_ptr->height" identifier -> field_identifier) == identifier) ))) )) (goto_statement "goto LAB_00031338;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xcd0);" (call_expression "(*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xcd0)" (parenthesized_expression "(*(code *)PTR_png_warning_00053440)" ( (pointer_expression "*(code *)PTR_png_warning_00053440" * (cast_expression "(code *)PTR_png_warning_00053440" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,PTR_s_nt_0005301c + 0xcd0)" ( identifier , (binary_expression "PTR_s_nt_0005301c + 0xcd0" identifier + number_literal) ))) ;) })) }) (else_clause "else {\n        (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xca0);\n      }" else (compound_statement "{\n        (*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xca0);\n      }" { (expression_statement "(*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xca0);" (call_expression "(*(code *)PTR_png_warning_00053440)(png_ptr,PTR_s_nt_0005301c + 0xca0)" (parenthesized_expression "(*(code *)PTR_png_warning_00053440)" ( (pointer_expression "*(code *)PTR_png_warning_00053440" * (cast_expression "(code *)PTR_png_warning_00053440" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,PTR_s_nt_0005301c + 0xca0)" ( identifier , (binary_expression "PTR_s_nt_0005301c + 0xca0" identifier + number_literal) ))) ;) }))) }) (else_clause "else if (info_ptr != (png_infop)0x0) {\nLAB_00031338:\n      local_4c = (uint)data[0x15];\n      local_50 = (uint)data[0x14];\n      local_54 = (uint)data[0x12] * 0x100 + (uint)data[0x13] & 0xffff;\n      local_58 = (uint)data[0x10] * 0x100 + (uint)data[0x11] & 0xffff;\n      local_60 = length;\n      local_5c = iVar5;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(png_ptr,info_ptr,pVar8,pVar4);\n      png_read_reinit(png_ptr,info_ptr);\n      png_ptr->mode = png_ptr->mode | 0x20000;\n    }" else (if_statement "if (info_ptr != (png_infop)0x0) {\nLAB_00031338:\n      local_4c = (uint)data[0x15];\n      local_50 = (uint)data[0x14];\n      local_54 = (uint)data[0x12] * 0x100 + (uint)data[0x13] & 0xffff;\n      local_58 = (uint)data[0x10] * 0x100 + (uint)data[0x11] & 0xffff;\n      local_60 = length;\n      local_5c = iVar5;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(png_ptr,info_ptr,pVar8,pVar4);\n      png_read_reinit(png_ptr,info_ptr);\n      png_ptr->mode = png_ptr->mode | 0x20000;\n    }" if (parenthesized_expression "(info_ptr != (png_infop)0x0)" ( (binary_expression "info_ptr != (png_infop)0x0" identifier != (cast_expression "(png_infop)0x0" ( (type_descriptor "png_infop" type_identifier) ) number_literal)) )) (compound_statement "{\nLAB_00031338:\n      local_4c = (uint)data[0x15];\n      local_50 = (uint)data[0x14];\n      local_54 = (uint)data[0x12] * 0x100 + (uint)data[0x13] & 0xffff;\n      local_58 = (uint)data[0x10] * 0x100 + (uint)data[0x11] & 0xffff;\n      local_60 = length;\n      local_5c = iVar5;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(png_ptr,info_ptr,pVar8,pVar4);\n      png_read_reinit(png_ptr,info_ptr);\n      png_ptr->mode = png_ptr->mode | 0x20000;\n    }" { (labeled_statement "LAB_00031338:\n      local_4c = (uint)data[0x15];" statement_identifier : (expression_statement "local_4c = (uint)data[0x15];" (assignment_expression "local_4c = (uint)data[0x15]" identifier = (cast_expression "(uint)data[0x15]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "data[0x15]" identifier [ number_literal ]))) ;)) (expression_statement "local_50 = (uint)data[0x14];" (assignment_expression "local_50 = (uint)data[0x14]" identifier = (cast_expression "(uint)data[0x14]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "data[0x14]" identifier [ number_literal ]))) ;) (expression_statement "local_54 = (uint)data[0x12] * 0x100 + (uint)data[0x13] & 0xffff;" (assignment_expression "local_54 = (uint)data[0x12] * 0x100 + (uint)data[0x13] & 0xffff" identifier = (binary_expression "(uint)data[0x12] * 0x100 + (uint)data[0x13] & 0xffff" (binary_expression "(uint)data[0x12] * 0x100 + (uint)data[0x13]" (binary_expression "(uint)data[0x12] * 0x100" (cast_expression "(uint)data[0x12]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "data[0x12]" identifier [ number_literal ])) * number_literal) + (cast_expression "(uint)data[0x13]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "data[0x13]" identifier [ number_literal ]))) & number_literal)) ;) (expression_statement "local_58 = (uint)data[0x10] * 0x100 + (uint)data[0x11] & 0xffff;" (assignment_expression "local_58 = (uint)data[0x10] * 0x100 + (uint)data[0x11] & 0xffff" identifier = (binary_expression "(uint)data[0x10] * 0x100 + (uint)data[0x11] & 0xffff" (binary_expression "(uint)data[0x10] * 0x100 + (uint)data[0x11]" (binary_expression "(uint)data[0x10] * 0x100" (cast_expression "(uint)data[0x10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "data[0x10]" identifier [ number_literal ])) * number_literal) + (cast_expression "(uint)data[0x11]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "data[0x11]" identifier [ number_literal ]))) & number_literal)) ;) (expression_statement "local_60 = length;" (assignment_expression "local_60 = length" identifier = identifier) ;) (expression_statement "local_5c = iVar5;" (assignment_expression "local_5c = iVar5" identifier = identifier) ;) (expression_statement "(*(code *)PTR_png_set_next_frame_fcTL_000532e4)(png_ptr,info_ptr,pVar8,pVar4);" (call_expression "(*(code *)PTR_png_set_next_frame_fcTL_000532e4)(png_ptr,info_ptr,pVar8,pVar4)" (parenthesized_expression "(*(code *)PTR_png_set_next_frame_fcTL_000532e4)" ( (pointer_expression "*(code *)PTR_png_set_next_frame_fcTL_000532e4" * (cast_expression "(code *)PTR_png_set_next_frame_fcTL_000532e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,info_ptr,pVar8,pVar4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "png_read_reinit(png_ptr,info_ptr);" (call_expression "png_read_reinit(png_ptr,info_ptr)" identifier (argument_list "(png_ptr,info_ptr)" ( identifier , identifier ))) ;) (expression_statement "png_ptr->mode = png_ptr->mode | 0x20000;" (assignment_expression "png_ptr->mode = png_ptr->mode | 0x20000" (field_expression "png_ptr->mode" identifier -> field_identifier) = (binary_expression "png_ptr->mode | 0x20000" (field_expression "png_ptr->mode" identifier -> field_identifier) | number_literal)) ;) })))) }) (else_clause "else {\n    puVar10 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(png_ptr,puVar10);\n    png_crc_finish(png_ptr,length - 4);\n  }" else (compound_statement "{\n    puVar10 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(png_ptr,puVar10);\n    png_crc_finish(png_ptr,length - 4);\n  }" { (expression_statement "puVar10 = PTR_s_nt_0005301c + 0xc34;" (assignment_expression "puVar10 = PTR_s_nt_0005301c + 0xc34" identifier = (binary_expression "PTR_s_nt_0005301c + 0xc34" identifier + number_literal)) ;) (labeled_statement "LAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(png_ptr,puVar10);" statement_identifier : (expression_statement "(*(code *)PTR_png_warning_00053440)(png_ptr,puVar10);" (call_expression "(*(code *)PTR_png_warning_00053440)(png_ptr,puVar10)" (parenthesized_expression "(*(code *)PTR_png_warning_00053440)" ( (pointer_expression "*(code *)PTR_png_warning_00053440" * (cast_expression "(code *)PTR_png_warning_00053440" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,puVar10)" ( identifier , identifier ))) ;)) (expression_statement "png_crc_finish(png_ptr,length - 4);" (call_expression "png_crc_finish(png_ptr,length - 4)" identifier (argument_list "(png_ptr,length - 4)" ( identifier , (binary_expression "length - 4" identifier - number_literal) ))) ;) }))) (if_statement "if (iVar2 == *(int *)puVar12) {\n    return;\n  }" if (parenthesized_expression "(iVar2 == *(int *)puVar12)" ( (binary_expression "iVar2 == *(int *)puVar12" identifier == (pointer_expression "*(int *)puVar12" * (cast_expression "(int *)puVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_00053484)();" (call_expression "(*(code *)PTR___stack_chk_fail_00053484)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00053484)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00053484" * (cast_expression "(code *)PTR___stack_chk_fail_00053484" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_000313f8:\n  pcVar13 = png_progressive_read_reset;" statement_identifier : (expression_statement "pcVar13 = png_progressive_read_reset;" (assignment_expression "pcVar13 = png_progressive_read_reset" identifier = identifier) ;)) (expression_statement "png_ptr_00 = png_ptr;" (assignment_expression "png_ptr_00 = png_ptr" identifier = identifier) ;) (expression_statement "puVar12 = PTR_png_error_0005340c;" (assignment_expression "puVar12 = PTR_png_error_0005340c" identifier = identifier) ;) (expression_statement "(*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + 0xc18);" (call_expression "(*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + 0xc18)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,PTR_s_nt_0005301c + 0xc18)" ( identifier , (binary_expression "PTR_s_nt_0005301c + 0xc18" identifier + number_literal) ))) ;) (expression_statement "pStack_78 = length;" (assignment_expression "pStack_78 = length" identifier = identifier) ;) (expression_statement "ppStack_7c = png_ptr;" (assignment_expression "ppStack_7c = png_ptr" identifier = identifier) ;) (expression_statement "pcStack_74 = pcVar13;" (assignment_expression "pcStack_74 = pcVar13" identifier = identifier) ;) (expression_statement "auStack_bc[1] = 4;" (assignment_expression "auStack_bc[1] = 4" (subscript_expression "auStack_bc[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[7] = 8;" (assignment_expression "auStack_bc[7] = 8" (subscript_expression "auStack_bc[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[8] = 8;" (assignment_expression "auStack_bc[8] = 8" (subscript_expression "auStack_bc[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[9] = 4;" (assignment_expression "auStack_bc[9] = 4" (subscript_expression "auStack_bc[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[10] = 4;" (assignment_expression "auStack_bc[10] = 4" (subscript_expression "auStack_bc[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11 = *(int **)(puVar12 + 0x220b0);" (assignment_expression "piVar11 = *(int **)(puVar12 + 0x220b0)" identifier = (pointer_expression "*(int **)(puVar12 + 0x220b0)" * (cast_expression "(int **)(puVar12 + 0x220b0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + 0x220b0)" ( (binary_expression "puVar12 + 0x220b0" identifier + number_literal) ))))) ;) (expression_statement "auStack_bc[3] = 2;" (assignment_expression "auStack_bc[3] = 2" (subscript_expression "auStack_bc[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[5] = 1;" (assignment_expression "auStack_bc[5] = 1" (subscript_expression "auStack_bc[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[0xb] = 2;" (assignment_expression "auStack_bc[0xb] = 2" (subscript_expression "auStack_bc[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[0xc] = 2;" (assignment_expression "auStack_bc[0xc] = 2" (subscript_expression "auStack_bc[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[0xd] = 1;" (assignment_expression "auStack_bc[0xd] = 1" (subscript_expression "auStack_bc[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[0] = 0;" (assignment_expression "auStack_bc[0] = 0" (subscript_expression "auStack_bc[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[2] = 0;" (assignment_expression "auStack_bc[2] = 0" (subscript_expression "auStack_bc[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[4] = 0;" (assignment_expression "auStack_bc[4] = 0" (subscript_expression "auStack_bc[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[6] = 0;" (assignment_expression "auStack_bc[6] = 0" (subscript_expression "auStack_bc[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pVar8 = png_ptr_00->height;" (assignment_expression "pVar8 = png_ptr_00->height" identifier = (field_expression "png_ptr_00->height" identifier -> field_identifier)) ;) (expression_statement "ppStack_84 = (png_structp)*piVar11;" (assignment_expression "ppStack_84 = (png_structp)*piVar11" identifier = (binary_expression "(png_structp)*piVar11" (parenthesized_expression "(png_structp)" ( identifier )) * identifier)) ;) (if_statement "if (png_ptr_00->interlaced == '\0') {\n    png_ptr_00->num_rows = pVar8;\n    png_ptr_00->iwidth = png_ptr_00->width;\n  }\n  else {\n    if ((png_ptr_00->transformations & 2) == 0) {\n      pVar8 = pVar8 + 7 >> 3;\n    }\n    png_ptr_00->num_rows = pVar8;\n    uVar3 = auStack_bc[png_ptr_00->pass + 7];\n    if (uVar3 == 0) {\n      trap(7);\n    }\n    png_ptr_00->iwidth = (((png_ptr_00->width - 1) + uVar3) - auStack_bc[png_ptr_00->pass]) / uVar3;\n  }" if (parenthesized_expression "(png_ptr_00->interlaced == '\0')" ( (binary_expression "png_ptr_00->interlaced == '\0'" (field_expression "png_ptr_00->interlaced" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    png_ptr_00->num_rows = pVar8;\n    png_ptr_00->iwidth = png_ptr_00->width;\n  }" { (expression_statement "png_ptr_00->num_rows = pVar8;" (assignment_expression "png_ptr_00->num_rows = pVar8" (field_expression "png_ptr_00->num_rows" identifier -> field_identifier) = identifier) ;) (expression_statement "png_ptr_00->iwidth = png_ptr_00->width;" (assignment_expression "png_ptr_00->iwidth = png_ptr_00->width" (field_expression "png_ptr_00->iwidth" identifier -> field_identifier) = (field_expression "png_ptr_00->width" identifier -> field_identifier)) ;) }) (else_clause "else {\n    if ((png_ptr_00->transformations & 2) == 0) {\n      pVar8 = pVar8 + 7 >> 3;\n    }\n    png_ptr_00->num_rows = pVar8;\n    uVar3 = auStack_bc[png_ptr_00->pass + 7];\n    if (uVar3 == 0) {\n      trap(7);\n    }\n    png_ptr_00->iwidth = (((png_ptr_00->width - 1) + uVar3) - auStack_bc[png_ptr_00->pass]) / uVar3;\n  }" else (compound_statement "{\n    if ((png_ptr_00->transformations & 2) == 0) {\n      pVar8 = pVar8 + 7 >> 3;\n    }\n    png_ptr_00->num_rows = pVar8;\n    uVar3 = auStack_bc[png_ptr_00->pass + 7];\n    if (uVar3 == 0) {\n      trap(7);\n    }\n    png_ptr_00->iwidth = (((png_ptr_00->width - 1) + uVar3) - auStack_bc[png_ptr_00->pass]) / uVar3;\n  }" { (if_statement "if ((png_ptr_00->transformations & 2) == 0) {\n      pVar8 = pVar8 + 7 >> 3;\n    }" if (parenthesized_expression "((png_ptr_00->transformations & 2) == 0)" ( (binary_expression "(png_ptr_00->transformations & 2) == 0" (parenthesized_expression "(png_ptr_00->transformations & 2)" ( (binary_expression "png_ptr_00->transformations & 2" (field_expression "png_ptr_00->transformations" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      pVar8 = pVar8 + 7 >> 3;\n    }" { (expression_statement "pVar8 = pVar8 + 7 >> 3;" (assignment_expression "pVar8 = pVar8 + 7 >> 3" identifier = (binary_expression "pVar8 + 7 >> 3" (binary_expression "pVar8 + 7" identifier + number_literal) >> number_literal)) ;) })) (expression_statement "png_ptr_00->num_rows = pVar8;" (assignment_expression "png_ptr_00->num_rows = pVar8" (field_expression "png_ptr_00->num_rows" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar3 = auStack_bc[png_ptr_00->pass + 7];" (assignment_expression "uVar3 = auStack_bc[png_ptr_00->pass + 7]" identifier = (subscript_expression "auStack_bc[png_ptr_00->pass + 7]" identifier [ (binary_expression "png_ptr_00->pass + 7" (field_expression "png_ptr_00->pass" identifier -> field_identifier) + number_literal) ])) ;) (if_statement "if (uVar3 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "png_ptr_00->iwidth = (((png_ptr_00->width - 1) + uVar3) - auStack_bc[png_ptr_00->pass]) / uVar3;" (assignment_expression "png_ptr_00->iwidth = (((png_ptr_00->width - 1) + uVar3) - auStack_bc[png_ptr_00->pass]) / uVar3" (field_expression "png_ptr_00->iwidth" identifier -> field_identifier) = (binary_expression "(((png_ptr_00->width - 1) + uVar3) - auStack_bc[png_ptr_00->pass]) / uVar3" (parenthesized_expression "(((png_ptr_00->width - 1) + uVar3) - auStack_bc[png_ptr_00->pass])" ( (binary_expression "((png_ptr_00->width - 1) + uVar3) - auStack_bc[png_ptr_00->pass]" (parenthesized_expression "((png_ptr_00->width - 1) + uVar3)" ( (binary_expression "(png_ptr_00->width - 1) + uVar3" (parenthesized_expression "(png_ptr_00->width - 1)" ( (binary_expression "png_ptr_00->width - 1" (field_expression "png_ptr_00->width" identifier -> field_identifier) - number_literal) )) + identifier) )) - (subscript_expression "auStack_bc[png_ptr_00->pass]" identifier [ (field_expression "png_ptr_00->pass" identifier -> field_identifier) ])) )) / identifier)) ;) }))) (expression_statement "pcVar13 = *(code **)(puVar12 + 0x21f00);" (assignment_expression "pcVar13 = *(code **)(puVar12 + 0x21f00)" identifier = (pointer_expression "*(code **)(puVar12 + 0x21f00)" * (cast_expression "(code **)(puVar12 + 0x21f00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + 0x21f00)" ( (binary_expression "puVar12 + 0x21f00" identifier + number_literal) ))))) ;) (expression_statement "png_ptr_00->flags = png_ptr_00->flags & 0xfffffff7;" (assignment_expression "png_ptr_00->flags = png_ptr_00->flags & 0xfffffff7" (field_expression "png_ptr_00->flags" identifier -> field_identifier) = (binary_expression "png_ptr_00->flags & 0xfffffff7" (field_expression "png_ptr_00->flags" identifier -> field_identifier) & number_literal)) ;) (expression_statement "iVar2 = (*pcVar13)(&png_ptr_00->zstream);" (assignment_expression "iVar2 = (*pcVar13)(&png_ptr_00->zstream)" identifier = (call_expression "(*pcVar13)(&png_ptr_00->zstream)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(&png_ptr_00->zstream)" ( (pointer_expression "&png_ptr_00->zstream" & (field_expression "png_ptr_00->zstream" identifier -> field_identifier)) )))) ;) (if_statement "if (iVar2 == 0) {\n    bVar1 = png_ptr_00->pixel_depth;\n    ppVar9 = png_ptr_00->row_buf;\n    uVar3 = png_ptr_00->iwidth;\n    (png_ptr_00->zstream).avail_in = 0;\n    (png_ptr_00->zstream).next_in = (Bytef *)0x0;\n    (png_ptr_00->zstream).next_out = ppVar9;\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar3 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar3;\n    }\n    ppVar7 = (png_structp)*piVar11;\n    (png_ptr_00->zstream).avail_out = uVar6 + 1;\n    png_ptr_00 = ppStack_84;\n    if (ppStack_84 == ppVar7) {\n      return;\n    }\n  }\n  else {\n    uVar3 = *(int *)(puVar12 + 0x21c10) + 0xd08;\n    (**(code **)(puVar12 + 0x22000))();\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar1 = png_ptr_00->pixel_depth;\n    ppVar9 = png_ptr_00->row_buf;\n    uVar3 = png_ptr_00->iwidth;\n    (png_ptr_00->zstream).avail_in = 0;\n    (png_ptr_00->zstream).next_in = (Bytef *)0x0;\n    (png_ptr_00->zstream).next_out = ppVar9;\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar3 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar3;\n    }\n    ppVar7 = (png_structp)*piVar11;\n    (png_ptr_00->zstream).avail_out = uVar6 + 1;\n    png_ptr_00 = ppStack_84;\n    if (ppStack_84 == ppVar7) {\n      return;\n    }\n  }" { (expression_statement "bVar1 = png_ptr_00->pixel_depth;" (assignment_expression "bVar1 = png_ptr_00->pixel_depth" identifier = (field_expression "png_ptr_00->pixel_depth" identifier -> field_identifier)) ;) (expression_statement "ppVar9 = png_ptr_00->row_buf;" (assignment_expression "ppVar9 = png_ptr_00->row_buf" identifier = (field_expression "png_ptr_00->row_buf" identifier -> field_identifier)) ;) (expression_statement "uVar3 = png_ptr_00->iwidth;" (assignment_expression "uVar3 = png_ptr_00->iwidth" identifier = (field_expression "png_ptr_00->iwidth" identifier -> field_identifier)) ;) (expression_statement "(png_ptr_00->zstream).avail_in = 0;" (assignment_expression "(png_ptr_00->zstream).avail_in = 0" (field_expression "(png_ptr_00->zstream).avail_in" (parenthesized_expression "(png_ptr_00->zstream)" ( (field_expression "png_ptr_00->zstream" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(png_ptr_00->zstream).next_in = (Bytef *)0x0;" (assignment_expression "(png_ptr_00->zstream).next_in = (Bytef *)0x0" (field_expression "(png_ptr_00->zstream).next_in" (parenthesized_expression "(png_ptr_00->zstream)" ( (field_expression "png_ptr_00->zstream" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(Bytef *)0x0" ( (type_descriptor "Bytef *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(png_ptr_00->zstream).next_out = ppVar9;" (assignment_expression "(png_ptr_00->zstream).next_out = ppVar9" (field_expression "(png_ptr_00->zstream).next_out" (parenthesized_expression "(png_ptr_00->zstream)" ( (field_expression "png_ptr_00->zstream" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar3 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar3;\n    }" if (parenthesized_expression "(bVar1 < 8)" ( (binary_expression "bVar1 < 8" identifier < number_literal) )) (compound_statement "{\n      uVar6 = bVar1 * uVar3 + 7 >> 3;\n    }" { (expression_statement "uVar6 = bVar1 * uVar3 + 7 >> 3;" (assignment_expression "uVar6 = bVar1 * uVar3 + 7 >> 3" identifier = (binary_expression "bVar1 * uVar3 + 7 >> 3" (binary_expression "bVar1 * uVar3 + 7" (binary_expression "bVar1 * uVar3" identifier * identifier) + number_literal) >> number_literal)) ;) }) (else_clause "else {\n      uVar6 = (bVar1 >> 3) * uVar3;\n    }" else (compound_statement "{\n      uVar6 = (bVar1 >> 3) * uVar3;\n    }" { (expression_statement "uVar6 = (bVar1 >> 3) * uVar3;" (assignment_expression "uVar6 = (bVar1 >> 3) * uVar3" identifier = (binary_expression "(bVar1 >> 3) * uVar3" (parenthesized_expression "(bVar1 >> 3)" ( (binary_expression "bVar1 >> 3" identifier >> number_literal) )) * identifier)) ;) }))) (expression_statement "ppVar7 = (png_structp)*piVar11;" (assignment_expression "ppVar7 = (png_structp)*piVar11" identifier = (binary_expression "(png_structp)*piVar11" (parenthesized_expression "(png_structp)" ( identifier )) * identifier)) ;) (expression_statement "(png_ptr_00->zstream).avail_out = uVar6 + 1;" (assignment_expression "(png_ptr_00->zstream).avail_out = uVar6 + 1" (field_expression "(png_ptr_00->zstream).avail_out" (parenthesized_expression "(png_ptr_00->zstream)" ( (field_expression "png_ptr_00->zstream" identifier -> field_identifier) )) . field_identifier) = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "png_ptr_00 = ppStack_84;" (assignment_expression "png_ptr_00 = ppStack_84" identifier = identifier) ;) (if_statement "if (ppStack_84 == ppVar7) {\n      return;\n    }" if (parenthesized_expression "(ppStack_84 == ppVar7)" ( (binary_expression "ppStack_84 == ppVar7" identifier == identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) (else_clause "else {\n    uVar3 = *(int *)(puVar12 + 0x21c10) + 0xd08;\n    (**(code **)(puVar12 + 0x22000))();\n  }" else (compound_statement "{\n    uVar3 = *(int *)(puVar12 + 0x21c10) + 0xd08;\n    (**(code **)(puVar12 + 0x22000))();\n  }" { (expression_statement "uVar3 = *(int *)(puVar12 + 0x21c10) + 0xd08;" (assignment_expression "uVar3 = *(int *)(puVar12 + 0x21c10) + 0xd08" identifier = (binary_expression "*(int *)(puVar12 + 0x21c10) + 0xd08" (pointer_expression "*(int *)(puVar12 + 0x21c10)" * (cast_expression "(int *)(puVar12 + 0x21c10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x21c10)" ( (binary_expression "puVar12 + 0x21c10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(**(code **)(puVar12 + 0x22000))();" (call_expression "(**(code **)(puVar12 + 0x22000))()" (parenthesized_expression "(**(code **)(puVar12 + 0x22000))" ( (pointer_expression "**(code **)(puVar12 + 0x22000)" * (pointer_expression "*(code **)(puVar12 + 0x22000)" * (cast_expression "(code **)(puVar12 + 0x22000)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + 0x22000)" ( (binary_expression "puVar12 + 0x22000" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) }))) (expression_statement "pcVar13 = *(code **)(puVar12 + 0x22078);" (assignment_expression "pcVar13 = *(code **)(puVar12 + 0x22078)" identifier = (pointer_expression "*(code **)(puVar12 + 0x22078)" * (cast_expression "(code **)(puVar12 + 0x22078)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + 0x22078)" ( (binary_expression "puVar12 + 0x22078" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar13)();" (call_expression "(*pcVar13)()" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uVar3 = uVar3 & 0xb;" (assignment_expression "uVar3 = uVar3 & 0xb" identifier = (binary_expression "uVar3 & 0xb" identifier & number_literal)) ;) (if_statement "if (uVar3 != 0) goto LAB_000315f4;" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000315f4;" goto statement_identifier ;)) (if_statement "if ((png_ptr_00->mode & 0x8000) == 0) {\n    png_app_warning(png_ptr_00,(png_const_charp)(*(int *)(pcVar13 + 0x21a7c) + 0xe6c));\n    uVar3 = png_ptr_00->mode & 0xb;\n    if (uVar3 != 0) {\n      for (; (-uVar3 & uVar3) != uVar3; uVar3 = uVar3 & uVar3 - 1) {\n      }\n      return;\n    }\n    iVar2 = *(int *)(pcVar13 + 0x21a7c);\n  }\n  else {\n    iVar2 = *(int *)(pcVar13 + 0x21a7c);\n  }" if (parenthesized_expression "((png_ptr_00->mode & 0x8000) == 0)" ( (binary_expression "(png_ptr_00->mode & 0x8000) == 0" (parenthesized_expression "(png_ptr_00->mode & 0x8000)" ( (binary_expression "png_ptr_00->mode & 0x8000" (field_expression "png_ptr_00->mode" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    png_app_warning(png_ptr_00,(png_const_charp)(*(int *)(pcVar13 + 0x21a7c) + 0xe6c));\n    uVar3 = png_ptr_00->mode & 0xb;\n    if (uVar3 != 0) {\n      for (; (-uVar3 & uVar3) != uVar3; uVar3 = uVar3 & uVar3 - 1) {\n      }\n      return;\n    }\n    iVar2 = *(int *)(pcVar13 + 0x21a7c);\n  }" { (expression_statement "png_app_warning(png_ptr_00,(png_const_charp)(*(int *)(pcVar13 + 0x21a7c) + 0xe6c));" (call_expression "png_app_warning(png_ptr_00,(png_const_charp)(*(int *)(pcVar13 + 0x21a7c) + 0xe6c))" identifier (argument_list "(png_ptr_00,(png_const_charp)(*(int *)(pcVar13 + 0x21a7c) + 0xe6c))" ( identifier , (call_expression "(png_const_charp)(*(int *)(pcVar13 + 0x21a7c) + 0xe6c)" (parenthesized_expression "(png_const_charp)" ( identifier )) (argument_list "(*(int *)(pcVar13 + 0x21a7c) + 0xe6c)" ( (binary_expression "*(int *)(pcVar13 + 0x21a7c) + 0xe6c" (pointer_expression "*(int *)(pcVar13 + 0x21a7c)" * (cast_expression "(int *)(pcVar13 + 0x21a7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x21a7c)" ( (binary_expression "pcVar13 + 0x21a7c" identifier + number_literal) )))) + number_literal) ))) ))) ;) (expression_statement "uVar3 = png_ptr_00->mode & 0xb;" (assignment_expression "uVar3 = png_ptr_00->mode & 0xb" identifier = (binary_expression "png_ptr_00->mode & 0xb" (field_expression "png_ptr_00->mode" identifier -> field_identifier) & number_literal)) ;) (if_statement "if (uVar3 != 0) {\n      for (; (-uVar3 & uVar3) != uVar3; uVar3 = uVar3 & uVar3 - 1) {\n      }\n      return;\n    }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      for (; (-uVar3 & uVar3) != uVar3; uVar3 = uVar3 & uVar3 - 1) {\n      }\n      return;\n    }" { (for_statement "for (; (-uVar3 & uVar3) != uVar3; uVar3 = uVar3 & uVar3 - 1) {\n      }" for ( ; (binary_expression "(-uVar3 & uVar3) != uVar3" (parenthesized_expression "(-uVar3 & uVar3)" ( (binary_expression "-uVar3 & uVar3" (unary_expression "-uVar3" - identifier) & identifier) )) != identifier) ; (assignment_expression "uVar3 = uVar3 & uVar3 - 1" identifier = (binary_expression "uVar3 & uVar3 - 1" identifier & (binary_expression "uVar3 - 1" identifier - number_literal))) ) (compound_statement "{\n      }" { })) (return_statement "return;" return ;) })) (expression_statement "iVar2 = *(int *)(pcVar13 + 0x21a7c);" (assignment_expression "iVar2 = *(int *)(pcVar13 + 0x21a7c)" identifier = (pointer_expression "*(int *)(pcVar13 + 0x21a7c)" * (cast_expression "(int *)(pcVar13 + 0x21a7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x21a7c)" ( (binary_expression "pcVar13 + 0x21a7c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar2 = *(int *)(pcVar13 + 0x21a7c);\n  }" else (compound_statement "{\n    iVar2 = *(int *)(pcVar13 + 0x21a7c);\n  }" { (expression_statement "iVar2 = *(int *)(pcVar13 + 0x21a7c);" (assignment_expression "iVar2 = *(int *)(pcVar13 + 0x21a7c)" identifier = (pointer_expression "*(int *)(pcVar13 + 0x21a7c)" * (cast_expression "(int *)(pcVar13 + 0x21a7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar13 + 0x21a7c)" ( (binary_expression "pcVar13 + 0x21a7c" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar14 = (**(code **)(pcVar13 + 0x21e6c))(png_ptr_00,iVar2 + 0xe40);" (assignment_expression "uVar14 = (**(code **)(pcVar13 + 0x21e6c))(png_ptr_00,iVar2 + 0xe40)" identifier = (call_expression "(**(code **)(pcVar13 + 0x21e6c))(png_ptr_00,iVar2 + 0xe40)" (parenthesized_expression "(**(code **)(pcVar13 + 0x21e6c))" ( (pointer_expression "**(code **)(pcVar13 + 0x21e6c)" * (pointer_expression "*(code **)(pcVar13 + 0x21e6c)" * (cast_expression "(code **)(pcVar13 + 0x21e6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar13 + 0x21e6c)" ( (binary_expression "pcVar13 + 0x21e6c" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00,iVar2 + 0xe40)" ( identifier , (binary_expression "iVar2 + 0xe40" identifier + number_literal) )))) ;) (do_statement "do {\n    uVar3 = (uint)((ulonglong)uVar14 >> 0x20) & (uint)uVar14;\nLAB_000315f4:\n    uVar14 = CONCAT44(uVar3,uVar3 - 1);\n  } while ((-uVar3 & uVar3) != uVar3);" do (compound_statement "{\n    uVar3 = (uint)((ulonglong)uVar14 >> 0x20) & (uint)uVar14;\nLAB_000315f4:\n    uVar14 = CONCAT44(uVar3,uVar3 - 1);\n  }" { (expression_statement "uVar3 = (uint)((ulonglong)uVar14 >> 0x20) & (uint)uVar14;" (assignment_expression "uVar3 = (uint)((ulonglong)uVar14 >> 0x20) & (uint)uVar14" identifier = (binary_expression "(uint)((ulonglong)uVar14 >> 0x20) & (uint)uVar14" (call_expression "(uint)((ulonglong)uVar14 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar14 >> 0x20)" ( (binary_expression "(ulonglong)uVar14 >> 0x20" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) & (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (labeled_statement "LAB_000315f4:\n    uVar14 = CONCAT44(uVar3,uVar3 - 1);" statement_identifier : (expression_statement "uVar14 = CONCAT44(uVar3,uVar3 - 1);" (assignment_expression "uVar14 = CONCAT44(uVar3,uVar3 - 1)" identifier = (call_expression "CONCAT44(uVar3,uVar3 - 1)" identifier (argument_list "(uVar3,uVar3 - 1)" ( identifier , (binary_expression "uVar3 - 1" identifier - number_literal) )))) ;)) }) while (parenthesized_expression "((-uVar3 & uVar3) != uVar3)" ( (binary_expression "(-uVar3 & uVar3) != uVar3" (parenthesized_expression "(-uVar3 & uVar3)" ( (binary_expression "-uVar3 & uVar3" (unary_expression "-uVar3" - identifier) & identifier) )) != identifier) )) ;) (return_statement "return;" return ;) })))
(translation_unit "uint FUN_00031160(int param_1,int *param_2,int param_3)\n\n{\n  byte bVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined *puVar8;\n  int *piVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined8 uVar12;\n  uint auStack_bc [16];\n  int iStack_7c;\n  int iStack_78;\n  code *pcStack_74;\n  int local_60;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  uint local_4c;\n  undefined1 auStack_3c [4];\n  undefined1 auStack_38 [4];\n  undefined1 auStack_34 [4];\n  undefined1 auStack_30 [4];\n  byte local_2c;\n  byte local_2b;\n  byte local_2a;\n  byte local_29;\n  byte local_28;\n  byte local_27;\n  uint local_24;\n  \n  puVar10 = PTR___stack_chk_guard_000534bc;\n  local_24 = *(uint *)PTR___stack_chk_guard_000534bc;\n  FUN_0002f4f4(param_1,param_3);\n  uVar2 = *(uint *)(param_1 + 0x124);\n  if ((uVar2 & 1) == 0) goto LAB_000313f8;\n  if ((uVar2 & 4) == 0) {\n    if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    FUN_0002aef8(param_1,auStack_3c,0x16);\n    FUN_0002b068(param_1,0);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);\n    iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);\n    param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);\n    iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);\n    if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }\n  }\n  else {\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }\n  if (local_24 == *(uint *)puVar10) {\n    return *(uint *)puVar10;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\nLAB_000313f8:\n  pcVar11 = FUN_0003140c;\n  uVar2 = param_1;\n  puVar10 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xc18);\n  iStack_78 = param_3;\n  iStack_7c = param_1;\n  pcStack_74 = pcVar11;\n  auStack_bc[1] = 4;\n  auStack_bc[7] = 8;\n  auStack_bc[8] = 8;\n  auStack_bc[9] = 4;\n  auStack_bc[10] = 4;\n  piVar9 = *(int **)(puVar10 + 0x220b0);\n  auStack_bc[3] = 2;\n  auStack_bc[5] = 1;\n  auStack_bc[0xb] = 2;\n  auStack_bc[0xc] = 2;\n  auStack_bc[0xd] = 1;\n  auStack_bc[0] = 0;\n  auStack_bc[2] = 0;\n  auStack_bc[4] = 0;\n  auStack_bc[6] = 0;\n  uVar7 = *(uint *)(uVar2 + 0x1b4);\n  auStack_bc[0xe] = *piVar9;\n  if (*(char *)(uVar2 + 0x1fc) == '\0') {\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    *(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);\n  }\n  else {\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x21f00);\n  *(uint *)(uVar2 + 0x128) = *(uint *)(uVar2 + 0x128) & 0xfffffff7;\n  iVar5 = (*pcVar11)(uVar2 + 0x134);\n  if (iVar5 == 0) {\n    bVar1 = *(byte *)(uVar2 + 0x202);\n    uVar7 = *(uint *)(uVar2 + 0x1c4);\n    *(undefined4 *)(uVar2 + 0x138) = 0;\n    *(undefined4 *)(uVar2 + 0x134) = 0;\n    *(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }\n    iVar5 = *piVar9;\n    *(uint *)(uVar2 + 0x144) = uVar6 + 1;\n    uVar2 = auStack_bc[0xe];\n    if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }\n  }\n  else {\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }\n  pcVar11 = *(code **)(puVar10 + 0x22078);\n  (*pcVar11)();\n  uVar7 = uVar7 & 0xb;\n  if (uVar7 != 0) goto LAB_000315f4;\n  if ((*(uint *)(uVar2 + 0x124) & 0x8000) == 0) {\n    FUN_0001a110();\n    uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;\n    if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  else {\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  uVar12 = (**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40);\n  do {\n    uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;\nLAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);\n  } while ((-uVar7 & uVar7) != uVar7);\n  return uVar7 & 0xff;\n}\n\n" (function_definition "uint FUN_00031160(int param_1,int *param_2,int param_3)\n\n{\n  byte bVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined *puVar8;\n  int *piVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined8 uVar12;\n  uint auStack_bc [16];\n  int iStack_7c;\n  int iStack_78;\n  code *pcStack_74;\n  int local_60;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  uint local_4c;\n  undefined1 auStack_3c [4];\n  undefined1 auStack_38 [4];\n  undefined1 auStack_34 [4];\n  undefined1 auStack_30 [4];\n  byte local_2c;\n  byte local_2b;\n  byte local_2a;\n  byte local_29;\n  byte local_28;\n  byte local_27;\n  uint local_24;\n  \n  puVar10 = PTR___stack_chk_guard_000534bc;\n  local_24 = *(uint *)PTR___stack_chk_guard_000534bc;\n  FUN_0002f4f4(param_1,param_3);\n  uVar2 = *(uint *)(param_1 + 0x124);\n  if ((uVar2 & 1) == 0) goto LAB_000313f8;\n  if ((uVar2 & 4) == 0) {\n    if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    FUN_0002aef8(param_1,auStack_3c,0x16);\n    FUN_0002b068(param_1,0);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);\n    iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);\n    param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);\n    iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);\n    if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }\n  }\n  else {\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }\n  if (local_24 == *(uint *)puVar10) {\n    return *(uint *)puVar10;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\nLAB_000313f8:\n  pcVar11 = FUN_0003140c;\n  uVar2 = param_1;\n  puVar10 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xc18);\n  iStack_78 = param_3;\n  iStack_7c = param_1;\n  pcStack_74 = pcVar11;\n  auStack_bc[1] = 4;\n  auStack_bc[7] = 8;\n  auStack_bc[8] = 8;\n  auStack_bc[9] = 4;\n  auStack_bc[10] = 4;\n  piVar9 = *(int **)(puVar10 + 0x220b0);\n  auStack_bc[3] = 2;\n  auStack_bc[5] = 1;\n  auStack_bc[0xb] = 2;\n  auStack_bc[0xc] = 2;\n  auStack_bc[0xd] = 1;\n  auStack_bc[0] = 0;\n  auStack_bc[2] = 0;\n  auStack_bc[4] = 0;\n  auStack_bc[6] = 0;\n  uVar7 = *(uint *)(uVar2 + 0x1b4);\n  auStack_bc[0xe] = *piVar9;\n  if (*(char *)(uVar2 + 0x1fc) == '\0') {\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    *(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);\n  }\n  else {\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x21f00);\n  *(uint *)(uVar2 + 0x128) = *(uint *)(uVar2 + 0x128) & 0xfffffff7;\n  iVar5 = (*pcVar11)(uVar2 + 0x134);\n  if (iVar5 == 0) {\n    bVar1 = *(byte *)(uVar2 + 0x202);\n    uVar7 = *(uint *)(uVar2 + 0x1c4);\n    *(undefined4 *)(uVar2 + 0x138) = 0;\n    *(undefined4 *)(uVar2 + 0x134) = 0;\n    *(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }\n    iVar5 = *piVar9;\n    *(uint *)(uVar2 + 0x144) = uVar6 + 1;\n    uVar2 = auStack_bc[0xe];\n    if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }\n  }\n  else {\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }\n  pcVar11 = *(code **)(puVar10 + 0x22078);\n  (*pcVar11)();\n  uVar7 = uVar7 & 0xb;\n  if (uVar7 != 0) goto LAB_000315f4;\n  if ((*(uint *)(uVar2 + 0x124) & 0x8000) == 0) {\n    FUN_0001a110();\n    uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;\n    if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  else {\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  uVar12 = (**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40);\n  do {\n    uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;\nLAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);\n  } while ((-uVar7 & uVar7) != uVar7);\n  return uVar7 & 0xff;\n}" type_identifier (function_declarator "FUN_00031160(int param_1,int *param_2,int param_3)" identifier (parameter_list "(int param_1,int *param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined *puVar8;\n  int *piVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined8 uVar12;\n  uint auStack_bc [16];\n  int iStack_7c;\n  int iStack_78;\n  code *pcStack_74;\n  int local_60;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  uint local_4c;\n  undefined1 auStack_3c [4];\n  undefined1 auStack_38 [4];\n  undefined1 auStack_34 [4];\n  undefined1 auStack_30 [4];\n  byte local_2c;\n  byte local_2b;\n  byte local_2a;\n  byte local_29;\n  byte local_28;\n  byte local_27;\n  uint local_24;\n  \n  puVar10 = PTR___stack_chk_guard_000534bc;\n  local_24 = *(uint *)PTR___stack_chk_guard_000534bc;\n  FUN_0002f4f4(param_1,param_3);\n  uVar2 = *(uint *)(param_1 + 0x124);\n  if ((uVar2 & 1) == 0) goto LAB_000313f8;\n  if ((uVar2 & 4) == 0) {\n    if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    FUN_0002aef8(param_1,auStack_3c,0x16);\n    FUN_0002b068(param_1,0);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);\n    iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);\n    param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);\n    iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);\n    if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }\n  }\n  else {\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }\n  if (local_24 == *(uint *)puVar10) {\n    return *(uint *)puVar10;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\nLAB_000313f8:\n  pcVar11 = FUN_0003140c;\n  uVar2 = param_1;\n  puVar10 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xc18);\n  iStack_78 = param_3;\n  iStack_7c = param_1;\n  pcStack_74 = pcVar11;\n  auStack_bc[1] = 4;\n  auStack_bc[7] = 8;\n  auStack_bc[8] = 8;\n  auStack_bc[9] = 4;\n  auStack_bc[10] = 4;\n  piVar9 = *(int **)(puVar10 + 0x220b0);\n  auStack_bc[3] = 2;\n  auStack_bc[5] = 1;\n  auStack_bc[0xb] = 2;\n  auStack_bc[0xc] = 2;\n  auStack_bc[0xd] = 1;\n  auStack_bc[0] = 0;\n  auStack_bc[2] = 0;\n  auStack_bc[4] = 0;\n  auStack_bc[6] = 0;\n  uVar7 = *(uint *)(uVar2 + 0x1b4);\n  auStack_bc[0xe] = *piVar9;\n  if (*(char *)(uVar2 + 0x1fc) == '\0') {\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    *(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);\n  }\n  else {\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x21f00);\n  *(uint *)(uVar2 + 0x128) = *(uint *)(uVar2 + 0x128) & 0xfffffff7;\n  iVar5 = (*pcVar11)(uVar2 + 0x134);\n  if (iVar5 == 0) {\n    bVar1 = *(byte *)(uVar2 + 0x202);\n    uVar7 = *(uint *)(uVar2 + 0x1c4);\n    *(undefined4 *)(uVar2 + 0x138) = 0;\n    *(undefined4 *)(uVar2 + 0x134) = 0;\n    *(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }\n    iVar5 = *piVar9;\n    *(uint *)(uVar2 + 0x144) = uVar6 + 1;\n    uVar2 = auStack_bc[0xe];\n    if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }\n  }\n  else {\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }\n  pcVar11 = *(code **)(puVar10 + 0x22078);\n  (*pcVar11)();\n  uVar7 = uVar7 & 0xb;\n  if (uVar7 != 0) goto LAB_000315f4;\n  if ((*(uint *)(uVar2 + 0x124) & 0x8000) == 0) {\n    FUN_0001a110();\n    uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;\n    if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  else {\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  uVar12 = (**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40);\n  do {\n    uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;\nLAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);\n  } while ((-uVar7 & uVar7) != uVar7);\n  return uVar7 & 0xff;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "undefined8 uVar12;" type_identifier identifier ;) (declaration "uint auStack_bc [16];" type_identifier (array_declarator "auStack_bc [16]" identifier [ number_literal ]) ;) (declaration "int iStack_7c;" primitive_type identifier ;) (declaration "int iStack_78;" primitive_type identifier ;) (declaration "code *pcStack_74;" type_identifier (pointer_declarator "*pcStack_74" * identifier) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "undefined1 auStack_3c [4];" type_identifier (array_declarator "auStack_3c [4]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_38 [4];" type_identifier (array_declarator "auStack_38 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_34 [4];" type_identifier (array_declarator "auStack_34 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_30 [4];" type_identifier (array_declarator "auStack_30 [4]" identifier [ number_literal ]) ;) (declaration "byte local_2c;" type_identifier identifier ;) (declaration "byte local_2b;" type_identifier identifier ;) (declaration "byte local_2a;" type_identifier identifier ;) (declaration "byte local_29;" type_identifier identifier ;) (declaration "byte local_28;" type_identifier identifier ;) (declaration "byte local_27;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (expression_statement "puVar10 = PTR___stack_chk_guard_000534bc;" (assignment_expression "puVar10 = PTR___stack_chk_guard_000534bc" identifier = identifier) ;) (expression_statement "local_24 = *(uint *)PTR___stack_chk_guard_000534bc;" (assignment_expression "local_24 = *(uint *)PTR___stack_chk_guard_000534bc" identifier = (pointer_expression "*(uint *)PTR___stack_chk_guard_000534bc" * (cast_expression "(uint *)PTR___stack_chk_guard_000534bc" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "FUN_0002f4f4(param_1,param_3);" (call_expression "FUN_0002f4f4(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))) ;) (expression_statement "uVar2 = *(uint *)(param_1 + 0x124);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0x124)" identifier = (pointer_expression "*(uint *)(param_1 + 0x124)" * (cast_expression "(uint *)(param_1 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) ))))) ;) (if_statement "if ((uVar2 & 1) == 0) goto LAB_000313f8;" if (parenthesized_expression "((uVar2 & 1) == 0)" ( (binary_expression "(uVar2 & 1) == 0" (parenthesized_expression "(uVar2 & 1)" ( (binary_expression "uVar2 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000313f8;" goto statement_identifier ;)) (if_statement "if ((uVar2 & 4) == 0) {\n    if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    FUN_0002aef8(param_1,auStack_3c,0x16);\n    FUN_0002b068(param_1,0);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);\n    iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);\n    param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);\n    iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);\n    if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }\n  }\n  else {\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }" if (parenthesized_expression "((uVar2 & 4) == 0)" ( (binary_expression "(uVar2 & 4) == 0" (parenthesized_expression "(uVar2 & 4)" ( (binary_expression "uVar2 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    FUN_0002aef8(param_1,auStack_3c,0x16);\n    FUN_0002b068(param_1,0);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);\n    iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);\n    param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);\n    iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);\n    if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }\n  }" { (if_statement "if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }" if (parenthesized_expression "((int)(uVar2 << 0xe) < 0)" ( (binary_expression "(int)(uVar2 << 0xe) < 0" (cast_expression "(int)(uVar2 << 0xe)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 << 0xe)" ( (binary_expression "uVar2 << 0xe" identifier << number_literal) ))) < number_literal) )) (compound_statement "{\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }" { (expression_statement "puVar8 = PTR_s_nt_0005301c + 0xc54;" (assignment_expression "puVar8 = PTR_s_nt_0005301c + 0xc54" identifier = (binary_expression "PTR_s_nt_0005301c + 0xc54" identifier + number_literal)) ;) (goto_statement "goto LAB_000311f4;" goto statement_identifier ;) })) (if_statement "if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }" if (parenthesized_expression "(param_3 != 0x1a)" ( (binary_expression "param_3 != 0x1a" identifier != number_literal) )) (compound_statement "{\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }" { (expression_statement "puVar8 = PTR_s_nt_0005301c + 0xc7c;" (assignment_expression "puVar8 = PTR_s_nt_0005301c + 0xc7c" identifier = (binary_expression "PTR_s_nt_0005301c + 0xc7c" identifier + number_literal)) ;) (goto_statement "goto LAB_000311f4;" goto statement_identifier ;) })) (expression_statement "FUN_0002aef8(param_1,auStack_3c,0x16);" (call_expression "FUN_0002aef8(param_1,auStack_3c,0x16)" identifier (argument_list "(param_1,auStack_3c,0x16)" ( identifier , identifier , number_literal ))) ;) (expression_statement "FUN_0002b068(param_1,0);" (call_expression "FUN_0002b068(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal ))) ;) (expression_statement "iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);" (assignment_expression "iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c)" identifier = (call_expression "(*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c)" (parenthesized_expression "(*(code *)PTR_png_get_uint_31_0005333c)" ( (pointer_expression "*(code *)PTR_png_get_uint_31_0005333c" * (cast_expression "(code *)PTR_png_get_uint_31_0005333c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,auStack_3c)" ( identifier , identifier )))) ;) (expression_statement "iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);" (assignment_expression "iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38)" identifier = (call_expression "(*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38)" (parenthesized_expression "(*(code *)PTR_png_get_uint_31_0005333c)" ( (pointer_expression "*(code *)PTR_png_get_uint_31_0005333c" * (cast_expression "(code *)PTR_png_get_uint_31_0005333c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,auStack_38)" ( identifier , identifier )))) ;) (expression_statement "param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);" (assignment_expression "param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34)" identifier = (call_expression "(*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34)" (parenthesized_expression "(*(code *)PTR_png_get_uint_31_0005333c)" ( (pointer_expression "*(code *)PTR_png_get_uint_31_0005333c" * (cast_expression "(code *)PTR_png_get_uint_31_0005333c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,auStack_34)" ( identifier , identifier )))) ;) (expression_statement "iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);" (assignment_expression "iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30)" identifier = (call_expression "(*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30)" (parenthesized_expression "(*(code *)PTR_png_get_uint_31_0005333c)" ( (pointer_expression "*(code *)PTR_png_get_uint_31_0005333c" * (cast_expression "(code *)PTR_png_get_uint_31_0005333c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,auStack_30)" ( identifier , identifier )))) ;) (if_statement "if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x318) == 0)" ( (binary_expression "*(int *)(param_1 + 0x318) == 0" (pointer_expression "*(int *)(param_1 + 0x318)" * (cast_expression "(int *)(param_1 + 0x318)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x318)" ( (binary_expression "param_1 + 0x318" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }" { (if_statement "if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }" if (parenthesized_expression "(param_3 == 0 && iVar4 == 0)" ( (binary_expression "param_3 == 0 && iVar4 == 0" (binary_expression "param_3 == 0" identifier == number_literal) && (binary_expression "iVar4 == 0" identifier == number_literal)) )) (compound_statement "{\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }" { (if_statement "if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }" if (parenthesized_expression "(param_2 != (int *)0x0)" ( (binary_expression "param_2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }" { (if_statement "if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;" if (parenthesized_expression "((*param_2 == iVar5) && (param_2[1] == iVar3))" ( (binary_expression "(*param_2 == iVar5) && (param_2[1] == iVar3)" (parenthesized_expression "(*param_2 == iVar5)" ( (binary_expression "*param_2 == iVar5" (pointer_expression "*param_2" * identifier) == identifier) )) && (parenthesized_expression "(param_2[1] == iVar3)" ( (binary_expression "param_2[1] == iVar3" (subscript_expression "param_2[1]" identifier [ number_literal ]) == identifier) ))) )) (goto_statement "goto LAB_00031338;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);" (call_expression "(*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0)" (parenthesized_expression "(*(code *)PTR_png_warning_00053440)" ( (pointer_expression "*(code *)PTR_png_warning_00053440" * (cast_expression "(code *)PTR_png_warning_00053440" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,PTR_s_nt_0005301c + 0xcd0)" ( identifier , (binary_expression "PTR_s_nt_0005301c + 0xcd0" identifier + number_literal) ))) ;) })) }) (else_clause "else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }" else (compound_statement "{\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }" { (expression_statement "(*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);" (call_expression "(*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0)" (parenthesized_expression "(*(code *)PTR_png_warning_00053440)" ( (pointer_expression "*(code *)PTR_png_warning_00053440" * (cast_expression "(code *)PTR_png_warning_00053440" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,PTR_s_nt_0005301c + 0xca0)" ( identifier , (binary_expression "PTR_s_nt_0005301c + 0xca0" identifier + number_literal) ))) ;) }))) }) (else_clause "else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }" else (if_statement "if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }" if (parenthesized_expression "(param_2 != (int *)0x0)" ( (binary_expression "param_2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }" { (labeled_statement "LAB_00031338:\n      local_4c = (uint)local_27;" statement_identifier : (expression_statement "local_4c = (uint)local_27;" (assignment_expression "local_4c = (uint)local_27" identifier = (cast_expression "(uint)local_27" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) (expression_statement "local_50 = (uint)local_28;" (assignment_expression "local_50 = (uint)local_28" identifier = (cast_expression "(uint)local_28" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;" (assignment_expression "local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff" identifier = (binary_expression "(uint)local_2a * 0x100 + (uint)local_29 & 0xffff" (binary_expression "(uint)local_2a * 0x100 + (uint)local_29" (binary_expression "(uint)local_2a * 0x100" (cast_expression "(uint)local_2a" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + (cast_expression "(uint)local_29" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal)) ;) (expression_statement "local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;" (assignment_expression "local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff" identifier = (binary_expression "(uint)local_2c * 0x100 + (uint)local_2b & 0xffff" (binary_expression "(uint)local_2c * 0x100 + (uint)local_2b" (binary_expression "(uint)local_2c * 0x100" (cast_expression "(uint)local_2c" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + (cast_expression "(uint)local_2b" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal)) ;) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" identifier = identifier) ;) (expression_statement "local_5c = iVar4;" (assignment_expression "local_5c = iVar4" identifier = identifier) ;) (expression_statement "(*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);" (call_expression "(*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3)" (parenthesized_expression "(*(code *)PTR_png_set_next_frame_fcTL_000532e4)" ( (pointer_expression "*(code *)PTR_png_set_next_frame_fcTL_000532e4" * (cast_expression "(code *)PTR_png_set_next_frame_fcTL_000532e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_2,iVar5,iVar3)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_000310c4(param_1,param_2);" (call_expression "FUN_000310c4(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier ))) ;) (expression_statement "*(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;" (assignment_expression "*(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000" (pointer_expression "*(uint *)(param_1 + 0x124)" * (cast_expression "(uint *)(param_1 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 0x124) | 0x20000" (pointer_expression "*(uint *)(param_1 + 0x124)" * (cast_expression "(uint *)(param_1 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) )))) | number_literal)) ;) })))) }) (else_clause "else {\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }" else (compound_statement "{\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }" { (expression_statement "puVar8 = PTR_s_nt_0005301c + 0xc34;" (assignment_expression "puVar8 = PTR_s_nt_0005301c + 0xc34" identifier = (binary_expression "PTR_s_nt_0005301c + 0xc34" identifier + number_literal)) ;) (labeled_statement "LAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);" statement_identifier : (expression_statement "(*(code *)PTR_png_warning_00053440)(param_1,puVar8);" (call_expression "(*(code *)PTR_png_warning_00053440)(param_1,puVar8)" (parenthesized_expression "(*(code *)PTR_png_warning_00053440)" ( (pointer_expression "*(code *)PTR_png_warning_00053440" * (cast_expression "(code *)PTR_png_warning_00053440" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,puVar8)" ( identifier , identifier ))) ;)) (expression_statement "FUN_0002b068(param_1,param_3 + -4);" (call_expression "FUN_0002b068(param_1,param_3 + -4)" identifier (argument_list "(param_1,param_3 + -4)" ( identifier , (binary_expression "param_3 + -4" identifier + number_literal) ))) ;) }))) (if_statement "if (local_24 == *(uint *)puVar10) {\n    return *(uint *)puVar10;\n  }" if (parenthesized_expression "(local_24 == *(uint *)puVar10)" ( (binary_expression "local_24 == *(uint *)puVar10" identifier == (pointer_expression "*(uint *)puVar10" * (cast_expression "(uint *)puVar10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(uint *)puVar10;\n  }" { (return_statement "return *(uint *)puVar10;" return (pointer_expression "*(uint *)puVar10" * (cast_expression "(uint *)puVar10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_00053484)();" (call_expression "(*(code *)PTR___stack_chk_fail_00053484)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00053484)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00053484" * (cast_expression "(code *)PTR___stack_chk_fail_00053484" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_000313f8:\n  pcVar11 = FUN_0003140c;" statement_identifier : (expression_statement "pcVar11 = FUN_0003140c;" (assignment_expression "pcVar11 = FUN_0003140c" identifier = identifier) ;)) (expression_statement "uVar2 = param_1;" (assignment_expression "uVar2 = param_1" identifier = identifier) ;) (expression_statement "puVar10 = PTR_png_error_0005340c;" (assignment_expression "puVar10 = PTR_png_error_0005340c" identifier = identifier) ;) (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xc18);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xc18)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,PTR_s_nt_0005301c + 0xc18)" ( identifier , (binary_expression "PTR_s_nt_0005301c + 0xc18" identifier + number_literal) ))) ;) (expression_statement "iStack_78 = param_3;" (assignment_expression "iStack_78 = param_3" identifier = identifier) ;) (expression_statement "iStack_7c = param_1;" (assignment_expression "iStack_7c = param_1" identifier = identifier) ;) (expression_statement "pcStack_74 = pcVar11;" (assignment_expression "pcStack_74 = pcVar11" identifier = identifier) ;) (expression_statement "auStack_bc[1] = 4;" (assignment_expression "auStack_bc[1] = 4" (subscript_expression "auStack_bc[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[7] = 8;" (assignment_expression "auStack_bc[7] = 8" (subscript_expression "auStack_bc[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[8] = 8;" (assignment_expression "auStack_bc[8] = 8" (subscript_expression "auStack_bc[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[9] = 4;" (assignment_expression "auStack_bc[9] = 4" (subscript_expression "auStack_bc[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[10] = 4;" (assignment_expression "auStack_bc[10] = 4" (subscript_expression "auStack_bc[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar9 = *(int **)(puVar10 + 0x220b0);" (assignment_expression "piVar9 = *(int **)(puVar10 + 0x220b0)" identifier = (pointer_expression "*(int **)(puVar10 + 0x220b0)" * (cast_expression "(int **)(puVar10 + 0x220b0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x220b0)" ( (binary_expression "puVar10 + 0x220b0" identifier + number_literal) ))))) ;) (expression_statement "auStack_bc[3] = 2;" (assignment_expression "auStack_bc[3] = 2" (subscript_expression "auStack_bc[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[5] = 1;" (assignment_expression "auStack_bc[5] = 1" (subscript_expression "auStack_bc[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[0xb] = 2;" (assignment_expression "auStack_bc[0xb] = 2" (subscript_expression "auStack_bc[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[0xc] = 2;" (assignment_expression "auStack_bc[0xc] = 2" (subscript_expression "auStack_bc[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[0xd] = 1;" (assignment_expression "auStack_bc[0xd] = 1" (subscript_expression "auStack_bc[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[0] = 0;" (assignment_expression "auStack_bc[0] = 0" (subscript_expression "auStack_bc[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[2] = 0;" (assignment_expression "auStack_bc[2] = 0" (subscript_expression "auStack_bc[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[4] = 0;" (assignment_expression "auStack_bc[4] = 0" (subscript_expression "auStack_bc[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_bc[6] = 0;" (assignment_expression "auStack_bc[6] = 0" (subscript_expression "auStack_bc[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar7 = *(uint *)(uVar2 + 0x1b4);" (assignment_expression "uVar7 = *(uint *)(uVar2 + 0x1b4)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x1b4)" * (cast_expression "(uint *)(uVar2 + 0x1b4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1b4)" ( (binary_expression "uVar2 + 0x1b4" identifier + number_literal) ))))) ;) (expression_statement "auStack_bc[0xe] = *piVar9;" (assignment_expression "auStack_bc[0xe] = *piVar9" (subscript_expression "auStack_bc[0xe]" identifier [ number_literal ]) = (pointer_expression "*piVar9" * identifier)) ;) (if_statement "if (*(char *)(uVar2 + 0x1fc) == '\0') {\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    *(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);\n  }\n  else {\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }" if (parenthesized_expression "(*(char *)(uVar2 + 0x1fc) == '\0')" ( (binary_expression "*(char *)(uVar2 + 0x1fc) == '\0'" (pointer_expression "*(char *)(uVar2 + 0x1fc)" * (cast_expression "(char *)(uVar2 + 0x1fc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1fc)" ( (binary_expression "uVar2 + 0x1fc" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    *(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);\n  }" { (expression_statement "*(uint *)(uVar2 + 0x1b8) = uVar7;" (assignment_expression "*(uint *)(uVar2 + 0x1b8) = uVar7" (pointer_expression "*(uint *)(uVar2 + 0x1b8)" * (cast_expression "(uint *)(uVar2 + 0x1b8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1b8)" ( (binary_expression "uVar2 + 0x1b8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);" (assignment_expression "*(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0)" (pointer_expression "*(int *)(uVar2 + 0x1c4)" * (cast_expression "(int *)(uVar2 + 0x1c4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c4)" ( (binary_expression "uVar2 + 0x1c4" identifier + number_literal) )))) = (pointer_expression "*(int *)(uVar2 + 0x1b0)" * (cast_expression "(int *)(uVar2 + 0x1b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1b0)" ( (binary_expression "uVar2 + 0x1b0" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }" else (compound_statement "{\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }" { (if_statement "if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }" if (parenthesized_expression "((*(uint *)(uVar2 + 300) & 2) == 0)" ( (binary_expression "(*(uint *)(uVar2 + 300) & 2) == 0" (parenthesized_expression "(*(uint *)(uVar2 + 300) & 2)" ( (binary_expression "*(uint *)(uVar2 + 300) & 2" (pointer_expression "*(uint *)(uVar2 + 300)" * (cast_expression "(uint *)(uVar2 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 300)" ( (binary_expression "uVar2 + 300" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar7 = uVar7 + 7 >> 3;\n    }" { (expression_statement "uVar7 = uVar7 + 7 >> 3;" (assignment_expression "uVar7 = uVar7 + 7 >> 3" identifier = (binary_expression "uVar7 + 7 >> 3" (binary_expression "uVar7 + 7" identifier + number_literal) >> number_literal)) ;) })) (expression_statement "*(uint *)(uVar2 + 0x1b8) = uVar7;" (assignment_expression "*(uint *)(uVar2 + 0x1b8) = uVar7" (pointer_expression "*(uint *)(uVar2 + 0x1b8)" * (cast_expression "(uint *)(uVar2 + 0x1b8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1b8)" ( (binary_expression "uVar2 + 0x1b8" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];" (assignment_expression "uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7]" identifier = (subscript_expression "auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7]" identifier [ (binary_expression "*(byte *)(uVar2 + 0x1fd) + 7" (pointer_expression "*(byte *)(uVar2 + 0x1fd)" * (cast_expression "(byte *)(uVar2 + 0x1fd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1fd)" ( (binary_expression "uVar2 + 0x1fd" identifier + number_literal) )))) + number_literal) ])) ;) (if_statement "if (uVar7 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "*(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;" (assignment_expression "*(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7" (pointer_expression "*(uint *)(uVar2 + 0x1c4)" * (cast_expression "(uint *)(uVar2 + 0x1c4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c4)" ( (binary_expression "uVar2 + 0x1c4" identifier + number_literal) )))) = (binary_expression "((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7" (parenthesized_expression "((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)])" ( (binary_expression "(*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]" (parenthesized_expression "(*(int *)(uVar2 + 0x1b0) + -1 + uVar7)" ( (binary_expression "*(int *)(uVar2 + 0x1b0) + -1 + uVar7" (binary_expression "*(int *)(uVar2 + 0x1b0) + -1" (pointer_expression "*(int *)(uVar2 + 0x1b0)" * (cast_expression "(int *)(uVar2 + 0x1b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1b0)" ( (binary_expression "uVar2 + 0x1b0" identifier + number_literal) )))) + number_literal) + identifier) )) - (subscript_expression "auStack_bc[*(byte *)(uVar2 + 0x1fd)]" identifier [ (pointer_expression "*(byte *)(uVar2 + 0x1fd)" * (cast_expression "(byte *)(uVar2 + 0x1fd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1fd)" ( (binary_expression "uVar2 + 0x1fd" identifier + number_literal) )))) ])) )) / identifier)) ;) }))) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x21f00);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x21f00)" identifier = (pointer_expression "*(code **)(puVar10 + 0x21f00)" * (cast_expression "(code **)(puVar10 + 0x21f00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x21f00)" ( (binary_expression "puVar10 + 0x21f00" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(uVar2 + 0x128) = *(uint *)(uVar2 + 0x128) & 0xfffffff7;" (assignment_expression "*(uint *)(uVar2 + 0x128) = *(uint *)(uVar2 + 0x128) & 0xfffffff7" (pointer_expression "*(uint *)(uVar2 + 0x128)" * (cast_expression "(uint *)(uVar2 + 0x128)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x128)" ( (binary_expression "uVar2 + 0x128" identifier + number_literal) )))) = (binary_expression "*(uint *)(uVar2 + 0x128) & 0xfffffff7" (pointer_expression "*(uint *)(uVar2 + 0x128)" * (cast_expression "(uint *)(uVar2 + 0x128)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x128)" ( (binary_expression "uVar2 + 0x128" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "iVar5 = (*pcVar11)(uVar2 + 0x134);" (assignment_expression "iVar5 = (*pcVar11)(uVar2 + 0x134)" identifier = (call_expression "(*pcVar11)(uVar2 + 0x134)" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "(uVar2 + 0x134)" ( (binary_expression "uVar2 + 0x134" identifier + number_literal) )))) ;) (if_statement "if (iVar5 == 0) {\n    bVar1 = *(byte *)(uVar2 + 0x202);\n    uVar7 = *(uint *)(uVar2 + 0x1c4);\n    *(undefined4 *)(uVar2 + 0x138) = 0;\n    *(undefined4 *)(uVar2 + 0x134) = 0;\n    *(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }\n    iVar5 = *piVar9;\n    *(uint *)(uVar2 + 0x144) = uVar6 + 1;\n    uVar2 = auStack_bc[0xe];\n    if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }\n  }\n  else {\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar1 = *(byte *)(uVar2 + 0x202);\n    uVar7 = *(uint *)(uVar2 + 0x1c4);\n    *(undefined4 *)(uVar2 + 0x138) = 0;\n    *(undefined4 *)(uVar2 + 0x134) = 0;\n    *(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }\n    iVar5 = *piVar9;\n    *(uint *)(uVar2 + 0x144) = uVar6 + 1;\n    uVar2 = auStack_bc[0xe];\n    if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }\n  }" { (expression_statement "bVar1 = *(byte *)(uVar2 + 0x202);" (assignment_expression "bVar1 = *(byte *)(uVar2 + 0x202)" identifier = (pointer_expression "*(byte *)(uVar2 + 0x202)" * (cast_expression "(byte *)(uVar2 + 0x202)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x202)" ( (binary_expression "uVar2 + 0x202" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = *(uint *)(uVar2 + 0x1c4);" (assignment_expression "uVar7 = *(uint *)(uVar2 + 0x1c4)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x1c4)" * (cast_expression "(uint *)(uVar2 + 0x1c4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c4)" ( (binary_expression "uVar2 + 0x1c4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x138) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x138) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x138)" * (cast_expression "(undefined4 *)(uVar2 + 0x138)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x138)" ( (binary_expression "uVar2 + 0x138" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x134) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x134) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x134)" * (cast_expression "(undefined4 *)(uVar2 + 0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x134)" ( (binary_expression "uVar2 + 0x134" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);" (assignment_expression "*(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4)" (pointer_expression "*(undefined4 *)(uVar2 + 0x140)" * (cast_expression "(undefined4 *)(uVar2 + 0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x140)" ( (binary_expression "uVar2 + 0x140" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(uVar2 + 0x1d4)" * (cast_expression "(undefined4 *)(uVar2 + 0x1d4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1d4)" ( (binary_expression "uVar2 + 0x1d4" identifier + number_literal) ))))) ;) (if_statement "if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }" if (parenthesized_expression "(bVar1 < 8)" ( (binary_expression "bVar1 < 8" identifier < number_literal) )) (compound_statement "{\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }" { (expression_statement "uVar6 = bVar1 * uVar7 + 7 >> 3;" (assignment_expression "uVar6 = bVar1 * uVar7 + 7 >> 3" identifier = (binary_expression "bVar1 * uVar7 + 7 >> 3" (binary_expression "bVar1 * uVar7 + 7" (binary_expression "bVar1 * uVar7" identifier * identifier) + number_literal) >> number_literal)) ;) }) (else_clause "else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }" else (compound_statement "{\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }" { (expression_statement "uVar6 = (bVar1 >> 3) * uVar7;" (assignment_expression "uVar6 = (bVar1 >> 3) * uVar7" identifier = (binary_expression "(bVar1 >> 3) * uVar7" (parenthesized_expression "(bVar1 >> 3)" ( (binary_expression "bVar1 >> 3" identifier >> number_literal) )) * identifier)) ;) }))) (expression_statement "iVar5 = *piVar9;" (assignment_expression "iVar5 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "*(uint *)(uVar2 + 0x144) = uVar6 + 1;" (assignment_expression "*(uint *)(uVar2 + 0x144) = uVar6 + 1" (pointer_expression "*(uint *)(uVar2 + 0x144)" * (cast_expression "(uint *)(uVar2 + 0x144)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x144)" ( (binary_expression "uVar2 + 0x144" identifier + number_literal) )))) = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = auStack_bc[0xe];" (assignment_expression "uVar2 = auStack_bc[0xe]" identifier = (subscript_expression "auStack_bc[0xe]" identifier [ number_literal ])) ;) (if_statement "if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }" if (parenthesized_expression "(auStack_bc[0xe] == iVar5)" ( (binary_expression "auStack_bc[0xe] == iVar5" (subscript_expression "auStack_bc[0xe]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n      return uVar6 + 1;\n    }" { (return_statement "return uVar6 + 1;" return (binary_expression "uVar6 + 1" identifier + number_literal) ;) })) }) (else_clause "else {\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }" else (compound_statement "{\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }" { (expression_statement "uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;" (assignment_expression "uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08" identifier = (binary_expression "*(int *)(puVar10 + 0x21c10) + 0xd08" (pointer_expression "*(int *)(puVar10 + 0x21c10)" * (cast_expression "(int *)(puVar10 + 0x21c10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x21c10)" ( (binary_expression "puVar10 + 0x21c10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(**(code **)(puVar10 + 0x22000))();" (call_expression "(**(code **)(puVar10 + 0x22000))()" (parenthesized_expression "(**(code **)(puVar10 + 0x22000))" ( (pointer_expression "**(code **)(puVar10 + 0x22000)" * (pointer_expression "*(code **)(puVar10 + 0x22000)" * (cast_expression "(code **)(puVar10 + 0x22000)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x22000)" ( (binary_expression "puVar10 + 0x22000" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) }))) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x22078);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x22078)" identifier = (pointer_expression "*(code **)(puVar10 + 0x22078)" * (cast_expression "(code **)(puVar10 + 0x22078)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x22078)" ( (binary_expression "puVar10 + 0x22078" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" ( (pointer_expression "*pcVar11" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uVar7 = uVar7 & 0xb;" (assignment_expression "uVar7 = uVar7 & 0xb" identifier = (binary_expression "uVar7 & 0xb" identifier & number_literal)) ;) (if_statement "if (uVar7 != 0) goto LAB_000315f4;" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000315f4;" goto statement_identifier ;)) (if_statement "if ((*(uint *)(uVar2 + 0x124) & 0x8000) == 0) {\n    FUN_0001a110();\n    uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;\n    if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  else {\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }" if (parenthesized_expression "((*(uint *)(uVar2 + 0x124) & 0x8000) == 0)" ( (binary_expression "(*(uint *)(uVar2 + 0x124) & 0x8000) == 0" (parenthesized_expression "(*(uint *)(uVar2 + 0x124) & 0x8000)" ( (binary_expression "*(uint *)(uVar2 + 0x124) & 0x8000" (pointer_expression "*(uint *)(uVar2 + 0x124)" * (cast_expression "(uint *)(uVar2 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x124)" ( (binary_expression "uVar2 + 0x124" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    FUN_0001a110();\n    uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;\n    if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }" { (expression_statement "FUN_0001a110();" (call_expression "FUN_0001a110()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;" (assignment_expression "uVar7 = *(uint *)(uVar2 + 0x124) & 0xb" identifier = (binary_expression "*(uint *)(uVar2 + 0x124) & 0xb" (pointer_expression "*(uint *)(uVar2 + 0x124)" * (cast_expression "(uint *)(uVar2 + 0x124)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x124)" ( (binary_expression "uVar2 + 0x124" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }" { (for_statement "for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }" for ( ; (binary_expression "(-uVar7 & uVar7) != uVar7" (parenthesized_expression "(-uVar7 & uVar7)" ( (binary_expression "-uVar7 & uVar7" (unary_expression "-uVar7" - identifier) & identifier) )) != identifier) ; (assignment_expression "uVar7 = uVar7 & uVar7 - 1" identifier = (binary_expression "uVar7 & uVar7 - 1" identifier & (binary_expression "uVar7 - 1" identifier - number_literal))) ) (compound_statement "{\n      }" { })) (return_statement "return uVar7;" return identifier ;) })) (expression_statement "iVar5 = *(int *)(pcVar11 + 0x21a7c);" (assignment_expression "iVar5 = *(int *)(pcVar11 + 0x21a7c)" identifier = (pointer_expression "*(int *)(pcVar11 + 0x21a7c)" * (cast_expression "(int *)(pcVar11 + 0x21a7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x21a7c)" ( (binary_expression "pcVar11 + 0x21a7c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }" else (compound_statement "{\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }" { (expression_statement "iVar5 = *(int *)(pcVar11 + 0x21a7c);" (assignment_expression "iVar5 = *(int *)(pcVar11 + 0x21a7c)" identifier = (pointer_expression "*(int *)(pcVar11 + 0x21a7c)" * (cast_expression "(int *)(pcVar11 + 0x21a7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 0x21a7c)" ( (binary_expression "pcVar11 + 0x21a7c" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar12 = (**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40);" (assignment_expression "uVar12 = (**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40)" identifier = (call_expression "(**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40)" (parenthesized_expression "(**(code **)(pcVar11 + 0x21e6c))" ( (pointer_expression "**(code **)(pcVar11 + 0x21e6c)" * (pointer_expression "*(code **)(pcVar11 + 0x21e6c)" * (cast_expression "(code **)(pcVar11 + 0x21e6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar11 + 0x21e6c)" ( (binary_expression "pcVar11 + 0x21e6c" identifier + number_literal) ))))) )) (argument_list "(uVar2,iVar5 + 0xe40)" ( identifier , (binary_expression "iVar5 + 0xe40" identifier + number_literal) )))) ;) (do_statement "do {\n    uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;\nLAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);\n  } while ((-uVar7 & uVar7) != uVar7);" do (compound_statement "{\n    uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;\nLAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);\n  }" { (expression_statement "uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;" (assignment_expression "uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12" identifier = (binary_expression "(uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12" (call_expression "(uint)((ulonglong)uVar12 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar12 >> 0x20)" ( (binary_expression "(ulonglong)uVar12 >> 0x20" (cast_expression "(ulonglong)uVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) & (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (labeled_statement "LAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);" statement_identifier : (expression_statement "uVar12 = CONCAT44(uVar7,uVar7 - 1);" (assignment_expression "uVar12 = CONCAT44(uVar7,uVar7 - 1)" identifier = (call_expression "CONCAT44(uVar7,uVar7 - 1)" identifier (argument_list "(uVar7,uVar7 - 1)" ( identifier , (binary_expression "uVar7 - 1" identifier - number_literal) )))) ;)) }) while (parenthesized_expression "((-uVar7 & uVar7) != uVar7)" ( (binary_expression "(-uVar7 & uVar7) != uVar7" (parenthesized_expression "(-uVar7 & uVar7)" ( (binary_expression "-uVar7 & uVar7" (unary_expression "-uVar7" - identifier) & identifier) )) != identifier) )) ;) (return_statement "return uVar7 & 0xff;" return (binary_expression "uVar7 & 0xff" identifier & number_literal) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT << LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == IDENT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) })))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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) ;) (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) ;) (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) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) >> LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) )) - (subscript_expression IDENT [ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ])) )) / IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * IDENT) + LIT) >> LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) (compound_statement { (return_statement return (binary_expression IDENT + LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (for_statement for ( ; (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - IDENT) & IDENT) )) != IDENT) ; (assignment_expression IDENT = (binary_expression IDENT & (binary_expression IDENT - LIT))) ) (compound_statement { })) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) & (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT - LIT) )))) ;)) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - IDENT) & IDENT) )) != IDENT) )) ;) (return_statement return (binary_expression IDENT & LIT) ;) })))
(function_definition "uint FUN_00031160(int param_1,int *param_2,int param_3)\n\n{\n  byte bVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined *puVar8;\n  int *piVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined8 uVar12;\n  uint auStack_bc [16];\n  int iStack_7c;\n  int iStack_78;\n  code *pcStack_74;\n  int local_60;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  uint local_4c;\n  undefined1 auStack_3c [4];\n  undefined1 auStack_38 [4];\n  undefined1 auStack_34 [4];\n  undefined1 auStack_30 [4];\n  byte local_2c;\n  byte local_2b;\n  byte local_2a;\n  byte local_29;\n  byte local_28;\n  byte local_27;\n  uint local_24;\n  \n  puVar10 = PTR___stack_chk_guard_000534bc;\n  local_24 = *(uint *)PTR___stack_chk_guard_000534bc;\n  FUN_0002f4f4(param_1,param_3);\n  uVar2 = *(uint *)(param_1 + 0x124);\n  if ((uVar2 & 1) == 0) goto LAB_000313f8;\n  if ((uVar2 & 4) == 0) {\n    if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    FUN_0002aef8(param_1,auStack_3c,0x16);\n    FUN_0002b068(param_1,0);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);\n    iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);\n    param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);\n    iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);\n    if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }\n  }\n  else {\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }\n  if (local_24 == *(uint *)puVar10) {\n    return *(uint *)puVar10;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\nLAB_000313f8:\n  pcVar11 = FUN_0003140c;\n  uVar2 = param_1;\n  puVar10 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xc18);\n  iStack_78 = param_3;\n  iStack_7c = param_1;\n  pcStack_74 = pcVar11;\n  auStack_bc[1] = 4;\n  auStack_bc[7] = 8;\n  auStack_bc[8] = 8;\n  auStack_bc[9] = 4;\n  auStack_bc[10] = 4;\n  piVar9 = *(int **)(puVar10 + 0x220b0);\n  auStack_bc[3] = 2;\n  auStack_bc[5] = 1;\n  auStack_bc[0xb] = 2;\n  auStack_bc[0xc] = 2;\n  auStack_bc[0xd] = 1;\n  auStack_bc[0] = 0;\n  auStack_bc[2] = 0;\n  auStack_bc[4] = 0;\n  auStack_bc[6] = 0;\n  uVar7 = *(uint *)(uVar2 + 0x1b4);\n  auStack_bc[0xe] = *piVar9;\n  if (*(char *)(uVar2 + 0x1fc) == '\0') {\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    *(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);\n  }\n  else {\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x21f00);\n  *(uint *)(uVar2 + 0x128) = *(uint *)(uVar2 + 0x128) & 0xfffffff7;\n  iVar5 = (*pcVar11)(uVar2 + 0x134);\n  if (iVar5 == 0) {\n    bVar1 = *(byte *)(uVar2 + 0x202);\n    uVar7 = *(uint *)(uVar2 + 0x1c4);\n    *(undefined4 *)(uVar2 + 0x138) = 0;\n    *(undefined4 *)(uVar2 + 0x134) = 0;\n    *(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }\n    iVar5 = *piVar9;\n    *(uint *)(uVar2 + 0x144) = uVar6 + 1;\n    uVar2 = auStack_bc[0xe];\n    if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }\n  }\n  else {\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }\n  pcVar11 = *(code **)(puVar10 + 0x22078);\n  (*pcVar11)();\n  uVar7 = uVar7 & 0xb;\n  if (uVar7 != 0) goto LAB_000315f4;\n  if ((*(uint *)(uVar2 + 0x124) & 0x8000) == 0) {\n    FUN_0001a110();\n    uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;\n    if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  else {\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  uVar12 = (**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40);\n  do {\n    uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;\nLAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);\n  } while ((-uVar7 & uVar7) != uVar7);\n  return uVar7 & 0xff;\n}" (type_identifier "uint") (function_declarator "FUN_00031160(int param_1,int *param_2,int param_3)" (identifier "FUN_00031160") (parameter_list "(int param_1,int *param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  uint uVar7;\n  undefined *puVar8;\n  int *piVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined8 uVar12;\n  uint auStack_bc [16];\n  int iStack_7c;\n  int iStack_78;\n  code *pcStack_74;\n  int local_60;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  uint local_4c;\n  undefined1 auStack_3c [4];\n  undefined1 auStack_38 [4];\n  undefined1 auStack_34 [4];\n  undefined1 auStack_30 [4];\n  byte local_2c;\n  byte local_2b;\n  byte local_2a;\n  byte local_29;\n  byte local_28;\n  byte local_27;\n  uint local_24;\n  \n  puVar10 = PTR___stack_chk_guard_000534bc;\n  local_24 = *(uint *)PTR___stack_chk_guard_000534bc;\n  FUN_0002f4f4(param_1,param_3);\n  uVar2 = *(uint *)(param_1 + 0x124);\n  if ((uVar2 & 1) == 0) goto LAB_000313f8;\n  if ((uVar2 & 4) == 0) {\n    if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    FUN_0002aef8(param_1,auStack_3c,0x16);\n    FUN_0002b068(param_1,0);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);\n    iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);\n    param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);\n    iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);\n    if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }\n  }\n  else {\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }\n  if (local_24 == *(uint *)puVar10) {\n    return *(uint *)puVar10;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\nLAB_000313f8:\n  pcVar11 = FUN_0003140c;\n  uVar2 = param_1;\n  puVar10 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xc18);\n  iStack_78 = param_3;\n  iStack_7c = param_1;\n  pcStack_74 = pcVar11;\n  auStack_bc[1] = 4;\n  auStack_bc[7] = 8;\n  auStack_bc[8] = 8;\n  auStack_bc[9] = 4;\n  auStack_bc[10] = 4;\n  piVar9 = *(int **)(puVar10 + 0x220b0);\n  auStack_bc[3] = 2;\n  auStack_bc[5] = 1;\n  auStack_bc[0xb] = 2;\n  auStack_bc[0xc] = 2;\n  auStack_bc[0xd] = 1;\n  auStack_bc[0] = 0;\n  auStack_bc[2] = 0;\n  auStack_bc[4] = 0;\n  auStack_bc[6] = 0;\n  uVar7 = *(uint *)(uVar2 + 0x1b4);\n  auStack_bc[0xe] = *piVar9;\n  if (*(char *)(uVar2 + 0x1fc) == '\0') {\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    *(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);\n  }\n  else {\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }\n  pcVar11 = *(code **)(puVar10 + 0x21f00);\n  *(uint *)(uVar2 + 0x128) = *(uint *)(uVar2 + 0x128) & 0xfffffff7;\n  iVar5 = (*pcVar11)(uVar2 + 0x134);\n  if (iVar5 == 0) {\n    bVar1 = *(byte *)(uVar2 + 0x202);\n    uVar7 = *(uint *)(uVar2 + 0x1c4);\n    *(undefined4 *)(uVar2 + 0x138) = 0;\n    *(undefined4 *)(uVar2 + 0x134) = 0;\n    *(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }\n    iVar5 = *piVar9;\n    *(uint *)(uVar2 + 0x144) = uVar6 + 1;\n    uVar2 = auStack_bc[0xe];\n    if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }\n  }\n  else {\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }\n  pcVar11 = *(code **)(puVar10 + 0x22078);\n  (*pcVar11)();\n  uVar7 = uVar7 & 0xb;\n  if (uVar7 != 0) goto LAB_000315f4;\n  if ((*(uint *)(uVar2 + 0x124) & 0x8000) == 0) {\n    FUN_0001a110();\n    uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;\n    if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  else {\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  uVar12 = (**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40);\n  do {\n    uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;\nLAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);\n  } while ((-uVar7 & uVar7) != uVar7);\n  return uVar7 & 0xff;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "undefined *puVar8;" (type_identifier "undefined") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "code *pcVar11;" (type_identifier "code") (pointer_declarator "*pcVar11" (* "*") (identifier "pcVar11")) (; ";")) (declaration "undefined8 uVar12;" (type_identifier "undefined8") (identifier "uVar12") (; ";")) (declaration "uint auStack_bc [16];" (type_identifier "uint") (array_declarator "auStack_bc [16]" (identifier "auStack_bc") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "int iStack_7c;" (primitive_type "int") (identifier "iStack_7c") (; ";")) (declaration "int iStack_78;" (primitive_type "int") (identifier "iStack_78") (; ";")) (declaration "code *pcStack_74;" (type_identifier "code") (pointer_declarator "*pcStack_74" (* "*") (identifier "pcStack_74")) (; ";")) (declaration "int local_60;" (primitive_type "int") (identifier "local_60") (; ";")) (declaration "int local_5c;" (primitive_type "int") (identifier "local_5c") (; ";")) (declaration "uint local_58;" (type_identifier "uint") (identifier "local_58") (; ";")) (declaration "uint local_54;" (type_identifier "uint") (identifier "local_54") (; ";")) (declaration "uint local_50;" (type_identifier "uint") (identifier "local_50") (; ";")) (declaration "uint local_4c;" (type_identifier "uint") (identifier "local_4c") (; ";")) (declaration "undefined1 auStack_3c [4];" (type_identifier "undefined1") (array_declarator "auStack_3c [4]" (identifier "auStack_3c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined1 auStack_38 [4];" (type_identifier "undefined1") (array_declarator "auStack_38 [4]" (identifier "auStack_38") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined1 auStack_34 [4];" (type_identifier "undefined1") (array_declarator "auStack_34 [4]" (identifier "auStack_34") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined1 auStack_30 [4];" (type_identifier "undefined1") (array_declarator "auStack_30 [4]" (identifier "auStack_30") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "byte local_2c;" (type_identifier "byte") (identifier "local_2c") (; ";")) (declaration "byte local_2b;" (type_identifier "byte") (identifier "local_2b") (; ";")) (declaration "byte local_2a;" (type_identifier "byte") (identifier "local_2a") (; ";")) (declaration "byte local_29;" (type_identifier "byte") (identifier "local_29") (; ";")) (declaration "byte local_28;" (type_identifier "byte") (identifier "local_28") (; ";")) (declaration "byte local_27;" (type_identifier "byte") (identifier "local_27") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (expression_statement "puVar10 = PTR___stack_chk_guard_000534bc;" (assignment_expression "puVar10 = PTR___stack_chk_guard_000534bc" (identifier "puVar10") (= "=") (identifier "PTR___stack_chk_guard_000534bc")) (; ";")) (expression_statement "local_24 = *(uint *)PTR___stack_chk_guard_000534bc;" (assignment_expression "local_24 = *(uint *)PTR___stack_chk_guard_000534bc" (identifier "local_24") (= "=") (pointer_expression "*(uint *)PTR___stack_chk_guard_000534bc" (* "*") (cast_expression "(uint *)PTR___stack_chk_guard_000534bc" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000534bc")))) (; ";")) (expression_statement "FUN_0002f4f4(param_1,param_3);" (call_expression "FUN_0002f4f4(param_1,param_3)" (identifier "FUN_0002f4f4") (argument_list "(param_1,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "uVar2 = *(uint *)(param_1 + 0x124);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0x124)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(param_1 + 0x124)" (* "*") (cast_expression "(uint *)(param_1 + 0x124)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x124)" (( "(") (binary_expression "param_1 + 0x124" (identifier "param_1") (+ "+") (number_literal "0x124")) () ")"))))) (; ";")) (if_statement "if ((uVar2 & 1) == 0) goto LAB_000313f8;" (if "if") (parenthesized_expression "((uVar2 & 1) == 0)" (( "(") (binary_expression "(uVar2 & 1) == 0" (parenthesized_expression "(uVar2 & 1)" (( "(") (binary_expression "uVar2 & 1" (identifier "uVar2") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000313f8;" (goto "goto") (statement_identifier "LAB_000313f8") (; ";"))) (if_statement "if ((uVar2 & 4) == 0) {\n    if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    FUN_0002aef8(param_1,auStack_3c,0x16);\n    FUN_0002b068(param_1,0);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);\n    iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);\n    param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);\n    iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);\n    if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }\n  }\n  else {\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }" (if "if") (parenthesized_expression "((uVar2 & 4) == 0)" (( "(") (binary_expression "(uVar2 & 4) == 0" (parenthesized_expression "(uVar2 & 4)" (( "(") (binary_expression "uVar2 & 4" (identifier "uVar2") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }\n    if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }\n    FUN_0002aef8(param_1,auStack_3c,0x16);\n    FUN_0002b068(param_1,0);\n    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);\n    iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);\n    param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);\n    iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);\n    if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }\n  }" ({ "{") (if_statement "if ((int)(uVar2 << 0xe) < 0) {\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }" (if "if") (parenthesized_expression "((int)(uVar2 << 0xe) < 0)" (( "(") (binary_expression "(int)(uVar2 << 0xe) < 0" (cast_expression "(int)(uVar2 << 0xe)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar2 << 0xe)" (( "(") (binary_expression "uVar2 << 0xe" (identifier "uVar2") (<< "<<") (number_literal "0xe")) () ")"))) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      puVar8 = PTR_s_nt_0005301c + 0xc54;\n      goto LAB_000311f4;\n    }" ({ "{") (expression_statement "puVar8 = PTR_s_nt_0005301c + 0xc54;" (assignment_expression "puVar8 = PTR_s_nt_0005301c + 0xc54" (identifier "puVar8") (= "=") (binary_expression "PTR_s_nt_0005301c + 0xc54" (identifier "PTR_s_nt_0005301c") (+ "+") (number_literal "0xc54"))) (; ";")) (goto_statement "goto LAB_000311f4;" (goto "goto") (statement_identifier "LAB_000311f4") (; ";")) (} "}"))) (if_statement "if (param_3 != 0x1a) {\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }" (if "if") (parenthesized_expression "(param_3 != 0x1a)" (( "(") (binary_expression "param_3 != 0x1a" (identifier "param_3") (!= "!=") (number_literal "0x1a")) () ")")) (compound_statement "{\n      puVar8 = PTR_s_nt_0005301c + 0xc7c;\n      goto LAB_000311f4;\n    }" ({ "{") (expression_statement "puVar8 = PTR_s_nt_0005301c + 0xc7c;" (assignment_expression "puVar8 = PTR_s_nt_0005301c + 0xc7c" (identifier "puVar8") (= "=") (binary_expression "PTR_s_nt_0005301c + 0xc7c" (identifier "PTR_s_nt_0005301c") (+ "+") (number_literal "0xc7c"))) (; ";")) (goto_statement "goto LAB_000311f4;" (goto "goto") (statement_identifier "LAB_000311f4") (; ";")) (} "}"))) (expression_statement "FUN_0002aef8(param_1,auStack_3c,0x16);" (call_expression "FUN_0002aef8(param_1,auStack_3c,0x16)" (identifier "FUN_0002aef8") (argument_list "(param_1,auStack_3c,0x16)" (( "(") (identifier "param_1") (, ",") (identifier "auStack_3c") (, ",") (number_literal "0x16") () ")"))) (; ";")) (expression_statement "FUN_0002b068(param_1,0);" (call_expression "FUN_0002b068(param_1,0)" (identifier "FUN_0002b068") (argument_list "(param_1,0)" (( "(") (identifier "param_1") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);" (assignment_expression "iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c)" (identifier "iVar5") (= "=") (call_expression "(*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c)" (parenthesized_expression "(*(code *)PTR_png_get_uint_31_0005333c)" (( "(") (pointer_expression "*(code *)PTR_png_get_uint_31_0005333c" (* "*") (cast_expression "(code *)PTR_png_get_uint_31_0005333c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_get_uint_31_0005333c"))) () ")")) (argument_list "(param_1,auStack_3c)" (( "(") (identifier "param_1") (, ",") (identifier "auStack_3c") () ")")))) (; ";")) (expression_statement "iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);" (assignment_expression "iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38)" (parenthesized_expression "(*(code *)PTR_png_get_uint_31_0005333c)" (( "(") (pointer_expression "*(code *)PTR_png_get_uint_31_0005333c" (* "*") (cast_expression "(code *)PTR_png_get_uint_31_0005333c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_get_uint_31_0005333c"))) () ")")) (argument_list "(param_1,auStack_38)" (( "(") (identifier "param_1") (, ",") (identifier "auStack_38") () ")")))) (; ";")) (expression_statement "param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);" (assignment_expression "param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34)" (identifier "param_3") (= "=") (call_expression "(*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34)" (parenthesized_expression "(*(code *)PTR_png_get_uint_31_0005333c)" (( "(") (pointer_expression "*(code *)PTR_png_get_uint_31_0005333c" (* "*") (cast_expression "(code *)PTR_png_get_uint_31_0005333c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_get_uint_31_0005333c"))) () ")")) (argument_list "(param_1,auStack_34)" (( "(") (identifier "param_1") (, ",") (identifier "auStack_34") () ")")))) (; ";")) (expression_statement "iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);" (assignment_expression "iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30)" (identifier "iVar4") (= "=") (call_expression "(*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30)" (parenthesized_expression "(*(code *)PTR_png_get_uint_31_0005333c)" (( "(") (pointer_expression "*(code *)PTR_png_get_uint_31_0005333c" (* "*") (cast_expression "(code *)PTR_png_get_uint_31_0005333c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_get_uint_31_0005333c"))) () ")")) (argument_list "(param_1,auStack_30)" (( "(") (identifier "param_1") (, ",") (identifier "auStack_30") () ")")))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x318) == 0) {\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }\n    else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x318) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x318) == 0" (pointer_expression "*(int *)(param_1 + 0x318)" (* "*") (cast_expression "(int *)(param_1 + 0x318)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x318)" (( "(") (binary_expression "param_1 + 0x318" (identifier "param_1") (+ "+") (number_literal "0x318")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }\n    }" ({ "{") (if_statement "if (param_3 == 0 && iVar4 == 0) {\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }\n      else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }" (if "if") (parenthesized_expression "(param_3 == 0 && iVar4 == 0)" (( "(") (binary_expression "param_3 == 0 && iVar4 == 0" (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) (&& "&&") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n        if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }\n      }" ({ "{") (if_statement "if (param_2 != (int *)0x0) {\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }" (if "if") (parenthesized_expression "(param_2 != (int *)0x0)" (( "(") (binary_expression "param_2 != (int *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;\n          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);\n        }" ({ "{") (if_statement "if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;" (if "if") (parenthesized_expression "((*param_2 == iVar5) && (param_2[1] == iVar3))" (( "(") (binary_expression "(*param_2 == iVar5) && (param_2[1] == iVar3)" (parenthesized_expression "(*param_2 == iVar5)" (( "(") (binary_expression "*param_2 == iVar5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (identifier "iVar5")) () ")")) (&& "&&") (parenthesized_expression "(param_2[1] == iVar3)" (( "(") (binary_expression "param_2[1] == iVar3" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (== "==") (identifier "iVar3")) () ")"))) () ")")) (goto_statement "goto LAB_00031338;" (goto "goto") (statement_identifier "LAB_00031338") (; ";"))) (expression_statement "(*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);" (call_expression "(*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0)" (parenthesized_expression "(*(code *)PTR_png_warning_00053440)" (( "(") (pointer_expression "*(code *)PTR_png_warning_00053440" (* "*") (cast_expression "(code *)PTR_png_warning_00053440" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_warning_00053440"))) () ")")) (argument_list "(param_1,PTR_s_nt_0005301c + 0xcd0)" (( "(") (identifier "param_1") (, ",") (binary_expression "PTR_s_nt_0005301c + 0xcd0" (identifier "PTR_s_nt_0005301c") (+ "+") (number_literal "0xcd0")) () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }" (else "else") (compound_statement "{\n        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);\n      }" ({ "{") (expression_statement "(*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);" (call_expression "(*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0)" (parenthesized_expression "(*(code *)PTR_png_warning_00053440)" (( "(") (pointer_expression "*(code *)PTR_png_warning_00053440" (* "*") (cast_expression "(code *)PTR_png_warning_00053440" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_warning_00053440"))) () ")")) (argument_list "(param_1,PTR_s_nt_0005301c + 0xca0)" (( "(") (identifier "param_1") (, ",") (binary_expression "PTR_s_nt_0005301c + 0xca0" (identifier "PTR_s_nt_0005301c") (+ "+") (number_literal "0xca0")) () ")"))) (; ";")) (} "}")))) (} "}")) (else_clause "else if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }" (else "else") (if_statement "if (param_2 != (int *)0x0) {\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }" (if "if") (parenthesized_expression "(param_2 != (int *)0x0)" (( "(") (binary_expression "param_2 != (int *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00031338:\n      local_4c = (uint)local_27;\n      local_50 = (uint)local_28;\n      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;\n      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;\n      local_60 = param_3;\n      local_5c = iVar4;\n      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);\n      FUN_000310c4(param_1,param_2);\n      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;\n    }" ({ "{") (labeled_statement "LAB_00031338:\n      local_4c = (uint)local_27;" (statement_identifier "LAB_00031338") (: ":") (expression_statement "local_4c = (uint)local_27;" (assignment_expression "local_4c = (uint)local_27" (identifier "local_4c") (= "=") (cast_expression "(uint)local_27" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_27"))) (; ";"))) (expression_statement "local_50 = (uint)local_28;" (assignment_expression "local_50 = (uint)local_28" (identifier "local_50") (= "=") (cast_expression "(uint)local_28" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_28"))) (; ";")) (expression_statement "local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;" (assignment_expression "local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff" (identifier "local_54") (= "=") (binary_expression "(uint)local_2a * 0x100 + (uint)local_29 & 0xffff" (binary_expression "(uint)local_2a * 0x100 + (uint)local_29" (binary_expression "(uint)local_2a * 0x100" (cast_expression "(uint)local_2a" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_2a")) (* "*") (number_literal "0x100")) (+ "+") (cast_expression "(uint)local_29" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_29"))) (& "&") (number_literal "0xffff"))) (; ";")) (expression_statement "local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;" (assignment_expression "local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff" (identifier "local_58") (= "=") (binary_expression "(uint)local_2c * 0x100 + (uint)local_2b & 0xffff" (binary_expression "(uint)local_2c * 0x100 + (uint)local_2b" (binary_expression "(uint)local_2c * 0x100" (cast_expression "(uint)local_2c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_2c")) (* "*") (number_literal "0x100")) (+ "+") (cast_expression "(uint)local_2b" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_2b"))) (& "&") (number_literal "0xffff"))) (; ";")) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" (identifier "local_60") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_5c = iVar4;" (assignment_expression "local_5c = iVar4" (identifier "local_5c") (= "=") (identifier "iVar4")) (; ";")) (expression_statement "(*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);" (call_expression "(*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3)" (parenthesized_expression "(*(code *)PTR_png_set_next_frame_fcTL_000532e4)" (( "(") (pointer_expression "*(code *)PTR_png_set_next_frame_fcTL_000532e4" (* "*") (cast_expression "(code *)PTR_png_set_next_frame_fcTL_000532e4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_set_next_frame_fcTL_000532e4"))) () ")")) (argument_list "(param_1,param_2,iVar5,iVar3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "iVar5") (, ",") (identifier "iVar3") () ")"))) (; ";")) (expression_statement "FUN_000310c4(param_1,param_2);" (call_expression "FUN_000310c4(param_1,param_2)" (identifier "FUN_000310c4") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;" (assignment_expression "*(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000" (pointer_expression "*(uint *)(param_1 + 0x124)" (* "*") (cast_expression "(uint *)(param_1 + 0x124)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x124)" (( "(") (binary_expression "param_1 + 0x124" (identifier "param_1") (+ "+") (number_literal "0x124")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 0x124) | 0x20000" (pointer_expression "*(uint *)(param_1 + 0x124)" (* "*") (cast_expression "(uint *)(param_1 + 0x124)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x124)" (( "(") (binary_expression "param_1 + 0x124" (identifier "param_1") (+ "+") (number_literal "0x124")) () ")")))) (| "|") (number_literal "0x20000"))) (; ";")) (} "}"))))) (} "}")) (else_clause "else {\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }" (else "else") (compound_statement "{\n    puVar8 = PTR_s_nt_0005301c + 0xc34;\nLAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);\n    FUN_0002b068(param_1,param_3 + -4);\n  }" ({ "{") (expression_statement "puVar8 = PTR_s_nt_0005301c + 0xc34;" (assignment_expression "puVar8 = PTR_s_nt_0005301c + 0xc34" (identifier "puVar8") (= "=") (binary_expression "PTR_s_nt_0005301c + 0xc34" (identifier "PTR_s_nt_0005301c") (+ "+") (number_literal "0xc34"))) (; ";")) (labeled_statement "LAB_000311f4:\n    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);" (statement_identifier "LAB_000311f4") (: ":") (expression_statement "(*(code *)PTR_png_warning_00053440)(param_1,puVar8);" (call_expression "(*(code *)PTR_png_warning_00053440)(param_1,puVar8)" (parenthesized_expression "(*(code *)PTR_png_warning_00053440)" (( "(") (pointer_expression "*(code *)PTR_png_warning_00053440" (* "*") (cast_expression "(code *)PTR_png_warning_00053440" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_warning_00053440"))) () ")")) (argument_list "(param_1,puVar8)" (( "(") (identifier "param_1") (, ",") (identifier "puVar8") () ")"))) (; ";"))) (expression_statement "FUN_0002b068(param_1,param_3 + -4);" (call_expression "FUN_0002b068(param_1,param_3 + -4)" (identifier "FUN_0002b068") (argument_list "(param_1,param_3 + -4)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_3 + -4" (identifier "param_3") (+ "+") (number_literal "-4")) () ")"))) (; ";")) (} "}")))) (if_statement "if (local_24 == *(uint *)puVar10) {\n    return *(uint *)puVar10;\n  }" (if "if") (parenthesized_expression "(local_24 == *(uint *)puVar10)" (( "(") (binary_expression "local_24 == *(uint *)puVar10" (identifier "local_24") (== "==") (pointer_expression "*(uint *)puVar10" (* "*") (cast_expression "(uint *)puVar10" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar10")))) () ")")) (compound_statement "{\n    return *(uint *)puVar10;\n  }" ({ "{") (return_statement "return *(uint *)puVar10;" (return "return") (pointer_expression "*(uint *)puVar10" (* "*") (cast_expression "(uint *)puVar10" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar10"))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___stack_chk_fail_00053484)();" (call_expression "(*(code *)PTR___stack_chk_fail_00053484)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00053484)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_00053484" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_00053484" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00053484"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_000313f8:\n  pcVar11 = FUN_0003140c;" (statement_identifier "LAB_000313f8") (: ":") (expression_statement "pcVar11 = FUN_0003140c;" (assignment_expression "pcVar11 = FUN_0003140c" (identifier "pcVar11") (= "=") (identifier "FUN_0003140c")) (; ";"))) (expression_statement "uVar2 = param_1;" (assignment_expression "uVar2 = param_1" (identifier "uVar2") (= "=") (identifier "param_1")) (; ";")) (expression_statement "puVar10 = PTR_png_error_0005340c;" (assignment_expression "puVar10 = PTR_png_error_0005340c" (identifier "puVar10") (= "=") (identifier "PTR_png_error_0005340c")) (; ";")) (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xc18);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xc18)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" (( "(") (pointer_expression "*(code *)PTR_png_error_0005340c" (* "*") (cast_expression "(code *)PTR_png_error_0005340c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_error_0005340c"))) () ")")) (argument_list "(param_1,PTR_s_nt_0005301c + 0xc18)" (( "(") (identifier "param_1") (, ",") (binary_expression "PTR_s_nt_0005301c + 0xc18" (identifier "PTR_s_nt_0005301c") (+ "+") (number_literal "0xc18")) () ")"))) (; ";")) (expression_statement "iStack_78 = param_3;" (assignment_expression "iStack_78 = param_3" (identifier "iStack_78") (= "=") (identifier "param_3")) (; ";")) (expression_statement "iStack_7c = param_1;" (assignment_expression "iStack_7c = param_1" (identifier "iStack_7c") (= "=") (identifier "param_1")) (; ";")) (expression_statement "pcStack_74 = pcVar11;" (assignment_expression "pcStack_74 = pcVar11" (identifier "pcStack_74") (= "=") (identifier "pcVar11")) (; ";")) (expression_statement "auStack_bc[1] = 4;" (assignment_expression "auStack_bc[1] = 4" (subscript_expression "auStack_bc[1]" (identifier "auStack_bc") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "4")) (; ";")) (expression_statement "auStack_bc[7] = 8;" (assignment_expression "auStack_bc[7] = 8" (subscript_expression "auStack_bc[7]" (identifier "auStack_bc") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "auStack_bc[8] = 8;" (assignment_expression "auStack_bc[8] = 8" (subscript_expression "auStack_bc[8]" (identifier "auStack_bc") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "auStack_bc[9] = 4;" (assignment_expression "auStack_bc[9] = 4" (subscript_expression "auStack_bc[9]" (identifier "auStack_bc") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "4")) (; ";")) (expression_statement "auStack_bc[10] = 4;" (assignment_expression "auStack_bc[10] = 4" (subscript_expression "auStack_bc[10]" (identifier "auStack_bc") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "4")) (; ";")) (expression_statement "piVar9 = *(int **)(puVar10 + 0x220b0);" (assignment_expression "piVar9 = *(int **)(puVar10 + 0x220b0)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(puVar10 + 0x220b0)" (* "*") (cast_expression "(int **)(puVar10 + 0x220b0)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x220b0)" (( "(") (binary_expression "puVar10 + 0x220b0" (identifier "puVar10") (+ "+") (number_literal "0x220b0")) () ")"))))) (; ";")) (expression_statement "auStack_bc[3] = 2;" (assignment_expression "auStack_bc[3] = 2" (subscript_expression "auStack_bc[3]" (identifier "auStack_bc") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "2")) (; ";")) (expression_statement "auStack_bc[5] = 1;" (assignment_expression "auStack_bc[5] = 1" (subscript_expression "auStack_bc[5]" (identifier "auStack_bc") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "auStack_bc[0xb] = 2;" (assignment_expression "auStack_bc[0xb] = 2" (subscript_expression "auStack_bc[0xb]" (identifier "auStack_bc") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "2")) (; ";")) (expression_statement "auStack_bc[0xc] = 2;" (assignment_expression "auStack_bc[0xc] = 2" (subscript_expression "auStack_bc[0xc]" (identifier "auStack_bc") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "2")) (; ";")) (expression_statement "auStack_bc[0xd] = 1;" (assignment_expression "auStack_bc[0xd] = 1" (subscript_expression "auStack_bc[0xd]" (identifier "auStack_bc") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "auStack_bc[0] = 0;" (assignment_expression "auStack_bc[0] = 0" (subscript_expression "auStack_bc[0]" (identifier "auStack_bc") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auStack_bc[2] = 0;" (assignment_expression "auStack_bc[2] = 0" (subscript_expression "auStack_bc[2]" (identifier "auStack_bc") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auStack_bc[4] = 0;" (assignment_expression "auStack_bc[4] = 0" (subscript_expression "auStack_bc[4]" (identifier "auStack_bc") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auStack_bc[6] = 0;" (assignment_expression "auStack_bc[6] = 0" (subscript_expression "auStack_bc[6]" (identifier "auStack_bc") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = *(uint *)(uVar2 + 0x1b4);" (assignment_expression "uVar7 = *(uint *)(uVar2 + 0x1b4)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x1b4)" (* "*") (cast_expression "(uint *)(uVar2 + 0x1b4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1b4)" (( "(") (binary_expression "uVar2 + 0x1b4" (identifier "uVar2") (+ "+") (number_literal "0x1b4")) () ")"))))) (; ";")) (expression_statement "auStack_bc[0xe] = *piVar9;" (assignment_expression "auStack_bc[0xe] = *piVar9" (subscript_expression "auStack_bc[0xe]" (identifier "auStack_bc") ([ "[") (number_literal "0xe") (] "]")) (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (if_statement "if (*(char *)(uVar2 + 0x1fc) == '\0') {\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    *(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);\n  }\n  else {\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }" (if "if") (parenthesized_expression "(*(char *)(uVar2 + 0x1fc) == '\0')" (( "(") (binary_expression "*(char *)(uVar2 + 0x1fc) == '\0'" (pointer_expression "*(char *)(uVar2 + 0x1fc)" (* "*") (cast_expression "(char *)(uVar2 + 0x1fc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1fc)" (( "(") (binary_expression "uVar2 + 0x1fc" (identifier "uVar2") (+ "+") (number_literal "0x1fc")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    *(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);\n  }" ({ "{") (expression_statement "*(uint *)(uVar2 + 0x1b8) = uVar7;" (assignment_expression "*(uint *)(uVar2 + 0x1b8) = uVar7" (pointer_expression "*(uint *)(uVar2 + 0x1b8)" (* "*") (cast_expression "(uint *)(uVar2 + 0x1b8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1b8)" (( "(") (binary_expression "uVar2 + 0x1b8" (identifier "uVar2") (+ "+") (number_literal "0x1b8")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "*(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);" (assignment_expression "*(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0)" (pointer_expression "*(int *)(uVar2 + 0x1c4)" (* "*") (cast_expression "(int *)(uVar2 + 0x1c4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c4)" (( "(") (binary_expression "uVar2 + 0x1c4" (identifier "uVar2") (+ "+") (number_literal "0x1c4")) () ")")))) (= "=") (pointer_expression "*(int *)(uVar2 + 0x1b0)" (* "*") (cast_expression "(int *)(uVar2 + 0x1b0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1b0)" (( "(") (binary_expression "uVar2 + 0x1b0" (identifier "uVar2") (+ "+") (number_literal "0x1b0")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }" (else "else") (compound_statement "{\n    if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }\n    *(uint *)(uVar2 + 0x1b8) = uVar7;\n    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];\n    if (uVar7 == 0) {\n      trap(7);\n    }\n    *(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;\n  }" ({ "{") (if_statement "if ((*(uint *)(uVar2 + 300) & 2) == 0) {\n      uVar7 = uVar7 + 7 >> 3;\n    }" (if "if") (parenthesized_expression "((*(uint *)(uVar2 + 300) & 2) == 0)" (( "(") (binary_expression "(*(uint *)(uVar2 + 300) & 2) == 0" (parenthesized_expression "(*(uint *)(uVar2 + 300) & 2)" (( "(") (binary_expression "*(uint *)(uVar2 + 300) & 2" (pointer_expression "*(uint *)(uVar2 + 300)" (* "*") (cast_expression "(uint *)(uVar2 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 300)" (( "(") (binary_expression "uVar2 + 300" (identifier "uVar2") (+ "+") (number_literal "300")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar7 = uVar7 + 7 >> 3;\n    }" ({ "{") (expression_statement "uVar7 = uVar7 + 7 >> 3;" (assignment_expression "uVar7 = uVar7 + 7 >> 3" (identifier "uVar7") (= "=") (binary_expression "uVar7 + 7 >> 3" (binary_expression "uVar7 + 7" (identifier "uVar7") (+ "+") (number_literal "7")) (>> ">>") (number_literal "3"))) (; ";")) (} "}"))) (expression_statement "*(uint *)(uVar2 + 0x1b8) = uVar7;" (assignment_expression "*(uint *)(uVar2 + 0x1b8) = uVar7" (pointer_expression "*(uint *)(uVar2 + 0x1b8)" (* "*") (cast_expression "(uint *)(uVar2 + 0x1b8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1b8)" (( "(") (binary_expression "uVar2 + 0x1b8" (identifier "uVar2") (+ "+") (number_literal "0x1b8")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];" (assignment_expression "uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7]" (identifier "uVar7") (= "=") (subscript_expression "auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7]" (identifier "auStack_bc") ([ "[") (binary_expression "*(byte *)(uVar2 + 0x1fd) + 7" (pointer_expression "*(byte *)(uVar2 + 0x1fd)" (* "*") (cast_expression "(byte *)(uVar2 + 0x1fd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1fd)" (( "(") (binary_expression "uVar2 + 0x1fd" (identifier "uVar2") (+ "+") (number_literal "0x1fd")) () ")")))) (+ "+") (number_literal "7")) (] "]"))) (; ";")) (if_statement "if (uVar7 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "*(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;" (assignment_expression "*(uint *)(uVar2 + 0x1c4) =\n         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7" (pointer_expression "*(uint *)(uVar2 + 0x1c4)" (* "*") (cast_expression "(uint *)(uVar2 + 0x1c4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c4)" (( "(") (binary_expression "uVar2 + 0x1c4" (identifier "uVar2") (+ "+") (number_literal "0x1c4")) () ")")))) (= "=") (binary_expression "((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7" (parenthesized_expression "((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)])" (( "(") (binary_expression "(*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]" (parenthesized_expression "(*(int *)(uVar2 + 0x1b0) + -1 + uVar7)" (( "(") (binary_expression "*(int *)(uVar2 + 0x1b0) + -1 + uVar7" (binary_expression "*(int *)(uVar2 + 0x1b0) + -1" (pointer_expression "*(int *)(uVar2 + 0x1b0)" (* "*") (cast_expression "(int *)(uVar2 + 0x1b0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1b0)" (( "(") (binary_expression "uVar2 + 0x1b0" (identifier "uVar2") (+ "+") (number_literal "0x1b0")) () ")")))) (+ "+") (number_literal "-1")) (+ "+") (identifier "uVar7")) () ")")) (- "-") (subscript_expression "auStack_bc[*(byte *)(uVar2 + 0x1fd)]" (identifier "auStack_bc") ([ "[") (pointer_expression "*(byte *)(uVar2 + 0x1fd)" (* "*") (cast_expression "(byte *)(uVar2 + 0x1fd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1fd)" (( "(") (binary_expression "uVar2 + 0x1fd" (identifier "uVar2") (+ "+") (number_literal "0x1fd")) () ")")))) (] "]"))) () ")")) (/ "/") (identifier "uVar7"))) (; ";")) (} "}")))) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x21f00);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x21f00)" (identifier "pcVar11") (= "=") (pointer_expression "*(code **)(puVar10 + 0x21f00)" (* "*") (cast_expression "(code **)(puVar10 + 0x21f00)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x21f00)" (( "(") (binary_expression "puVar10 + 0x21f00" (identifier "puVar10") (+ "+") (number_literal "0x21f00")) () ")"))))) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x128) = *(uint *)(uVar2 + 0x128) & 0xfffffff7;" (assignment_expression "*(uint *)(uVar2 + 0x128) = *(uint *)(uVar2 + 0x128) & 0xfffffff7" (pointer_expression "*(uint *)(uVar2 + 0x128)" (* "*") (cast_expression "(uint *)(uVar2 + 0x128)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x128)" (( "(") (binary_expression "uVar2 + 0x128" (identifier "uVar2") (+ "+") (number_literal "0x128")) () ")")))) (= "=") (binary_expression "*(uint *)(uVar2 + 0x128) & 0xfffffff7" (pointer_expression "*(uint *)(uVar2 + 0x128)" (* "*") (cast_expression "(uint *)(uVar2 + 0x128)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x128)" (( "(") (binary_expression "uVar2 + 0x128" (identifier "uVar2") (+ "+") (number_literal "0x128")) () ")")))) (& "&") (number_literal "0xfffffff7"))) (; ";")) (expression_statement "iVar5 = (*pcVar11)(uVar2 + 0x134);" (assignment_expression "iVar5 = (*pcVar11)(uVar2 + 0x134)" (identifier "iVar5") (= "=") (call_expression "(*pcVar11)(uVar2 + 0x134)" (parenthesized_expression "(*pcVar11)" (( "(") (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) () ")")) (argument_list "(uVar2 + 0x134)" (( "(") (binary_expression "uVar2 + 0x134" (identifier "uVar2") (+ "+") (number_literal "0x134")) () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n    bVar1 = *(byte *)(uVar2 + 0x202);\n    uVar7 = *(uint *)(uVar2 + 0x1c4);\n    *(undefined4 *)(uVar2 + 0x138) = 0;\n    *(undefined4 *)(uVar2 + 0x134) = 0;\n    *(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }\n    iVar5 = *piVar9;\n    *(uint *)(uVar2 + 0x144) = uVar6 + 1;\n    uVar2 = auStack_bc[0xe];\n    if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }\n  }\n  else {\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    bVar1 = *(byte *)(uVar2 + 0x202);\n    uVar7 = *(uint *)(uVar2 + 0x1c4);\n    *(undefined4 *)(uVar2 + 0x138) = 0;\n    *(undefined4 *)(uVar2 + 0x134) = 0;\n    *(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);\n    if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }\n    iVar5 = *piVar9;\n    *(uint *)(uVar2 + 0x144) = uVar6 + 1;\n    uVar2 = auStack_bc[0xe];\n    if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }\n  }" ({ "{") (expression_statement "bVar1 = *(byte *)(uVar2 + 0x202);" (assignment_expression "bVar1 = *(byte *)(uVar2 + 0x202)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(uVar2 + 0x202)" (* "*") (cast_expression "(byte *)(uVar2 + 0x202)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x202)" (( "(") (binary_expression "uVar2 + 0x202" (identifier "uVar2") (+ "+") (number_literal "0x202")) () ")"))))) (; ";")) (expression_statement "uVar7 = *(uint *)(uVar2 + 0x1c4);" (assignment_expression "uVar7 = *(uint *)(uVar2 + 0x1c4)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x1c4)" (* "*") (cast_expression "(uint *)(uVar2 + 0x1c4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c4)" (( "(") (binary_expression "uVar2 + 0x1c4" (identifier "uVar2") (+ "+") (number_literal "0x1c4")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x138) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x138) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x138)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x138)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x138)" (( "(") (binary_expression "uVar2 + 0x138" (identifier "uVar2") (+ "+") (number_literal "0x138")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x134) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x134) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x134)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x134)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x134)" (( "(") (binary_expression "uVar2 + 0x134" (identifier "uVar2") (+ "+") (number_literal "0x134")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);" (assignment_expression "*(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4)" (pointer_expression "*(undefined4 *)(uVar2 + 0x140)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x140)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x140)" (( "(") (binary_expression "uVar2 + 0x140" (identifier "uVar2") (+ "+") (number_literal "0x140")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(uVar2 + 0x1d4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1d4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1d4)" (( "(") (binary_expression "uVar2 + 0x1d4" (identifier "uVar2") (+ "+") (number_literal "0x1d4")) () ")"))))) (; ";")) (if_statement "if (bVar1 < 8) {\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }\n    else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }" (if "if") (parenthesized_expression "(bVar1 < 8)" (( "(") (binary_expression "bVar1 < 8" (identifier "bVar1") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n      uVar6 = bVar1 * uVar7 + 7 >> 3;\n    }" ({ "{") (expression_statement "uVar6 = bVar1 * uVar7 + 7 >> 3;" (assignment_expression "uVar6 = bVar1 * uVar7 + 7 >> 3" (identifier "uVar6") (= "=") (binary_expression "bVar1 * uVar7 + 7 >> 3" (binary_expression "bVar1 * uVar7 + 7" (binary_expression "bVar1 * uVar7" (identifier "bVar1") (* "*") (identifier "uVar7")) (+ "+") (number_literal "7")) (>> ">>") (number_literal "3"))) (; ";")) (} "}")) (else_clause "else {\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }" (else "else") (compound_statement "{\n      uVar6 = (bVar1 >> 3) * uVar7;\n    }" ({ "{") (expression_statement "uVar6 = (bVar1 >> 3) * uVar7;" (assignment_expression "uVar6 = (bVar1 >> 3) * uVar7" (identifier "uVar6") (= "=") (binary_expression "(bVar1 >> 3) * uVar7" (parenthesized_expression "(bVar1 >> 3)" (( "(") (binary_expression "bVar1 >> 3" (identifier "bVar1") (>> ">>") (number_literal "3")) () ")")) (* "*") (identifier "uVar7"))) (; ";")) (} "}")))) (expression_statement "iVar5 = *piVar9;" (assignment_expression "iVar5 = *piVar9" (identifier "iVar5") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x144) = uVar6 + 1;" (assignment_expression "*(uint *)(uVar2 + 0x144) = uVar6 + 1" (pointer_expression "*(uint *)(uVar2 + 0x144)" (* "*") (cast_expression "(uint *)(uVar2 + 0x144)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x144)" (( "(") (binary_expression "uVar2 + 0x144" (identifier "uVar2") (+ "+") (number_literal "0x144")) () ")")))) (= "=") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar2 = auStack_bc[0xe];" (assignment_expression "uVar2 = auStack_bc[0xe]" (identifier "uVar2") (= "=") (subscript_expression "auStack_bc[0xe]" (identifier "auStack_bc") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (if_statement "if (auStack_bc[0xe] == iVar5) {\n      return uVar6 + 1;\n    }" (if "if") (parenthesized_expression "(auStack_bc[0xe] == iVar5)" (( "(") (binary_expression "auStack_bc[0xe] == iVar5" (subscript_expression "auStack_bc[0xe]" (identifier "auStack_bc") ([ "[") (number_literal "0xe") (] "]")) (== "==") (identifier "iVar5")) () ")")) (compound_statement "{\n      return uVar6 + 1;\n    }" ({ "{") (return_statement "return uVar6 + 1;" (return "return") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }" (else "else") (compound_statement "{\n    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;\n    (**(code **)(puVar10 + 0x22000))();\n  }" ({ "{") (expression_statement "uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;" (assignment_expression "uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08" (identifier "uVar7") (= "=") (binary_expression "*(int *)(puVar10 + 0x21c10) + 0xd08" (pointer_expression "*(int *)(puVar10 + 0x21c10)" (* "*") (cast_expression "(int *)(puVar10 + 0x21c10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x21c10)" (( "(") (binary_expression "puVar10 + 0x21c10" (identifier "puVar10") (+ "+") (number_literal "0x21c10")) () ")")))) (+ "+") (number_literal "0xd08"))) (; ";")) (expression_statement "(**(code **)(puVar10 + 0x22000))();" (call_expression "(**(code **)(puVar10 + 0x22000))()" (parenthesized_expression "(**(code **)(puVar10 + 0x22000))" (( "(") (pointer_expression "**(code **)(puVar10 + 0x22000)" (* "*") (pointer_expression "*(code **)(puVar10 + 0x22000)" (* "*") (cast_expression "(code **)(puVar10 + 0x22000)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x22000)" (( "(") (binary_expression "puVar10 + 0x22000" (identifier "puVar10") (+ "+") (number_literal "0x22000")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "pcVar11 = *(code **)(puVar10 + 0x22078);" (assignment_expression "pcVar11 = *(code **)(puVar10 + 0x22078)" (identifier "pcVar11") (= "=") (pointer_expression "*(code **)(puVar10 + 0x22078)" (* "*") (cast_expression "(code **)(puVar10 + 0x22078)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x22078)" (( "(") (binary_expression "puVar10 + 0x22078" (identifier "puVar10") (+ "+") (number_literal "0x22078")) () ")"))))) (; ";")) (expression_statement "(*pcVar11)();" (call_expression "(*pcVar11)()" (parenthesized_expression "(*pcVar11)" (( "(") (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar7 = uVar7 & 0xb;" (assignment_expression "uVar7 = uVar7 & 0xb" (identifier "uVar7") (= "=") (binary_expression "uVar7 & 0xb" (identifier "uVar7") (& "&") (number_literal "0xb"))) (; ";")) (if_statement "if (uVar7 != 0) goto LAB_000315f4;" (if "if") (parenthesized_expression "(uVar7 != 0)" (( "(") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000315f4;" (goto "goto") (statement_identifier "LAB_000315f4") (; ";"))) (if_statement "if ((*(uint *)(uVar2 + 0x124) & 0x8000) == 0) {\n    FUN_0001a110();\n    uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;\n    if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }\n  else {\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }" (if "if") (parenthesized_expression "((*(uint *)(uVar2 + 0x124) & 0x8000) == 0)" (( "(") (binary_expression "(*(uint *)(uVar2 + 0x124) & 0x8000) == 0" (parenthesized_expression "(*(uint *)(uVar2 + 0x124) & 0x8000)" (( "(") (binary_expression "*(uint *)(uVar2 + 0x124) & 0x8000" (pointer_expression "*(uint *)(uVar2 + 0x124)" (* "*") (cast_expression "(uint *)(uVar2 + 0x124)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x124)" (( "(") (binary_expression "uVar2 + 0x124" (identifier "uVar2") (+ "+") (number_literal "0x124")) () ")")))) (& "&") (number_literal "0x8000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_0001a110();\n    uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;\n    if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }" ({ "{") (expression_statement "FUN_0001a110();" (call_expression "FUN_0001a110()" (identifier "FUN_0001a110") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;" (assignment_expression "uVar7 = *(uint *)(uVar2 + 0x124) & 0xb" (identifier "uVar7") (= "=") (binary_expression "*(uint *)(uVar2 + 0x124) & 0xb" (pointer_expression "*(uint *)(uVar2 + 0x124)" (* "*") (cast_expression "(uint *)(uVar2 + 0x124)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x124)" (( "(") (binary_expression "uVar2 + 0x124" (identifier "uVar2") (+ "+") (number_literal "0x124")) () ")")))) (& "&") (number_literal "0xb"))) (; ";")) (if_statement "if (uVar7 != 0) {\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }" (if "if") (parenthesized_expression "(uVar7 != 0)" (( "(") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }\n      return uVar7;\n    }" ({ "{") (for_statement "for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {\n      }" (for "for") (( "(") (; ";") (binary_expression "(-uVar7 & uVar7) != uVar7" (parenthesized_expression "(-uVar7 & uVar7)" (( "(") (binary_expression "-uVar7 & uVar7" (unary_expression "-uVar7" (- "-") (identifier "uVar7")) (& "&") (identifier "uVar7")) () ")")) (!= "!=") (identifier "uVar7")) (; ";") (assignment_expression "uVar7 = uVar7 & uVar7 - 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 & uVar7 - 1" (identifier "uVar7") (& "&") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1")))) () ")") (compound_statement "{\n      }" ({ "{") (} "}"))) (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}"))) (expression_statement "iVar5 = *(int *)(pcVar11 + 0x21a7c);" (assignment_expression "iVar5 = *(int *)(pcVar11 + 0x21a7c)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(pcVar11 + 0x21a7c)" (* "*") (cast_expression "(int *)(pcVar11 + 0x21a7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 0x21a7c)" (( "(") (binary_expression "pcVar11 + 0x21a7c" (identifier "pcVar11") (+ "+") (number_literal "0x21a7c")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }" (else "else") (compound_statement "{\n    iVar5 = *(int *)(pcVar11 + 0x21a7c);\n  }" ({ "{") (expression_statement "iVar5 = *(int *)(pcVar11 + 0x21a7c);" (assignment_expression "iVar5 = *(int *)(pcVar11 + 0x21a7c)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(pcVar11 + 0x21a7c)" (* "*") (cast_expression "(int *)(pcVar11 + 0x21a7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 0x21a7c)" (( "(") (binary_expression "pcVar11 + 0x21a7c" (identifier "pcVar11") (+ "+") (number_literal "0x21a7c")) () ")"))))) (; ";")) (} "}")))) (expression_statement "uVar12 = (**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40);" (assignment_expression "uVar12 = (**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40)" (identifier "uVar12") (= "=") (call_expression "(**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40)" (parenthesized_expression "(**(code **)(pcVar11 + 0x21e6c))" (( "(") (pointer_expression "**(code **)(pcVar11 + 0x21e6c)" (* "*") (pointer_expression "*(code **)(pcVar11 + 0x21e6c)" (* "*") (cast_expression "(code **)(pcVar11 + 0x21e6c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar11 + 0x21e6c)" (( "(") (binary_expression "pcVar11 + 0x21e6c" (identifier "pcVar11") (+ "+") (number_literal "0x21e6c")) () ")"))))) () ")")) (argument_list "(uVar2,iVar5 + 0xe40)" (( "(") (identifier "uVar2") (, ",") (binary_expression "iVar5 + 0xe40" (identifier "iVar5") (+ "+") (number_literal "0xe40")) () ")")))) (; ";")) (do_statement "do {\n    uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;\nLAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);\n  } while ((-uVar7 & uVar7) != uVar7);" (do "do") (compound_statement "{\n    uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;\nLAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);\n  }" ({ "{") (expression_statement "uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;" (assignment_expression "uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12" (identifier "uVar7") (= "=") (binary_expression "(uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12" (call_expression "(uint)((ulonglong)uVar12 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)uVar12 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar12 >> 0x20" (cast_expression "(ulonglong)uVar12" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar12")) (>> ">>") (number_literal "0x20")) () ")"))) (& "&") (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12")))) (; ";")) (labeled_statement "LAB_000315f4:\n    uVar12 = CONCAT44(uVar7,uVar7 - 1);" (statement_identifier "LAB_000315f4") (: ":") (expression_statement "uVar12 = CONCAT44(uVar7,uVar7 - 1);" (assignment_expression "uVar12 = CONCAT44(uVar7,uVar7 - 1)" (identifier "uVar12") (= "=") (call_expression "CONCAT44(uVar7,uVar7 - 1)" (identifier "CONCAT44") (argument_list "(uVar7,uVar7 - 1)" (( "(") (identifier "uVar7") (, ",") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1")) () ")")))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "((-uVar7 & uVar7) != uVar7)" (( "(") (binary_expression "(-uVar7 & uVar7) != uVar7" (parenthesized_expression "(-uVar7 & uVar7)" (( "(") (binary_expression "-uVar7 & uVar7" (unary_expression "-uVar7" (- "-") (identifier "uVar7")) (& "&") (identifier "uVar7")) () ")")) (!= "!=") (identifier "uVar7")) () ")")) (; ";")) (return_statement "return uVar7 & 0xff;" (return "return") (binary_expression "uVar7 & 0xff" (identifier "uVar7") (& "&") (number_literal "0xff")) (; ";")) (} "}")))

void function_1(type_1 png_ptr,type_2 var_9,type_3 var_4)

{
  type_4 var_17;
  int var_13;
  type_5 var_2;
  type_3 var_11;
  int var_8;
  type_5 var_18;
  type_1 var_20;
  type_1 png_ptr_00;
  type_3 var_10;
  type_6 ppVar9;
  type_7 *puVar10;
  int *var_15;
  type_7 *var_14;
  type_8 *var_22;
  type_9 uVar14;
  type_5 auStack_bc [14];
  type_1 var_19;
  type_1 ppStack_7c;
  type_3 pStack_78;
  type_8 *pcStack_74;
  type_3 local_60;
  int local_5c;
  type_5 local_58;
  type_5 local_54;
  type_5 local_50;
  type_5 local_4c;
  type_10 var_7 [22];
  
  var_14 = PTR___stack_chk_guard_000534bc;
  var_13 = *(int *)PTR___stack_chk_guard_000534bc;
  var_1(png_ptr,var_4);
  var_2 = png_ptr->mode;
  if ((var_2 & 1) == 0) goto LAB_000313f8;
  if ((var_2 & 4) == 0) {
    if ((int)(var_2 << 0xe) < 0) {
      puVar10 = var_3 + 0xc54;
      goto LAB_000311f4;
    }
    if (var_4 != 0x1a) {
      puVar10 = var_3 + 0xc7c;
      goto LAB_000311f4;
    }
    var_5(png_ptr,var_7,0x16);
    var_6(png_ptr,0);
    var_10 = (*(type_8 *)PTR_png_get_uint_31_0005333c)(png_ptr,var_7);
    var_11 = (*(type_8 *)PTR_png_get_uint_31_0005333c)(png_ptr,var_7 + 4);
    var_4 = (*(type_8 *)PTR_png_get_uint_31_0005333c)(png_ptr,var_7 + 8);
    var_8 = (*(type_8 *)PTR_png_get_uint_31_0005333c)(png_ptr,var_7 + 0xc);
    if (png_ptr->num_frames_read == 0) {
      if (var_4 == 0 && var_8 == 0) {
        if (var_9 != (type_2)0x0) {
          if ((var_9->width == var_10) && (var_9->height == var_11)) goto LAB_00031338;
          (*(type_8 *)PTR_png_warning_00053440)(png_ptr,var_3 + 0xcd0);
        }
      }
      else {
        (*(type_8 *)PTR_png_warning_00053440)(png_ptr,var_3 + 0xca0);
      }
    }
    else if (var_9 != (type_2)0x0) {
LAB_00031338:
      local_4c = (type_5)var_7[0x15];
      local_50 = (type_5)var_7[0x14];
      local_54 = (type_5)var_7[0x12] * 0x100 + (type_5)var_7[0x13] & 0xffff;
      local_58 = (type_5)var_7[0x10] * 0x100 + (type_5)var_7[0x11] & 0xffff;
      local_60 = var_4;
      local_5c = var_8;
      (*(type_8 *)PTR_png_set_next_frame_fcTL_000532e4)(png_ptr,var_9,var_10,var_11);
      var_12(png_ptr,var_9);
      png_ptr->mode = png_ptr->mode | 0x20000;
    }
  }
  else {
    puVar10 = var_3 + 0xc34;
LAB_000311f4:
    (*(type_8 *)PTR_png_warning_00053440)(png_ptr,puVar10);
    var_6(png_ptr,var_4 - 4);
  }
  if (var_13 == *(int *)var_14) {
    return;
  }
  (*(type_8 *)PTR___stack_chk_fail_00053484)();
LAB_000313f8:
  var_22 = png_progressive_read_reset;
  png_ptr_00 = png_ptr;
  var_14 = PTR_png_error_0005340c;
  (*(type_8 *)PTR_png_error_0005340c)(png_ptr,var_3 + 0xc18);
  pStack_78 = var_4;
  ppStack_7c = png_ptr;
  pcStack_74 = var_22;
  auStack_bc[1] = 4;
  auStack_bc[7] = 8;
  auStack_bc[8] = 8;
  auStack_bc[9] = 4;
  auStack_bc[10] = 4;
  var_15 = *(int **)(var_14 + 0x220b0);
  auStack_bc[3] = 2;
  auStack_bc[5] = 1;
  auStack_bc[0xb] = 2;
  auStack_bc[0xc] = 2;
  auStack_bc[0xd] = 1;
  auStack_bc[0] = 0;
  auStack_bc[2] = 0;
  auStack_bc[4] = 0;
  auStack_bc[6] = 0;
  var_10 = png_ptr_00->height;
  var_19 = (type_1)*var_15;
  if (png_ptr_00->interlaced == '\0') {
    png_ptr_00->num_rows = var_10;
    png_ptr_00->iwidth = png_ptr_00->width;
  }
  else {
    if ((png_ptr_00->transformations & 2) == 0) {
      var_10 = var_10 + 7 >> 3;
    }
    png_ptr_00->num_rows = var_10;
    var_2 = auStack_bc[png_ptr_00->pass + 7];
    if (var_2 == 0) {
      var_16(7);
    }
    png_ptr_00->iwidth = (((png_ptr_00->width - 1) + var_2) - auStack_bc[png_ptr_00->pass]) / var_2;
  }
  var_22 = *(type_8 **)(var_14 + 0x21f00);
  png_ptr_00->flags = png_ptr_00->flags & 0xfffffff7;
  var_13 = (*var_22)(&png_ptr_00->zstream);
  if (var_13 == 0) {
    var_17 = png_ptr_00->pixel_depth;
    ppVar9 = png_ptr_00->row_buf;
    var_2 = png_ptr_00->iwidth;
    (png_ptr_00->zstream).avail_in = 0;
    (png_ptr_00->zstream).next_in = (type_11 *)0x0;
    (png_ptr_00->zstream).next_out = ppVar9;
    if (var_17 < 8) {
      var_18 = var_17 * var_2 + 7 >> 3;
    }
    else {
      var_18 = (var_17 >> 3) * var_2;
    }
    var_20 = (type_1)*var_15;
    (png_ptr_00->zstream).avail_out = var_18 + 1;
    png_ptr_00 = var_19;
    if (var_19 == var_20) {
      return;
    }
  }
  else {
    var_2 = *(int *)(var_14 + 0x21c10) + 0xd08;
    (**(type_8 **)(var_14 + 0x22000))();
  }
  var_22 = *(type_8 **)(var_14 + 0x22078);
  (*var_22)();
  var_2 = var_2 & 0xb;
  if (var_2 != 0) goto LAB_000315f4;
  if ((png_ptr_00->mode & 0x8000) == 0) {
    var_21(png_ptr_00,(png_const_charp)(*(int *)(var_22 + 0x21a7c) + 0xe6c));
    var_2 = png_ptr_00->mode & 0xb;
    if (var_2 != 0) {
      for (; (-var_2 & var_2) != var_2; var_2 = var_2 & var_2 - 1) {
      }
      return;
    }
    var_13 = *(int *)(var_22 + 0x21a7c);
  }
  else {
    var_13 = *(int *)(var_22 + 0x21a7c);
  }
  uVar14 = (**(type_8 **)(var_22 + 0x21e6c))(png_ptr_00,var_13 + 0xe40);
  do {
    var_2 = (type_5)((type_12)uVar14 >> 0x20) & (type_5)uVar14;
LAB_000315f4:
    uVar14 = var_23(var_2,var_2 - 1);
  } while ((-var_2 & var_2) != var_2);
  return;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (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)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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) (identifier))))) (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) (identifier))))) (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) (identifier))))) (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) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (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 (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (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 (identifier) (binary_expression left: (identifier) right: (number_literal))))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (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) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (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))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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))) (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))) (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))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (identifier))) right: (subscript_expression argument: (identifier) index: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (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: (identifier))) consequence: (compound_statement (return_statement (binary_expression left: (identifier) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (for_statement condition: (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (identifier))) right: (identifier)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement)) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)))))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (identifier))) right: (identifier)))) (return_statement (binary_expression left: (identifier) right: (number_literal))))))

uint MASKED(int param_1,int *param_2,int param_3)

{
  byte bVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  undefined *puVar8;
  int *piVar9;
  undefined *puVar10;
  code *pcVar11;
  undefined8 uVar12;
  uint auStack_bc [16];
  int iStack_7c;
  int iStack_78;
  code *pcStack_74;
  int local_60;
  int local_5c;
  uint local_58;
  uint local_54;
  uint local_50;
  uint local_4c;
  undefined1 auStack_3c [4];
  undefined1 auStack_38 [4];
  undefined1 auStack_34 [4];
  undefined1 auStack_30 [4];
  byte local_2c;
  byte local_2b;
  byte local_2a;
  byte local_29;
  byte local_28;
  byte local_27;
  uint local_24;
  
  puVar10 = PTR___stack_chk_guard_000534bc;
  local_24 = *(uint *)PTR___stack_chk_guard_000534bc;
  FUN_0002f4f4(param_1,param_3);
  uVar2 = *(uint *)(param_1 + 0x124);
  if ((uVar2 & 1) == 0) goto LAB_000313f8;
  if ((uVar2 & 4) == 0) {
    if ((int)(uVar2 << 0xe) < 0) {
      puVar8 = PTR_s_nt_0005301c + 0xc54;
      goto LAB_000311f4;
    }
    if (param_3 != 0x1a) {
      puVar8 = PTR_s_nt_0005301c + 0xc7c;
      goto LAB_000311f4;
    }
    FUN_0002aef8(param_1,auStack_3c,0x16);
    FUN_0002b068(param_1,0);
    iVar5 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_3c);
    iVar3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_38);
    param_3 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_34);
    iVar4 = (*(code *)PTR_png_get_uint_31_0005333c)(param_1,auStack_30);
    if (*(int *)(param_1 + 0x318) == 0) {
      if (param_3 == 0 && iVar4 == 0) {
        if (param_2 != (int *)0x0) {
          if ((*param_2 == iVar5) && (param_2[1] == iVar3)) goto LAB_00031338;
          (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xcd0);
        }
      }
      else {
        (*(code *)PTR_png_warning_00053440)(param_1,PTR_s_nt_0005301c + 0xca0);
      }
    }
    else if (param_2 != (int *)0x0) {
LAB_00031338:
      local_4c = (uint)local_27;
      local_50 = (uint)local_28;
      local_54 = (uint)local_2a * 0x100 + (uint)local_29 & 0xffff;
      local_58 = (uint)local_2c * 0x100 + (uint)local_2b & 0xffff;
      local_60 = param_3;
      local_5c = iVar4;
      (*(code *)PTR_png_set_next_frame_fcTL_000532e4)(param_1,param_2,iVar5,iVar3);
      FUN_000310c4(param_1,param_2);
      *(uint *)(param_1 + 0x124) = *(uint *)(param_1 + 0x124) | 0x20000;
    }
  }
  else {
    puVar8 = PTR_s_nt_0005301c + 0xc34;
LAB_000311f4:
    (*(code *)PTR_png_warning_00053440)(param_1,puVar8);
    FUN_0002b068(param_1,param_3 + -4);
  }
  if (local_24 == *(uint *)puVar10) {
    return *(uint *)puVar10;
  }
  (*(code *)PTR___stack_chk_fail_00053484)();
LAB_000313f8:
  pcVar11 = FUN_0003140c;
  uVar2 = param_1;
  puVar10 = PTR_png_error_0005340c;
  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xc18);
  iStack_78 = param_3;
  iStack_7c = param_1;
  pcStack_74 = pcVar11;
  auStack_bc[1] = 4;
  auStack_bc[7] = 8;
  auStack_bc[8] = 8;
  auStack_bc[9] = 4;
  auStack_bc[10] = 4;
  piVar9 = *(int **)(puVar10 + 0x220b0);
  auStack_bc[3] = 2;
  auStack_bc[5] = 1;
  auStack_bc[0xb] = 2;
  auStack_bc[0xc] = 2;
  auStack_bc[0xd] = 1;
  auStack_bc[0] = 0;
  auStack_bc[2] = 0;
  auStack_bc[4] = 0;
  auStack_bc[6] = 0;
  uVar7 = *(uint *)(uVar2 + 0x1b4);
  auStack_bc[0xe] = *piVar9;
  if (*(char *)(uVar2 + 0x1fc) == '\0') {
    *(uint *)(uVar2 + 0x1b8) = uVar7;
    *(int *)(uVar2 + 0x1c4) = *(int *)(uVar2 + 0x1b0);
  }
  else {
    if ((*(uint *)(uVar2 + 300) & 2) == 0) {
      uVar7 = uVar7 + 7 >> 3;
    }
    *(uint *)(uVar2 + 0x1b8) = uVar7;
    uVar7 = auStack_bc[*(byte *)(uVar2 + 0x1fd) + 7];
    if (uVar7 == 0) {
      trap(7);
    }
    *(uint *)(uVar2 + 0x1c4) =
         ((*(int *)(uVar2 + 0x1b0) + -1 + uVar7) - auStack_bc[*(byte *)(uVar2 + 0x1fd)]) / uVar7;
  }
  pcVar11 = *(code **)(puVar10 + 0x21f00);
  *(uint *)(uVar2 + 0x128) = *(uint *)(uVar2 + 0x128) & 0xfffffff7;
  iVar5 = (*pcVar11)(uVar2 + 0x134);
  if (iVar5 == 0) {
    bVar1 = *(byte *)(uVar2 + 0x202);
    uVar7 = *(uint *)(uVar2 + 0x1c4);
    *(undefined4 *)(uVar2 + 0x138) = 0;
    *(undefined4 *)(uVar2 + 0x134) = 0;
    *(undefined4 *)(uVar2 + 0x140) = *(undefined4 *)(uVar2 + 0x1d4);
    if (bVar1 < 8) {
      uVar6 = bVar1 * uVar7 + 7 >> 3;
    }
    else {
      uVar6 = (bVar1 >> 3) * uVar7;
    }
    iVar5 = *piVar9;
    *(uint *)(uVar2 + 0x144) = uVar6 + 1;
    uVar2 = auStack_bc[0xe];
    if (auStack_bc[0xe] == iVar5) {
      return uVar6 + 1;
    }
  }
  else {
    uVar7 = *(int *)(puVar10 + 0x21c10) + 0xd08;
    (**(code **)(puVar10 + 0x22000))();
  }
  pcVar11 = *(code **)(puVar10 + 0x22078);
  (*pcVar11)();
  uVar7 = uVar7 & 0xb;
  if (uVar7 != 0) goto LAB_000315f4;
  if ((*(uint *)(uVar2 + 0x124) & 0x8000) == 0) {
    FUN_0001a110();
    uVar7 = *(uint *)(uVar2 + 0x124) & 0xb;
    if (uVar7 != 0) {
      for (; (-uVar7 & uVar7) != uVar7; uVar7 = uVar7 & uVar7 - 1) {
      }
      return uVar7;
    }
    iVar5 = *(int *)(pcVar11 + 0x21a7c);
  }
  else {
    iVar5 = *(int *)(pcVar11 + 0x21a7c);
  }
  uVar12 = (**(code **)(pcVar11 + 0x21e6c))(uVar2,iVar5 + 0xe40);
  do {
    uVar7 = (uint)((ulonglong)uVar12 >> 0x20) & (uint)uVar12;
LAB_000315f4:
    uVar12 = CONCAT44(uVar7,uVar7 - 1);
  } while ((-uVar7 & uVar7) != uVar7);
  return uVar7 & 0xff;
}

