
void png_write_start_row(png_structrp png_ptr)

{
  undefined *puVar1;
  uint uVar2;
  png_bytep ppVar3;
  int iVar4;
  png_uint_32 pVar5;
  png_uint_32 pVar6;
  uint uVar7;
  int iVar8;
  png_byte pVar9;
  
  puVar1 = PTR_png_malloc_00053308;
  uVar2 = (uint)png_ptr->usr_channels * (uint)png_ptr->usr_bit_depth;
  if (uVar2 < 8) {
    uVar7 = png_ptr->width * uVar2 + 7 >> 3;
  }
  else {
    uVar7 = (uVar2 >> 3) * png_ptr->width;
  }
  iVar8 = uVar7 + 1;
  png_ptr->maximum_pixel_depth = (png_byte)uVar2;
  png_ptr->transformed_pixel_depth = png_ptr->pixel_depth;
  ppVar3 = (png_bytep)(*(code *)puVar1)(png_ptr,iVar8);
  pVar6 = png_ptr->height;
  uVar2 = (uint)png_ptr->do_filter;
  png_ptr->row_buf = ppVar3;
  *ppVar3 = '\0';
  if (pVar6 == 1) {
    uVar2 = uVar2 & 0x1f;
  }
  pVar5 = png_ptr->width;
  if (pVar5 == 1) {
    uVar2 = uVar2 & 0x2f;
  }
  if (uVar2 == 0) {
    png_ptr->do_filter = '\b';
    goto LAB_0003ca48;
  }
  pVar9 = (png_byte)uVar2;
  png_ptr->do_filter = pVar9;
  if (((uVar2 & 0xf0) == 0) || (png_ptr->try_row != (png_bytep)0x0)) {
LAB_0003ca24:
    if ((uVar2 & 0xe0) == 0) {
      pVar6 = png_ptr->height;
      pVar5 = png_ptr->width;
      goto LAB_0003ca48;
    }
  }
  else {
    ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);
    png_ptr->try_row = ppVar3;
    iVar4 = -((int)(uVar2 << 0x1b) >> 0x1f);
    if ((uVar2 & 0x20) != 0) {
      iVar4 = iVar4 + 1;
    }
    if ((uVar2 & 0x40) != 0) {
      iVar4 = iVar4 + 1;
      if (-1 < (char)pVar9) goto LAB_0003cb38;
LAB_0003cb10:
      ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);
      png_ptr->tst_row = ppVar3;
      goto LAB_0003ca24;
    }
    if (-1 < (char)pVar9) {
LAB_0003cb38:
      if (iVar4 < 2) goto LAB_0003ca24;
      goto LAB_0003cb10;
    }
    if (iVar4 != 0) goto LAB_0003cb10;
  }
  ppVar3 = (png_bytep)(*(code *)PTR_png_calloc_00053328)(png_ptr,iVar8);
  pVar6 = png_ptr->height;
  pVar5 = png_ptr->width;
  png_ptr->prev_row = ppVar3;
LAB_0003ca48:
  if ((png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) == 0)) {
    png_ptr->num_rows = pVar6 + 7 >> 3;
    png_ptr->usr_width = pVar5 + 7 >> 3;
    return;
  }
  png_ptr->num_rows = pVar6;
  png_ptr->usr_width = pVar5;
  return;
}



void FUN_0003c968(int param_1)

{
  undefined *puVar1;
  uint uVar2;
  undefined1 *puVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  char cVar9;
  
  puVar1 = PTR_png_malloc_00053308;
  uVar2 = (uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201);
  if (uVar2 < 8) {
    uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;
  }
  else {
    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);
  }
  iVar8 = uVar7 + 1;
  *(char *)(param_1 + 0x206) = (char)uVar2;
  *(undefined1 *)(param_1 + 0x207) = *(undefined1 *)(param_1 + 0x202);
  puVar3 = (undefined1 *)(*(code *)puVar1)(param_1,iVar8);
  iVar6 = *(int *)(param_1 + 0x1b4);
  uVar2 = (uint)*(byte *)(param_1 + 0x1fe);
  *(undefined1 **)(param_1 + 0x1d4) = puVar3;
  *puVar3 = 0;
  if (iVar6 == 1) {
    uVar2 = uVar2 & 0x1f;
  }
  iVar5 = *(int *)(param_1 + 0x1b0);
  if (iVar5 == 1) {
    uVar2 = uVar2 & 0x2f;
  }
  if (uVar2 == 0) {
    *(undefined1 *)(param_1 + 0x1fe) = 8;
    goto LAB_0003ca48;
  }
  cVar9 = (char)uVar2;
  *(char *)(param_1 + 0x1fe) = cVar9;
  if (((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0)) {
LAB_0003ca24:
    if ((uVar2 & 0xe0) == 0) {
      iVar6 = *(int *)(param_1 + 0x1b4);
      iVar5 = *(int *)(param_1 + 0x1b0);
      goto LAB_0003ca48;
    }
  }
  else {
    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);
    *(undefined4 *)(param_1 + 0x1d8) = uVar4;
    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);
    if ((uVar2 & 0x20) != 0) {
      iVar6 = iVar6 + 1;
    }
    if ((uVar2 & 0x40) != 0) {
      iVar6 = iVar6 + 1;
      if (-1 < cVar9) goto LAB_0003cb38;
LAB_0003cb10:
      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);
      *(undefined4 *)(param_1 + 0x1dc) = uVar4;
      goto LAB_0003ca24;
    }
    if (-1 < cVar9) {
LAB_0003cb38:
      if (iVar6 < 2) goto LAB_0003ca24;
      goto LAB_0003cb10;
    }
    if (iVar6 != 0) goto LAB_0003cb10;
  }
  uVar4 = (*(code *)PTR_png_calloc_00053328)(param_1,iVar8);
  iVar6 = *(int *)(param_1 + 0x1b4);
  iVar5 = *(int *)(param_1 + 0x1b0);
  *(undefined4 *)(param_1 + 0x1d0) = uVar4;
LAB_0003ca48:
  if ((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)) {
    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;
    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;
    return;
  }
  *(int *)(param_1 + 0x1b8) = iVar6;
  *(int *)(param_1 + 0x1bc) = iVar5;
  return;
}


lui gp,0x2
addiu gp,gp,-0x1978
addu gp,gp,t9
addiu sp,sp,-0x28
sw s0,0x18(sp)
or s0,a0,zero
sw gp,0x10(sp)
sw ra,0x24(sp)
sw s2,0x20(sp)
sw s1,0x1c(sp)
lbu v0,0x204(a0)
lbu a0,0x201(a0)
mul v0,v0,a0
slti a0,v0,0x8
bne a0,zero,0x0003cab4
_lw v1,0x1b0(s0)
srl s1,v0,0x3
mul s1,s1,v1
addiu s1,s1,0x1
lbu v1,0x202(s0)
or a0,s0,zero
lw t9,-0x7ce8(gp)
or a1,s1,zero
sb v0,0x206(s0)
jalr t9
_sb v1,0x207(s0)
li v1,0x1
lw a0,0x1b4(s0)
lw gp,0x10(sp)
lbu s2,0x1fe(s0)
sw v0,0x1d4(s0)
bne a0,v1,0x0003c9f0
_sb zero,0x0(v0)
andi s2,s2,0x1f
lw v1,0x1b0(s0)
li v0,0x1
bne v1,v0,0x0003ca04
_nop
andi s2,s2,0x2f
beq s2,zero,0x0003caac
_li v0,0x8
andi v0,s2,0xf0
beq v0,zero,0x0003ca24
_sb s2,0x1fe(s0)
lw v0,0x1d8(s0)
beq v0,zero,0x0003cac8
_lw t9,-0x7ce8(gp)
andi s2,s2,0xe0
beq s2,zero,0x0003cb24
_lw t9,-0x7cc8(gp)
or a0,s0,zero
jalr t9
_or a1,s1,zero
lw a0,0x1b4(s0)
lw v1,0x1b0(s0)
sw v0,0x1d0(s0)
lbu v0,0x1fc(s0)
beq v0,zero,0x0003ca90
_lw ra,0x24(sp)
lw v0,0x12c(s0)
andi v0,v0,0x2
bne v0,zero,0x0003ca94
_lw s2,0x20(sp)
addiu a0,a0,0x7
lw ra,0x24(sp)
addiu v1,v1,0x7
srl a0,a0,0x3
lw s1,0x1c(sp)
srl v1,v1,0x3
sw a0,0x1b8(s0)
sw v1,0x1bc(s0)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x28
lw s2,0x20(sp)
lw s1,0x1c(sp)
sw a0,0x1b8(s0)
sw v1,0x1bc(s0)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x28
b 0x0003ca48
_sb v0,0x1fe(s0)
mul s1,v1,v0
addiu s1,s1,0x7
srl s1,s1,0x3
b 0x0003c9b4
_addiu s1,s1,0x1
or a1,s1,zero
jalr t9
_or a0,s0,zero
andi v1,s2,0x20
lw gp,0x10(sp)
sw v0,0x1d8(s0)
beq v1,zero,0x0003caec
_ext v0,s2,0x4,0x1
addiu v0,v0,0x1
andi v1,s2,0x40
bne v1,zero,0x0003cb30
_seb v1,s2
bgez v1,0x0003cb38
_nop
beq v0,zero,0x0003ca30
_lw t9,-0x7cc8(gp)
lw t9,-0x7ce8(gp)
or a1,s1,zero
jalr t9
_or a0,s0,zero
lw gp,0x10(sp)
b 0x0003ca24
_sw v0,0x1dc(s0)
lw a0,0x1b4(s0)
b 0x0003ca48
_lw v1,0x1b0(s0)
bltz v1,0x0003cb08
_addiu v0,v0,0x1
slti v0,v0,0x2
bne v0,zero,0x0003ca24
_lw t9,-0x7ce8(gp)
b 0x0003cb10
_or a1,s1,zero
(translation_unit "void FUN_0003c968(int param_1)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined1 *puVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  char cVar9;\n  \n  puVar1 = PTR_png_malloc_00053308;\n  uVar2 = (uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201);\n  if (uVar2 < 8) {\n    uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;\n  }\n  else {\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }\n  iVar8 = uVar7 + 1;\n  *(char *)(param_1 + 0x206) = (char)uVar2;\n  *(undefined1 *)(param_1 + 0x207) = *(undefined1 *)(param_1 + 0x202);\n  puVar3 = (undefined1 *)(*(code *)puVar1)(param_1,iVar8);\n  iVar6 = *(int *)(param_1 + 0x1b4);\n  uVar2 = (uint)*(byte *)(param_1 + 0x1fe);\n  *(undefined1 **)(param_1 + 0x1d4) = puVar3;\n  *puVar3 = 0;\n  if (iVar6 == 1) {\n    uVar2 = uVar2 & 0x1f;\n  }\n  iVar5 = *(int *)(param_1 + 0x1b0);\n  if (iVar5 == 1) {\n    uVar2 = uVar2 & 0x2f;\n  }\n  if (uVar2 == 0) {\n    *(undefined1 *)(param_1 + 0x1fe) = 8;\n    goto LAB_0003ca48;\n  }\n  cVar9 = (char)uVar2;\n  *(char *)(param_1 + 0x1fe) = cVar9;\n  if (((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0)) {\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }\n  uVar4 = (*(code *)PTR_png_calloc_00053328)(param_1,iVar8);\n  iVar6 = *(int *)(param_1 + 0x1b4);\n  iVar5 = *(int *)(param_1 + 0x1b0);\n  *(undefined4 *)(param_1 + 0x1d0) = uVar4;\nLAB_0003ca48:\n  if ((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)) {\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }\n  *(int *)(param_1 + 0x1b8) = iVar6;\n  *(int *)(param_1 + 0x1bc) = iVar5;\n  return;\n}\n\n" (function_definition "void FUN_0003c968(int param_1)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined1 *puVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  char cVar9;\n  \n  puVar1 = PTR_png_malloc_00053308;\n  uVar2 = (uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201);\n  if (uVar2 < 8) {\n    uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;\n  }\n  else {\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }\n  iVar8 = uVar7 + 1;\n  *(char *)(param_1 + 0x206) = (char)uVar2;\n  *(undefined1 *)(param_1 + 0x207) = *(undefined1 *)(param_1 + 0x202);\n  puVar3 = (undefined1 *)(*(code *)puVar1)(param_1,iVar8);\n  iVar6 = *(int *)(param_1 + 0x1b4);\n  uVar2 = (uint)*(byte *)(param_1 + 0x1fe);\n  *(undefined1 **)(param_1 + 0x1d4) = puVar3;\n  *puVar3 = 0;\n  if (iVar6 == 1) {\n    uVar2 = uVar2 & 0x1f;\n  }\n  iVar5 = *(int *)(param_1 + 0x1b0);\n  if (iVar5 == 1) {\n    uVar2 = uVar2 & 0x2f;\n  }\n  if (uVar2 == 0) {\n    *(undefined1 *)(param_1 + 0x1fe) = 8;\n    goto LAB_0003ca48;\n  }\n  cVar9 = (char)uVar2;\n  *(char *)(param_1 + 0x1fe) = cVar9;\n  if (((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0)) {\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }\n  uVar4 = (*(code *)PTR_png_calloc_00053328)(param_1,iVar8);\n  iVar6 = *(int *)(param_1 + 0x1b4);\n  iVar5 = *(int *)(param_1 + 0x1b0);\n  *(undefined4 *)(param_1 + 0x1d0) = uVar4;\nLAB_0003ca48:\n  if ((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)) {\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }\n  *(int *)(param_1 + 0x1b8) = iVar6;\n  *(int *)(param_1 + 0x1bc) = iVar5;\n  return;\n}" primitive_type (function_declarator "FUN_0003c968(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined1 *puVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  char cVar9;\n  \n  puVar1 = PTR_png_malloc_00053308;\n  uVar2 = (uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201);\n  if (uVar2 < 8) {\n    uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;\n  }\n  else {\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }\n  iVar8 = uVar7 + 1;\n  *(char *)(param_1 + 0x206) = (char)uVar2;\n  *(undefined1 *)(param_1 + 0x207) = *(undefined1 *)(param_1 + 0x202);\n  puVar3 = (undefined1 *)(*(code *)puVar1)(param_1,iVar8);\n  iVar6 = *(int *)(param_1 + 0x1b4);\n  uVar2 = (uint)*(byte *)(param_1 + 0x1fe);\n  *(undefined1 **)(param_1 + 0x1d4) = puVar3;\n  *puVar3 = 0;\n  if (iVar6 == 1) {\n    uVar2 = uVar2 & 0x1f;\n  }\n  iVar5 = *(int *)(param_1 + 0x1b0);\n  if (iVar5 == 1) {\n    uVar2 = uVar2 & 0x2f;\n  }\n  if (uVar2 == 0) {\n    *(undefined1 *)(param_1 + 0x1fe) = 8;\n    goto LAB_0003ca48;\n  }\n  cVar9 = (char)uVar2;\n  *(char *)(param_1 + 0x1fe) = cVar9;\n  if (((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0)) {\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }\n  uVar4 = (*(code *)PTR_png_calloc_00053328)(param_1,iVar8);\n  iVar6 = *(int *)(param_1 + 0x1b4);\n  iVar5 = *(int *)(param_1 + 0x1b0);\n  *(undefined4 *)(param_1 + 0x1d0) = uVar4;\nLAB_0003ca48:\n  if ((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)) {\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }\n  *(int *)(param_1 + 0x1b8) = iVar6;\n  *(int *)(param_1 + 0x1bc) = iVar5;\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "char cVar9;" primitive_type identifier ;) (expression_statement "puVar1 = PTR_png_malloc_00053308;" (assignment_expression "puVar1 = PTR_png_malloc_00053308" identifier = identifier) ;) (expression_statement "uVar2 = (uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201);" (assignment_expression "uVar2 = (uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201)" identifier = (binary_expression "(uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201)" (binary_expression "(uint)*(byte *)(param_1 + 0x204) * (uint)" (binary_expression "(uint)*(byte *)(param_1 + 0x204)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 0x204)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x204)" ( (binary_expression "param_1 + 0x204" identifier + number_literal) )))) * (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(param_1 + 0x201)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x201)" ( (binary_expression "param_1 + 0x201" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 < 8) {\n    uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;\n  }\n  else {\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }" if (parenthesized_expression "(uVar2 < 8)" ( (binary_expression "uVar2 < 8" identifier < number_literal) )) (compound_statement "{\n    uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;\n  }" { (expression_statement "uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;" (assignment_expression "uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3" identifier = (binary_expression "*(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3" (binary_expression "*(int *)(param_1 + 0x1b0) * uVar2 + 7" (binary_expression "*(int *)(param_1 + 0x1b0) * uVar2" (pointer_expression "*(int *)(param_1 + 0x1b0)" * (cast_expression "(int *)(param_1 + 0x1b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b0)" ( (binary_expression "param_1 + 0x1b0" identifier + number_literal) )))) * identifier) + number_literal) >> number_literal)) ;) }) (else_clause "else {\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }" else (compound_statement "{\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }" { (expression_statement "uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);" (assignment_expression "uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0)" identifier = (binary_expression "(uVar2 >> 3) * *(int *)(param_1 + 0x1b0)" (parenthesized_expression "(uVar2 >> 3)" ( (binary_expression "uVar2 >> 3" identifier >> number_literal) )) * (pointer_expression "*(int *)(param_1 + 0x1b0)" * (cast_expression "(int *)(param_1 + 0x1b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b0)" ( (binary_expression "param_1 + 0x1b0" identifier + number_literal) )))))) ;) }))) (expression_statement "iVar8 = uVar7 + 1;" (assignment_expression "iVar8 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "*(char *)(param_1 + 0x206) = (char)uVar2;" (assignment_expression "*(char *)(param_1 + 0x206) = (char)uVar2" (pointer_expression "*(char *)(param_1 + 0x206)" * (cast_expression "(char *)(param_1 + 0x206)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x206)" ( (binary_expression "param_1 + 0x206" identifier + number_literal) )))) = (cast_expression "(char)uVar2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(undefined1 *)(param_1 + 0x207) = *(undefined1 *)(param_1 + 0x202);" (assignment_expression "*(undefined1 *)(param_1 + 0x207) = *(undefined1 *)(param_1 + 0x202)" (pointer_expression "*(undefined1 *)(param_1 + 0x207)" * (cast_expression "(undefined1 *)(param_1 + 0x207)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x207)" ( (binary_expression "param_1 + 0x207" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(param_1 + 0x202)" * (cast_expression "(undefined1 *)(param_1 + 0x202)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x202)" ( (binary_expression "param_1 + 0x202" identifier + number_literal) ))))) ;) (expression_statement "puVar3 = (undefined1 *)(*(code *)puVar1)(param_1,iVar8);" (assignment_expression "puVar3 = (undefined1 *)(*(code *)puVar1)(param_1,iVar8)" identifier = (cast_expression "(undefined1 *)(*(code *)puVar1)(param_1,iVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)puVar1)(param_1,iVar8)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,iVar8)" ( identifier , identifier ))))) ;) (expression_statement "iVar6 = *(int *)(param_1 + 0x1b4);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x1b4)" identifier = (pointer_expression "*(int *)(param_1 + 0x1b4)" * (cast_expression "(int *)(param_1 + 0x1b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = (uint)*(byte *)(param_1 + 0x1fe);" (assignment_expression "uVar2 = (uint)*(byte *)(param_1 + 0x1fe)" identifier = (binary_expression "(uint)*(byte *)(param_1 + 0x1fe)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 0x1fe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1fe)" ( (binary_expression "param_1 + 0x1fe" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(param_1 + 0x1d4) = puVar3;" (assignment_expression "*(undefined1 **)(param_1 + 0x1d4) = puVar3" (pointer_expression "*(undefined1 **)(param_1 + 0x1d4)" * (cast_expression "(undefined1 **)(param_1 + 0x1d4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1d4)" ( (binary_expression "param_1 + 0x1d4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (if_statement "if (iVar6 == 1) {\n    uVar2 = uVar2 & 0x1f;\n  }" if (parenthesized_expression "(iVar6 == 1)" ( (binary_expression "iVar6 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar2 = uVar2 & 0x1f;\n  }" { (expression_statement "uVar2 = uVar2 & 0x1f;" (assignment_expression "uVar2 = uVar2 & 0x1f" identifier = (binary_expression "uVar2 & 0x1f" identifier & number_literal)) ;) })) (expression_statement "iVar5 = *(int *)(param_1 + 0x1b0);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x1b0)" identifier = (pointer_expression "*(int *)(param_1 + 0x1b0)" * (cast_expression "(int *)(param_1 + 0x1b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b0)" ( (binary_expression "param_1 + 0x1b0" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 == 1) {\n    uVar2 = uVar2 & 0x2f;\n  }" if (parenthesized_expression "(iVar5 == 1)" ( (binary_expression "iVar5 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar2 = uVar2 & 0x2f;\n  }" { (expression_statement "uVar2 = uVar2 & 0x2f;" (assignment_expression "uVar2 = uVar2 & 0x2f" identifier = (binary_expression "uVar2 & 0x2f" identifier & number_literal)) ;) })) (if_statement "if (uVar2 == 0) {\n    *(undefined1 *)(param_1 + 0x1fe) = 8;\n    goto LAB_0003ca48;\n  }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    *(undefined1 *)(param_1 + 0x1fe) = 8;\n    goto LAB_0003ca48;\n  }" { (expression_statement "*(undefined1 *)(param_1 + 0x1fe) = 8;" (assignment_expression "*(undefined1 *)(param_1 + 0x1fe) = 8" (pointer_expression "*(undefined1 *)(param_1 + 0x1fe)" * (cast_expression "(undefined1 *)(param_1 + 0x1fe)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1fe)" ( (binary_expression "param_1 + 0x1fe" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0003ca48;" goto statement_identifier ;) })) (expression_statement "cVar9 = (char)uVar2;" (assignment_expression "cVar9 = (char)uVar2" identifier = (cast_expression "(char)uVar2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_1 + 0x1fe) = cVar9;" (assignment_expression "*(char *)(param_1 + 0x1fe) = cVar9" (pointer_expression "*(char *)(param_1 + 0x1fe)" * (cast_expression "(char *)(param_1 + 0x1fe)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1fe)" ( (binary_expression "param_1 + 0x1fe" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0)) {\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }" if (parenthesized_expression "(((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0))" ( (binary_expression "((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0)" (parenthesized_expression "((uVar2 & 0xf0) == 0)" ( (binary_expression "(uVar2 & 0xf0) == 0" (parenthesized_expression "(uVar2 & 0xf0)" ( (binary_expression "uVar2 & 0xf0" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(*(int *)(param_1 + 0x1d8) != 0)" ( (binary_expression "*(int *)(param_1 + 0x1d8) != 0" (pointer_expression "*(int *)(param_1 + 0x1d8)" * (cast_expression "(int *)(param_1 + 0x1d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d8)" ( (binary_expression "param_1 + 0x1d8" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }\n  }" { (labeled_statement "LAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }" statement_identifier : (if_statement "if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }" if (parenthesized_expression "((uVar2 & 0xe0) == 0)" ( (binary_expression "(uVar2 & 0xe0) == 0" (parenthesized_expression "(uVar2 & 0xe0)" ( (binary_expression "uVar2 & 0xe0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }" { (expression_statement "iVar6 = *(int *)(param_1 + 0x1b4);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x1b4)" identifier = (pointer_expression "*(int *)(param_1 + 0x1b4)" * (cast_expression "(int *)(param_1 + 0x1b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x1b0);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x1b0)" identifier = (pointer_expression "*(int *)(param_1 + 0x1b0)" * (cast_expression "(int *)(param_1 + 0x1b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b0)" ( (binary_expression "param_1 + 0x1b0" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0003ca48;" goto statement_identifier ;) }))) }) (else_clause "else {\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }" else (compound_statement "{\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }" { (expression_statement "uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);" (assignment_expression "uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8)" identifier = (call_expression "(*(code *)PTR_png_malloc_00053308)(param_1,iVar8)" (parenthesized_expression "(*(code *)PTR_png_malloc_00053308)" ( (pointer_expression "*(code *)PTR_png_malloc_00053308" * (cast_expression "(code *)PTR_png_malloc_00053308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,iVar8)" ( identifier , identifier )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x1d8) = uVar4;" (assignment_expression "*(undefined4 *)(param_1 + 0x1d8) = uVar4" (pointer_expression "*(undefined4 *)(param_1 + 0x1d8)" * (cast_expression "(undefined4 *)(param_1 + 0x1d8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d8)" ( (binary_expression "param_1 + 0x1d8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);" (assignment_expression "iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f)" identifier = (unary_expression "-((int)(uVar2 << 0x1b) >> 0x1f)" - (parenthesized_expression "((int)(uVar2 << 0x1b) >> 0x1f)" ( (binary_expression "(int)(uVar2 << 0x1b) >> 0x1f" (cast_expression "(int)(uVar2 << 0x1b)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 << 0x1b)" ( (binary_expression "uVar2 << 0x1b" identifier << number_literal) ))) >> number_literal) )))) ;) (if_statement "if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }" if (parenthesized_expression "((uVar2 & 0x20) != 0)" ( (binary_expression "(uVar2 & 0x20) != 0" (parenthesized_expression "(uVar2 & 0x20)" ( (binary_expression "uVar2 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      iVar6 = iVar6 + 1;\n    }" { (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) })) (if_statement "if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }" if (parenthesized_expression "((uVar2 & 0x40) != 0)" ( (binary_expression "(uVar2 & 0x40) != 0" (parenthesized_expression "(uVar2 & 0x40)" ( (binary_expression "uVar2 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }" { (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (-1 < cVar9) goto LAB_0003cb38;" if (parenthesized_expression "(-1 < cVar9)" ( (binary_expression "-1 < cVar9" number_literal < identifier) )) (goto_statement "goto LAB_0003cb38;" goto statement_identifier ;)) (labeled_statement "LAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);" statement_identifier : (expression_statement "uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);" (assignment_expression "uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8)" identifier = (call_expression "(*(code *)PTR_png_malloc_00053308)(param_1,iVar8)" (parenthesized_expression "(*(code *)PTR_png_malloc_00053308)" ( (pointer_expression "*(code *)PTR_png_malloc_00053308" * (cast_expression "(code *)PTR_png_malloc_00053308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,iVar8)" ( identifier , identifier )))) ;)) (expression_statement "*(undefined4 *)(param_1 + 0x1dc) = uVar4;" (assignment_expression "*(undefined4 *)(param_1 + 0x1dc) = uVar4" (pointer_expression "*(undefined4 *)(param_1 + 0x1dc)" * (cast_expression "(undefined4 *)(param_1 + 0x1dc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1dc)" ( (binary_expression "param_1 + 0x1dc" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0003ca24;" goto statement_identifier ;) })) (if_statement "if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }" if (parenthesized_expression "(-1 < cVar9)" ( (binary_expression "-1 < cVar9" number_literal < identifier) )) (compound_statement "{\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }" { (labeled_statement "LAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;" statement_identifier : (if_statement "if (iVar6 < 2) goto LAB_0003ca24;" if (parenthesized_expression "(iVar6 < 2)" ( (binary_expression "iVar6 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0003ca24;" goto statement_identifier ;))) (goto_statement "goto LAB_0003cb10;" goto statement_identifier ;) })) (if_statement "if (iVar6 != 0) goto LAB_0003cb10;" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003cb10;" goto statement_identifier ;)) }))) (expression_statement "uVar4 = (*(code *)PTR_png_calloc_00053328)(param_1,iVar8);" (assignment_expression "uVar4 = (*(code *)PTR_png_calloc_00053328)(param_1,iVar8)" identifier = (call_expression "(*(code *)PTR_png_calloc_00053328)(param_1,iVar8)" (parenthesized_expression "(*(code *)PTR_png_calloc_00053328)" ( (pointer_expression "*(code *)PTR_png_calloc_00053328" * (cast_expression "(code *)PTR_png_calloc_00053328" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,iVar8)" ( identifier , identifier )))) ;) (expression_statement "iVar6 = *(int *)(param_1 + 0x1b4);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x1b4)" identifier = (pointer_expression "*(int *)(param_1 + 0x1b4)" * (cast_expression "(int *)(param_1 + 0x1b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x1b0);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x1b0)" identifier = (pointer_expression "*(int *)(param_1 + 0x1b0)" * (cast_expression "(int *)(param_1 + 0x1b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b0)" ( (binary_expression "param_1 + 0x1b0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x1d0) = uVar4;" (assignment_expression "*(undefined4 *)(param_1 + 0x1d0) = uVar4" (pointer_expression "*(undefined4 *)(param_1 + 0x1d0)" * (cast_expression "(undefined4 *)(param_1 + 0x1d0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d0)" ( (binary_expression "param_1 + 0x1d0" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0003ca48:\n  if ((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)) {\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }" statement_identifier : (if_statement "if ((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)) {\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }" if (parenthesized_expression "((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0))" ( (binary_expression "(*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)" (parenthesized_expression "(*(char *)(param_1 + 0x1fc) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x1fc) != '\0'" (pointer_expression "*(char *)(param_1 + 0x1fc)" * (cast_expression "(char *)(param_1 + 0x1fc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1fc)" ( (binary_expression "param_1 + 0x1fc" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((*(uint *)(param_1 + 300) & 2) == 0)" ( (binary_expression "(*(uint *)(param_1 + 300) & 2) == 0" (parenthesized_expression "(*(uint *)(param_1 + 300) & 2)" ( (binary_expression "*(uint *)(param_1 + 300) & 2" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }" { (expression_statement "*(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;" (assignment_expression "*(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3" (pointer_expression "*(uint *)(param_1 + 0x1b8)" * (cast_expression "(uint *)(param_1 + 0x1b8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b8)" ( (binary_expression "param_1 + 0x1b8" identifier + number_literal) )))) = (binary_expression "iVar6 + 7U >> 3" (binary_expression "iVar6 + 7U" identifier + number_literal) >> number_literal)) ;) (expression_statement "*(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;" (assignment_expression "*(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3" (pointer_expression "*(uint *)(param_1 + 0x1bc)" * (cast_expression "(uint *)(param_1 + 0x1bc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1bc)" ( (binary_expression "param_1 + 0x1bc" identifier + number_literal) )))) = (binary_expression "iVar5 + 7U >> 3" (binary_expression "iVar5 + 7U" identifier + number_literal) >> number_literal)) ;) (return_statement "return;" return ;) }))) (expression_statement "*(int *)(param_1 + 0x1b8) = iVar6;" (assignment_expression "*(int *)(param_1 + 0x1b8) = iVar6" (pointer_expression "*(int *)(param_1 + 0x1b8)" * (cast_expression "(int *)(param_1 + 0x1b8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b8)" ( (binary_expression "param_1 + 0x1b8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x1bc) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x1bc) = iVar5" (pointer_expression "*(int *)(param_1 + 0x1bc)" * (cast_expression "(int *)(param_1 + 0x1bc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1bc)" ( (binary_expression "param_1 + 0x1bc" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void png_write_start_row(png_structrp png_ptr)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  png_bytep ppVar3;\n  int iVar4;\n  png_uint_32 pVar5;\n  png_uint_32 pVar6;\n  uint uVar7;\n  int iVar8;\n  png_byte pVar9;\n  \n  puVar1 = PTR_png_malloc_00053308;\n  uVar2 = (uint)png_ptr->usr_channels * (uint)png_ptr->usr_bit_depth;\n  if (uVar2 < 8) {\n    uVar7 = png_ptr->width * uVar2 + 7 >> 3;\n  }\n  else {\n    uVar7 = (uVar2 >> 3) * png_ptr->width;\n  }\n  iVar8 = uVar7 + 1;\n  png_ptr->maximum_pixel_depth = (png_byte)uVar2;\n  png_ptr->transformed_pixel_depth = png_ptr->pixel_depth;\n  ppVar3 = (png_bytep)(*(code *)puVar1)(png_ptr,iVar8);\n  pVar6 = png_ptr->height;\n  uVar2 = (uint)png_ptr->do_filter;\n  png_ptr->row_buf = ppVar3;\n  *ppVar3 = '\0';\n  if (pVar6 == 1) {\n    uVar2 = uVar2 & 0x1f;\n  }\n  pVar5 = png_ptr->width;\n  if (pVar5 == 1) {\n    uVar2 = uVar2 & 0x2f;\n  }\n  if (uVar2 == 0) {\n    png_ptr->do_filter = '\b';\n    goto LAB_0003ca48;\n  }\n  pVar9 = (png_byte)uVar2;\n  png_ptr->do_filter = pVar9;\n  if (((uVar2 & 0xf0) == 0) || (png_ptr->try_row != (png_bytep)0x0)) {\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      pVar6 = png_ptr->height;\n      pVar5 = png_ptr->width;\n      goto LAB_0003ca48;\n    }\n  }\n  else {\n    ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);\n    png_ptr->try_row = ppVar3;\n    iVar4 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar4 = iVar4 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar4 = iVar4 + 1;\n      if (-1 < (char)pVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);\n      png_ptr->tst_row = ppVar3;\n      goto LAB_0003ca24;\n    }\n    if (-1 < (char)pVar9) {\nLAB_0003cb38:\n      if (iVar4 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar4 != 0) goto LAB_0003cb10;\n  }\n  ppVar3 = (png_bytep)(*(code *)PTR_png_calloc_00053328)(png_ptr,iVar8);\n  pVar6 = png_ptr->height;\n  pVar5 = png_ptr->width;\n  png_ptr->prev_row = ppVar3;\nLAB_0003ca48:\n  if ((png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) == 0)) {\n    png_ptr->num_rows = pVar6 + 7 >> 3;\n    png_ptr->usr_width = pVar5 + 7 >> 3;\n    return;\n  }\n  png_ptr->num_rows = pVar6;\n  png_ptr->usr_width = pVar5;\n  return;\n}\n\n" (function_definition "void png_write_start_row(png_structrp png_ptr)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  png_bytep ppVar3;\n  int iVar4;\n  png_uint_32 pVar5;\n  png_uint_32 pVar6;\n  uint uVar7;\n  int iVar8;\n  png_byte pVar9;\n  \n  puVar1 = PTR_png_malloc_00053308;\n  uVar2 = (uint)png_ptr->usr_channels * (uint)png_ptr->usr_bit_depth;\n  if (uVar2 < 8) {\n    uVar7 = png_ptr->width * uVar2 + 7 >> 3;\n  }\n  else {\n    uVar7 = (uVar2 >> 3) * png_ptr->width;\n  }\n  iVar8 = uVar7 + 1;\n  png_ptr->maximum_pixel_depth = (png_byte)uVar2;\n  png_ptr->transformed_pixel_depth = png_ptr->pixel_depth;\n  ppVar3 = (png_bytep)(*(code *)puVar1)(png_ptr,iVar8);\n  pVar6 = png_ptr->height;\n  uVar2 = (uint)png_ptr->do_filter;\n  png_ptr->row_buf = ppVar3;\n  *ppVar3 = '\0';\n  if (pVar6 == 1) {\n    uVar2 = uVar2 & 0x1f;\n  }\n  pVar5 = png_ptr->width;\n  if (pVar5 == 1) {\n    uVar2 = uVar2 & 0x2f;\n  }\n  if (uVar2 == 0) {\n    png_ptr->do_filter = '\b';\n    goto LAB_0003ca48;\n  }\n  pVar9 = (png_byte)uVar2;\n  png_ptr->do_filter = pVar9;\n  if (((uVar2 & 0xf0) == 0) || (png_ptr->try_row != (png_bytep)0x0)) {\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      pVar6 = png_ptr->height;\n      pVar5 = png_ptr->width;\n      goto LAB_0003ca48;\n    }\n  }\n  else {\n    ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);\n    png_ptr->try_row = ppVar3;\n    iVar4 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar4 = iVar4 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar4 = iVar4 + 1;\n      if (-1 < (char)pVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);\n      png_ptr->tst_row = ppVar3;\n      goto LAB_0003ca24;\n    }\n    if (-1 < (char)pVar9) {\nLAB_0003cb38:\n      if (iVar4 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar4 != 0) goto LAB_0003cb10;\n  }\n  ppVar3 = (png_bytep)(*(code *)PTR_png_calloc_00053328)(png_ptr,iVar8);\n  pVar6 = png_ptr->height;\n  pVar5 = png_ptr->width;\n  png_ptr->prev_row = ppVar3;\nLAB_0003ca48:\n  if ((png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) == 0)) {\n    png_ptr->num_rows = pVar6 + 7 >> 3;\n    png_ptr->usr_width = pVar5 + 7 >> 3;\n    return;\n  }\n  png_ptr->num_rows = pVar6;\n  png_ptr->usr_width = pVar5;\n  return;\n}" primitive_type (function_declarator "png_write_start_row(png_structrp png_ptr)" identifier (parameter_list "(png_structrp png_ptr)" ( (parameter_declaration "png_structrp png_ptr" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  png_bytep ppVar3;\n  int iVar4;\n  png_uint_32 pVar5;\n  png_uint_32 pVar6;\n  uint uVar7;\n  int iVar8;\n  png_byte pVar9;\n  \n  puVar1 = PTR_png_malloc_00053308;\n  uVar2 = (uint)png_ptr->usr_channels * (uint)png_ptr->usr_bit_depth;\n  if (uVar2 < 8) {\n    uVar7 = png_ptr->width * uVar2 + 7 >> 3;\n  }\n  else {\n    uVar7 = (uVar2 >> 3) * png_ptr->width;\n  }\n  iVar8 = uVar7 + 1;\n  png_ptr->maximum_pixel_depth = (png_byte)uVar2;\n  png_ptr->transformed_pixel_depth = png_ptr->pixel_depth;\n  ppVar3 = (png_bytep)(*(code *)puVar1)(png_ptr,iVar8);\n  pVar6 = png_ptr->height;\n  uVar2 = (uint)png_ptr->do_filter;\n  png_ptr->row_buf = ppVar3;\n  *ppVar3 = '\0';\n  if (pVar6 == 1) {\n    uVar2 = uVar2 & 0x1f;\n  }\n  pVar5 = png_ptr->width;\n  if (pVar5 == 1) {\n    uVar2 = uVar2 & 0x2f;\n  }\n  if (uVar2 == 0) {\n    png_ptr->do_filter = '\b';\n    goto LAB_0003ca48;\n  }\n  pVar9 = (png_byte)uVar2;\n  png_ptr->do_filter = pVar9;\n  if (((uVar2 & 0xf0) == 0) || (png_ptr->try_row != (png_bytep)0x0)) {\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      pVar6 = png_ptr->height;\n      pVar5 = png_ptr->width;\n      goto LAB_0003ca48;\n    }\n  }\n  else {\n    ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);\n    png_ptr->try_row = ppVar3;\n    iVar4 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar4 = iVar4 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar4 = iVar4 + 1;\n      if (-1 < (char)pVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);\n      png_ptr->tst_row = ppVar3;\n      goto LAB_0003ca24;\n    }\n    if (-1 < (char)pVar9) {\nLAB_0003cb38:\n      if (iVar4 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar4 != 0) goto LAB_0003cb10;\n  }\n  ppVar3 = (png_bytep)(*(code *)PTR_png_calloc_00053328)(png_ptr,iVar8);\n  pVar6 = png_ptr->height;\n  pVar5 = png_ptr->width;\n  png_ptr->prev_row = ppVar3;\nLAB_0003ca48:\n  if ((png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) == 0)) {\n    png_ptr->num_rows = pVar6 + 7 >> 3;\n    png_ptr->usr_width = pVar5 + 7 >> 3;\n    return;\n  }\n  png_ptr->num_rows = pVar6;\n  png_ptr->usr_width = pVar5;\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "png_bytep ppVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "png_uint_32 pVar5;" type_identifier identifier ;) (declaration "png_uint_32 pVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "png_byte pVar9;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_png_malloc_00053308;" (assignment_expression "puVar1 = PTR_png_malloc_00053308" identifier = identifier) ;) (expression_statement "uVar2 = (uint)png_ptr->usr_channels * (uint)png_ptr->usr_bit_depth;" (assignment_expression "uVar2 = (uint)png_ptr->usr_channels * (uint)png_ptr->usr_bit_depth" identifier = (binary_expression "(uint)png_ptr->usr_channels * (uint)png_ptr->usr_bit_depth" (cast_expression "(uint)png_ptr->usr_channels" ( (type_descriptor "uint" type_identifier) ) (field_expression "png_ptr->usr_channels" identifier -> field_identifier)) * (cast_expression "(uint)png_ptr->usr_bit_depth" ( (type_descriptor "uint" type_identifier) ) (field_expression "png_ptr->usr_bit_depth" identifier -> field_identifier)))) ;) (if_statement "if (uVar2 < 8) {\n    uVar7 = png_ptr->width * uVar2 + 7 >> 3;\n  }\n  else {\n    uVar7 = (uVar2 >> 3) * png_ptr->width;\n  }" if (parenthesized_expression "(uVar2 < 8)" ( (binary_expression "uVar2 < 8" identifier < number_literal) )) (compound_statement "{\n    uVar7 = png_ptr->width * uVar2 + 7 >> 3;\n  }" { (expression_statement "uVar7 = png_ptr->width * uVar2 + 7 >> 3;" (assignment_expression "uVar7 = png_ptr->width * uVar2 + 7 >> 3" identifier = (binary_expression "png_ptr->width * uVar2 + 7 >> 3" (binary_expression "png_ptr->width * uVar2 + 7" (binary_expression "png_ptr->width * uVar2" (field_expression "png_ptr->width" identifier -> field_identifier) * identifier) + number_literal) >> number_literal)) ;) }) (else_clause "else {\n    uVar7 = (uVar2 >> 3) * png_ptr->width;\n  }" else (compound_statement "{\n    uVar7 = (uVar2 >> 3) * png_ptr->width;\n  }" { (expression_statement "uVar7 = (uVar2 >> 3) * png_ptr->width;" (assignment_expression "uVar7 = (uVar2 >> 3) * png_ptr->width" identifier = (binary_expression "(uVar2 >> 3) * png_ptr->width" (parenthesized_expression "(uVar2 >> 3)" ( (binary_expression "uVar2 >> 3" identifier >> number_literal) )) * (field_expression "png_ptr->width" identifier -> field_identifier))) ;) }))) (expression_statement "iVar8 = uVar7 + 1;" (assignment_expression "iVar8 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "png_ptr->maximum_pixel_depth = (png_byte)uVar2;" (assignment_expression "png_ptr->maximum_pixel_depth = (png_byte)uVar2" (field_expression "png_ptr->maximum_pixel_depth" identifier -> field_identifier) = (cast_expression "(png_byte)uVar2" ( (type_descriptor "png_byte" type_identifier) ) identifier)) ;) (expression_statement "png_ptr->transformed_pixel_depth = png_ptr->pixel_depth;" (assignment_expression "png_ptr->transformed_pixel_depth = png_ptr->pixel_depth" (field_expression "png_ptr->transformed_pixel_depth" identifier -> field_identifier) = (field_expression "png_ptr->pixel_depth" identifier -> field_identifier)) ;) (expression_statement "ppVar3 = (png_bytep)(*(code *)puVar1)(png_ptr,iVar8);" (assignment_expression "ppVar3 = (png_bytep)(*(code *)puVar1)(png_ptr,iVar8)" identifier = (call_expression "(png_bytep)(*(code *)puVar1)(png_ptr,iVar8)" (call_expression "(png_bytep)(*(code *)puVar1)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) (argument_list "(png_ptr,iVar8)" ( identifier , identifier )))) ;) (expression_statement "pVar6 = png_ptr->height;" (assignment_expression "pVar6 = png_ptr->height" identifier = (field_expression "png_ptr->height" identifier -> field_identifier)) ;) (expression_statement "uVar2 = (uint)png_ptr->do_filter;" (assignment_expression "uVar2 = (uint)png_ptr->do_filter" identifier = (cast_expression "(uint)png_ptr->do_filter" ( (type_descriptor "uint" type_identifier) ) (field_expression "png_ptr->do_filter" identifier -> field_identifier))) ;) (expression_statement "png_ptr->row_buf = ppVar3;" (assignment_expression "png_ptr->row_buf = ppVar3" (field_expression "png_ptr->row_buf" identifier -> field_identifier) = identifier) ;) (expression_statement "*ppVar3 = '\0';" (assignment_expression "*ppVar3 = '\0'" (pointer_expression "*ppVar3" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (pVar6 == 1) {\n    uVar2 = uVar2 & 0x1f;\n  }" if (parenthesized_expression "(pVar6 == 1)" ( (binary_expression "pVar6 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar2 = uVar2 & 0x1f;\n  }" { (expression_statement "uVar2 = uVar2 & 0x1f;" (assignment_expression "uVar2 = uVar2 & 0x1f" identifier = (binary_expression "uVar2 & 0x1f" identifier & number_literal)) ;) })) (expression_statement "pVar5 = png_ptr->width;" (assignment_expression "pVar5 = png_ptr->width" identifier = (field_expression "png_ptr->width" identifier -> field_identifier)) ;) (if_statement "if (pVar5 == 1) {\n    uVar2 = uVar2 & 0x2f;\n  }" if (parenthesized_expression "(pVar5 == 1)" ( (binary_expression "pVar5 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar2 = uVar2 & 0x2f;\n  }" { (expression_statement "uVar2 = uVar2 & 0x2f;" (assignment_expression "uVar2 = uVar2 & 0x2f" identifier = (binary_expression "uVar2 & 0x2f" identifier & number_literal)) ;) })) (if_statement "if (uVar2 == 0) {\n    png_ptr->do_filter = '\b';\n    goto LAB_0003ca48;\n  }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    png_ptr->do_filter = '\b';\n    goto LAB_0003ca48;\n  }" { (expression_statement "png_ptr->do_filter = '\b';" (assignment_expression "png_ptr->do_filter = '\b'" (field_expression "png_ptr->do_filter" identifier -> field_identifier) = (char_literal "'\b'" ' escape_sequence ')) ;) (goto_statement "goto LAB_0003ca48;" goto statement_identifier ;) })) (expression_statement "pVar9 = (png_byte)uVar2;" (assignment_expression "pVar9 = (png_byte)uVar2" identifier = (cast_expression "(png_byte)uVar2" ( (type_descriptor "png_byte" type_identifier) ) identifier)) ;) (expression_statement "png_ptr->do_filter = pVar9;" (assignment_expression "png_ptr->do_filter = pVar9" (field_expression "png_ptr->do_filter" identifier -> field_identifier) = identifier) ;) (if_statement "if (((uVar2 & 0xf0) == 0) || (png_ptr->try_row != (png_bytep)0x0)) {\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      pVar6 = png_ptr->height;\n      pVar5 = png_ptr->width;\n      goto LAB_0003ca48;\n    }\n  }\n  else {\n    ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);\n    png_ptr->try_row = ppVar3;\n    iVar4 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar4 = iVar4 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar4 = iVar4 + 1;\n      if (-1 < (char)pVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);\n      png_ptr->tst_row = ppVar3;\n      goto LAB_0003ca24;\n    }\n    if (-1 < (char)pVar9) {\nLAB_0003cb38:\n      if (iVar4 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar4 != 0) goto LAB_0003cb10;\n  }" if (parenthesized_expression "(((uVar2 & 0xf0) == 0) || (png_ptr->try_row != (png_bytep)0x0))" ( (binary_expression "((uVar2 & 0xf0) == 0) || (png_ptr->try_row != (png_bytep)0x0)" (parenthesized_expression "((uVar2 & 0xf0) == 0)" ( (binary_expression "(uVar2 & 0xf0) == 0" (parenthesized_expression "(uVar2 & 0xf0)" ( (binary_expression "uVar2 & 0xf0" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(png_ptr->try_row != (png_bytep)0x0)" ( (binary_expression "png_ptr->try_row != (png_bytep)0x0" (field_expression "png_ptr->try_row" identifier -> field_identifier) != (cast_expression "(png_bytep)0x0" ( (type_descriptor "png_bytep" type_identifier) ) number_literal)) ))) )) (compound_statement "{\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      pVar6 = png_ptr->height;\n      pVar5 = png_ptr->width;\n      goto LAB_0003ca48;\n    }\n  }" { (labeled_statement "LAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      pVar6 = png_ptr->height;\n      pVar5 = png_ptr->width;\n      goto LAB_0003ca48;\n    }" statement_identifier : (if_statement "if ((uVar2 & 0xe0) == 0) {\n      pVar6 = png_ptr->height;\n      pVar5 = png_ptr->width;\n      goto LAB_0003ca48;\n    }" if (parenthesized_expression "((uVar2 & 0xe0) == 0)" ( (binary_expression "(uVar2 & 0xe0) == 0" (parenthesized_expression "(uVar2 & 0xe0)" ( (binary_expression "uVar2 & 0xe0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      pVar6 = png_ptr->height;\n      pVar5 = png_ptr->width;\n      goto LAB_0003ca48;\n    }" { (expression_statement "pVar6 = png_ptr->height;" (assignment_expression "pVar6 = png_ptr->height" identifier = (field_expression "png_ptr->height" identifier -> field_identifier)) ;) (expression_statement "pVar5 = png_ptr->width;" (assignment_expression "pVar5 = png_ptr->width" identifier = (field_expression "png_ptr->width" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0003ca48;" goto statement_identifier ;) }))) }) (else_clause "else {\n    ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);\n    png_ptr->try_row = ppVar3;\n    iVar4 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar4 = iVar4 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar4 = iVar4 + 1;\n      if (-1 < (char)pVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);\n      png_ptr->tst_row = ppVar3;\n      goto LAB_0003ca24;\n    }\n    if (-1 < (char)pVar9) {\nLAB_0003cb38:\n      if (iVar4 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar4 != 0) goto LAB_0003cb10;\n  }" else (compound_statement "{\n    ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);\n    png_ptr->try_row = ppVar3;\n    iVar4 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar4 = iVar4 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar4 = iVar4 + 1;\n      if (-1 < (char)pVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);\n      png_ptr->tst_row = ppVar3;\n      goto LAB_0003ca24;\n    }\n    if (-1 < (char)pVar9) {\nLAB_0003cb38:\n      if (iVar4 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar4 != 0) goto LAB_0003cb10;\n  }" { (expression_statement "ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);" (assignment_expression "ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8)" identifier = (call_expression "(png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8)" (call_expression "(png_bytep)(*(code *)PTR_png_malloc_00053308)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "(*(code *)PTR_png_malloc_00053308)" ( (pointer_expression "*(code *)PTR_png_malloc_00053308" * (cast_expression "(code *)PTR_png_malloc_00053308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) (argument_list "(png_ptr,iVar8)" ( identifier , identifier )))) ;) (expression_statement "png_ptr->try_row = ppVar3;" (assignment_expression "png_ptr->try_row = ppVar3" (field_expression "png_ptr->try_row" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar4 = -((int)(uVar2 << 0x1b) >> 0x1f);" (assignment_expression "iVar4 = -((int)(uVar2 << 0x1b) >> 0x1f)" identifier = (unary_expression "-((int)(uVar2 << 0x1b) >> 0x1f)" - (parenthesized_expression "((int)(uVar2 << 0x1b) >> 0x1f)" ( (binary_expression "(int)(uVar2 << 0x1b) >> 0x1f" (cast_expression "(int)(uVar2 << 0x1b)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 << 0x1b)" ( (binary_expression "uVar2 << 0x1b" identifier << number_literal) ))) >> number_literal) )))) ;) (if_statement "if ((uVar2 & 0x20) != 0) {\n      iVar4 = iVar4 + 1;\n    }" if (parenthesized_expression "((uVar2 & 0x20) != 0)" ( (binary_expression "(uVar2 & 0x20) != 0" (parenthesized_expression "(uVar2 & 0x20)" ( (binary_expression "uVar2 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      iVar4 = iVar4 + 1;\n    }" { (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) })) (if_statement "if ((uVar2 & 0x40) != 0) {\n      iVar4 = iVar4 + 1;\n      if (-1 < (char)pVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);\n      png_ptr->tst_row = ppVar3;\n      goto LAB_0003ca24;\n    }" if (parenthesized_expression "((uVar2 & 0x40) != 0)" ( (binary_expression "(uVar2 & 0x40) != 0" (parenthesized_expression "(uVar2 & 0x40)" ( (binary_expression "uVar2 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      iVar4 = iVar4 + 1;\n      if (-1 < (char)pVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);\n      png_ptr->tst_row = ppVar3;\n      goto LAB_0003ca24;\n    }" { (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if (-1 < (char)pVar9) goto LAB_0003cb38;" if (parenthesized_expression "(-1 < (char)pVar9)" ( (binary_expression "-1 < (char)pVar9" number_literal < (cast_expression "(char)pVar9" ( (type_descriptor "char" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0003cb38;" goto statement_identifier ;)) (labeled_statement "LAB_0003cb10:\n      ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);" statement_identifier : (expression_statement "ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8);" (assignment_expression "ppVar3 = (png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8)" identifier = (call_expression "(png_bytep)(*(code *)PTR_png_malloc_00053308)(png_ptr,iVar8)" (call_expression "(png_bytep)(*(code *)PTR_png_malloc_00053308)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "(*(code *)PTR_png_malloc_00053308)" ( (pointer_expression "*(code *)PTR_png_malloc_00053308" * (cast_expression "(code *)PTR_png_malloc_00053308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) (argument_list "(png_ptr,iVar8)" ( identifier , identifier )))) ;)) (expression_statement "png_ptr->tst_row = ppVar3;" (assignment_expression "png_ptr->tst_row = ppVar3" (field_expression "png_ptr->tst_row" identifier -> field_identifier) = identifier) ;) (goto_statement "goto LAB_0003ca24;" goto statement_identifier ;) })) (if_statement "if (-1 < (char)pVar9) {\nLAB_0003cb38:\n      if (iVar4 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }" if (parenthesized_expression "(-1 < (char)pVar9)" ( (binary_expression "-1 < (char)pVar9" number_literal < (cast_expression "(char)pVar9" ( (type_descriptor "char" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_0003cb38:\n      if (iVar4 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }" { (labeled_statement "LAB_0003cb38:\n      if (iVar4 < 2) goto LAB_0003ca24;" statement_identifier : (if_statement "if (iVar4 < 2) goto LAB_0003ca24;" if (parenthesized_expression "(iVar4 < 2)" ( (binary_expression "iVar4 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0003ca24;" goto statement_identifier ;))) (goto_statement "goto LAB_0003cb10;" goto statement_identifier ;) })) (if_statement "if (iVar4 != 0) goto LAB_0003cb10;" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003cb10;" goto statement_identifier ;)) }))) (expression_statement "ppVar3 = (png_bytep)(*(code *)PTR_png_calloc_00053328)(png_ptr,iVar8);" (assignment_expression "ppVar3 = (png_bytep)(*(code *)PTR_png_calloc_00053328)(png_ptr,iVar8)" identifier = (call_expression "(png_bytep)(*(code *)PTR_png_calloc_00053328)(png_ptr,iVar8)" (call_expression "(png_bytep)(*(code *)PTR_png_calloc_00053328)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "(*(code *)PTR_png_calloc_00053328)" ( (pointer_expression "*(code *)PTR_png_calloc_00053328" * (cast_expression "(code *)PTR_png_calloc_00053328" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) (argument_list "(png_ptr,iVar8)" ( identifier , identifier )))) ;) (expression_statement "pVar6 = png_ptr->height;" (assignment_expression "pVar6 = png_ptr->height" identifier = (field_expression "png_ptr->height" identifier -> field_identifier)) ;) (expression_statement "pVar5 = png_ptr->width;" (assignment_expression "pVar5 = png_ptr->width" identifier = (field_expression "png_ptr->width" identifier -> field_identifier)) ;) (expression_statement "png_ptr->prev_row = ppVar3;" (assignment_expression "png_ptr->prev_row = ppVar3" (field_expression "png_ptr->prev_row" identifier -> field_identifier) = identifier) ;) (labeled_statement "LAB_0003ca48:\n  if ((png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) == 0)) {\n    png_ptr->num_rows = pVar6 + 7 >> 3;\n    png_ptr->usr_width = pVar5 + 7 >> 3;\n    return;\n  }" statement_identifier : (if_statement "if ((png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) == 0)) {\n    png_ptr->num_rows = pVar6 + 7 >> 3;\n    png_ptr->usr_width = pVar5 + 7 >> 3;\n    return;\n  }" if (parenthesized_expression "((png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) == 0))" ( (binary_expression "(png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) == 0)" (parenthesized_expression "(png_ptr->interlaced != '\0')" ( (binary_expression "png_ptr->interlaced != '\0'" (field_expression "png_ptr->interlaced" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((png_ptr->transformations & 2) == 0)" ( (binary_expression "(png_ptr->transformations & 2) == 0" (parenthesized_expression "(png_ptr->transformations & 2)" ( (binary_expression "png_ptr->transformations & 2" (field_expression "png_ptr->transformations" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    png_ptr->num_rows = pVar6 + 7 >> 3;\n    png_ptr->usr_width = pVar5 + 7 >> 3;\n    return;\n  }" { (expression_statement "png_ptr->num_rows = pVar6 + 7 >> 3;" (assignment_expression "png_ptr->num_rows = pVar6 + 7 >> 3" (field_expression "png_ptr->num_rows" identifier -> field_identifier) = (binary_expression "pVar6 + 7 >> 3" (binary_expression "pVar6 + 7" identifier + number_literal) >> number_literal)) ;) (expression_statement "png_ptr->usr_width = pVar5 + 7 >> 3;" (assignment_expression "png_ptr->usr_width = pVar5 + 7 >> 3" (field_expression "png_ptr->usr_width" identifier -> field_identifier) = (binary_expression "pVar5 + 7 >> 3" (binary_expression "pVar5 + 7" identifier + number_literal) >> number_literal)) ;) (return_statement "return;" return ;) }))) (expression_statement "png_ptr->num_rows = pVar6;" (assignment_expression "png_ptr->num_rows = pVar6" (field_expression "png_ptr->num_rows" identifier -> field_identifier) = identifier) ;) (expression_statement "png_ptr->usr_width = pVar5;" (assignment_expression "png_ptr->usr_width = pVar5" (field_expression "png_ptr->usr_width" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0003c968(int param_1)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined1 *puVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  char cVar9;\n  \n  puVar1 = PTR_png_malloc_00053308;\n  uVar2 = (uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201);\n  if (uVar2 < 8) {\n    uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;\n  }\n  else {\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }\n  iVar8 = uVar7 + 1;\n  *(char *)(param_1 + 0x206) = (char)uVar2;\n  *(undefined1 *)(param_1 + 0x207) = *(undefined1 *)(param_1 + 0x202);\n  puVar3 = (undefined1 *)(*(code *)puVar1)(param_1,iVar8);\n  iVar6 = *(int *)(param_1 + 0x1b4);\n  uVar2 = (uint)*(byte *)(param_1 + 0x1fe);\n  *(undefined1 **)(param_1 + 0x1d4) = puVar3;\n  *puVar3 = 0;\n  if (iVar6 == 1) {\n    uVar2 = uVar2 & 0x1f;\n  }\n  iVar5 = *(int *)(param_1 + 0x1b0);\n  if (iVar5 == 1) {\n    uVar2 = uVar2 & 0x2f;\n  }\n  if (uVar2 == 0) {\n    *(undefined1 *)(param_1 + 0x1fe) = 8;\n    goto LAB_0003ca48;\n  }\n  cVar9 = (char)uVar2;\n  *(char *)(param_1 + 0x1fe) = cVar9;\n  if (((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0)) {\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }\n  uVar4 = (*(code *)PTR_png_calloc_00053328)(param_1,iVar8);\n  iVar6 = *(int *)(param_1 + 0x1b4);\n  iVar5 = *(int *)(param_1 + 0x1b0);\n  *(undefined4 *)(param_1 + 0x1d0) = uVar4;\nLAB_0003ca48:\n  if ((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)) {\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }\n  *(int *)(param_1 + 0x1b8) = iVar6;\n  *(int *)(param_1 + 0x1bc) = iVar5;\n  return;\n}\n\n" (function_definition "void FUN_0003c968(int param_1)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined1 *puVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  char cVar9;\n  \n  puVar1 = PTR_png_malloc_00053308;\n  uVar2 = (uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201);\n  if (uVar2 < 8) {\n    uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;\n  }\n  else {\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }\n  iVar8 = uVar7 + 1;\n  *(char *)(param_1 + 0x206) = (char)uVar2;\n  *(undefined1 *)(param_1 + 0x207) = *(undefined1 *)(param_1 + 0x202);\n  puVar3 = (undefined1 *)(*(code *)puVar1)(param_1,iVar8);\n  iVar6 = *(int *)(param_1 + 0x1b4);\n  uVar2 = (uint)*(byte *)(param_1 + 0x1fe);\n  *(undefined1 **)(param_1 + 0x1d4) = puVar3;\n  *puVar3 = 0;\n  if (iVar6 == 1) {\n    uVar2 = uVar2 & 0x1f;\n  }\n  iVar5 = *(int *)(param_1 + 0x1b0);\n  if (iVar5 == 1) {\n    uVar2 = uVar2 & 0x2f;\n  }\n  if (uVar2 == 0) {\n    *(undefined1 *)(param_1 + 0x1fe) = 8;\n    goto LAB_0003ca48;\n  }\n  cVar9 = (char)uVar2;\n  *(char *)(param_1 + 0x1fe) = cVar9;\n  if (((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0)) {\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }\n  uVar4 = (*(code *)PTR_png_calloc_00053328)(param_1,iVar8);\n  iVar6 = *(int *)(param_1 + 0x1b4);\n  iVar5 = *(int *)(param_1 + 0x1b0);\n  *(undefined4 *)(param_1 + 0x1d0) = uVar4;\nLAB_0003ca48:\n  if ((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)) {\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }\n  *(int *)(param_1 + 0x1b8) = iVar6;\n  *(int *)(param_1 + 0x1bc) = iVar5;\n  return;\n}" primitive_type (function_declarator "FUN_0003c968(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined1 *puVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  char cVar9;\n  \n  puVar1 = PTR_png_malloc_00053308;\n  uVar2 = (uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201);\n  if (uVar2 < 8) {\n    uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;\n  }\n  else {\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }\n  iVar8 = uVar7 + 1;\n  *(char *)(param_1 + 0x206) = (char)uVar2;\n  *(undefined1 *)(param_1 + 0x207) = *(undefined1 *)(param_1 + 0x202);\n  puVar3 = (undefined1 *)(*(code *)puVar1)(param_1,iVar8);\n  iVar6 = *(int *)(param_1 + 0x1b4);\n  uVar2 = (uint)*(byte *)(param_1 + 0x1fe);\n  *(undefined1 **)(param_1 + 0x1d4) = puVar3;\n  *puVar3 = 0;\n  if (iVar6 == 1) {\n    uVar2 = uVar2 & 0x1f;\n  }\n  iVar5 = *(int *)(param_1 + 0x1b0);\n  if (iVar5 == 1) {\n    uVar2 = uVar2 & 0x2f;\n  }\n  if (uVar2 == 0) {\n    *(undefined1 *)(param_1 + 0x1fe) = 8;\n    goto LAB_0003ca48;\n  }\n  cVar9 = (char)uVar2;\n  *(char *)(param_1 + 0x1fe) = cVar9;\n  if (((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0)) {\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }\n  uVar4 = (*(code *)PTR_png_calloc_00053328)(param_1,iVar8);\n  iVar6 = *(int *)(param_1 + 0x1b4);\n  iVar5 = *(int *)(param_1 + 0x1b0);\n  *(undefined4 *)(param_1 + 0x1d0) = uVar4;\nLAB_0003ca48:\n  if ((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)) {\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }\n  *(int *)(param_1 + 0x1b8) = iVar6;\n  *(int *)(param_1 + 0x1bc) = iVar5;\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "char cVar9;" primitive_type identifier ;) (expression_statement "puVar1 = PTR_png_malloc_00053308;" (assignment_expression "puVar1 = PTR_png_malloc_00053308" identifier = identifier) ;) (expression_statement "uVar2 = (uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201);" (assignment_expression "uVar2 = (uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201)" identifier = (binary_expression "(uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201)" (binary_expression "(uint)*(byte *)(param_1 + 0x204) * (uint)" (binary_expression "(uint)*(byte *)(param_1 + 0x204)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 0x204)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x204)" ( (binary_expression "param_1 + 0x204" identifier + number_literal) )))) * (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(param_1 + 0x201)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x201)" ( (binary_expression "param_1 + 0x201" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 < 8) {\n    uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;\n  }\n  else {\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }" if (parenthesized_expression "(uVar2 < 8)" ( (binary_expression "uVar2 < 8" identifier < number_literal) )) (compound_statement "{\n    uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;\n  }" { (expression_statement "uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;" (assignment_expression "uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3" identifier = (binary_expression "*(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3" (binary_expression "*(int *)(param_1 + 0x1b0) * uVar2 + 7" (binary_expression "*(int *)(param_1 + 0x1b0) * uVar2" (pointer_expression "*(int *)(param_1 + 0x1b0)" * (cast_expression "(int *)(param_1 + 0x1b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b0)" ( (binary_expression "param_1 + 0x1b0" identifier + number_literal) )))) * identifier) + number_literal) >> number_literal)) ;) }) (else_clause "else {\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }" else (compound_statement "{\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }" { (expression_statement "uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);" (assignment_expression "uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0)" identifier = (binary_expression "(uVar2 >> 3) * *(int *)(param_1 + 0x1b0)" (parenthesized_expression "(uVar2 >> 3)" ( (binary_expression "uVar2 >> 3" identifier >> number_literal) )) * (pointer_expression "*(int *)(param_1 + 0x1b0)" * (cast_expression "(int *)(param_1 + 0x1b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b0)" ( (binary_expression "param_1 + 0x1b0" identifier + number_literal) )))))) ;) }))) (expression_statement "iVar8 = uVar7 + 1;" (assignment_expression "iVar8 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "*(char *)(param_1 + 0x206) = (char)uVar2;" (assignment_expression "*(char *)(param_1 + 0x206) = (char)uVar2" (pointer_expression "*(char *)(param_1 + 0x206)" * (cast_expression "(char *)(param_1 + 0x206)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x206)" ( (binary_expression "param_1 + 0x206" identifier + number_literal) )))) = (cast_expression "(char)uVar2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(undefined1 *)(param_1 + 0x207) = *(undefined1 *)(param_1 + 0x202);" (assignment_expression "*(undefined1 *)(param_1 + 0x207) = *(undefined1 *)(param_1 + 0x202)" (pointer_expression "*(undefined1 *)(param_1 + 0x207)" * (cast_expression "(undefined1 *)(param_1 + 0x207)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x207)" ( (binary_expression "param_1 + 0x207" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(param_1 + 0x202)" * (cast_expression "(undefined1 *)(param_1 + 0x202)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x202)" ( (binary_expression "param_1 + 0x202" identifier + number_literal) ))))) ;) (expression_statement "puVar3 = (undefined1 *)(*(code *)puVar1)(param_1,iVar8);" (assignment_expression "puVar3 = (undefined1 *)(*(code *)puVar1)(param_1,iVar8)" identifier = (cast_expression "(undefined1 *)(*(code *)puVar1)(param_1,iVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)puVar1)(param_1,iVar8)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,iVar8)" ( identifier , identifier ))))) ;) (expression_statement "iVar6 = *(int *)(param_1 + 0x1b4);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x1b4)" identifier = (pointer_expression "*(int *)(param_1 + 0x1b4)" * (cast_expression "(int *)(param_1 + 0x1b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = (uint)*(byte *)(param_1 + 0x1fe);" (assignment_expression "uVar2 = (uint)*(byte *)(param_1 + 0x1fe)" identifier = (binary_expression "(uint)*(byte *)(param_1 + 0x1fe)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 0x1fe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1fe)" ( (binary_expression "param_1 + 0x1fe" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(param_1 + 0x1d4) = puVar3;" (assignment_expression "*(undefined1 **)(param_1 + 0x1d4) = puVar3" (pointer_expression "*(undefined1 **)(param_1 + 0x1d4)" * (cast_expression "(undefined1 **)(param_1 + 0x1d4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1d4)" ( (binary_expression "param_1 + 0x1d4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (if_statement "if (iVar6 == 1) {\n    uVar2 = uVar2 & 0x1f;\n  }" if (parenthesized_expression "(iVar6 == 1)" ( (binary_expression "iVar6 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar2 = uVar2 & 0x1f;\n  }" { (expression_statement "uVar2 = uVar2 & 0x1f;" (assignment_expression "uVar2 = uVar2 & 0x1f" identifier = (binary_expression "uVar2 & 0x1f" identifier & number_literal)) ;) })) (expression_statement "iVar5 = *(int *)(param_1 + 0x1b0);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x1b0)" identifier = (pointer_expression "*(int *)(param_1 + 0x1b0)" * (cast_expression "(int *)(param_1 + 0x1b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b0)" ( (binary_expression "param_1 + 0x1b0" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 == 1) {\n    uVar2 = uVar2 & 0x2f;\n  }" if (parenthesized_expression "(iVar5 == 1)" ( (binary_expression "iVar5 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar2 = uVar2 & 0x2f;\n  }" { (expression_statement "uVar2 = uVar2 & 0x2f;" (assignment_expression "uVar2 = uVar2 & 0x2f" identifier = (binary_expression "uVar2 & 0x2f" identifier & number_literal)) ;) })) (if_statement "if (uVar2 == 0) {\n    *(undefined1 *)(param_1 + 0x1fe) = 8;\n    goto LAB_0003ca48;\n  }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    *(undefined1 *)(param_1 + 0x1fe) = 8;\n    goto LAB_0003ca48;\n  }" { (expression_statement "*(undefined1 *)(param_1 + 0x1fe) = 8;" (assignment_expression "*(undefined1 *)(param_1 + 0x1fe) = 8" (pointer_expression "*(undefined1 *)(param_1 + 0x1fe)" * (cast_expression "(undefined1 *)(param_1 + 0x1fe)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1fe)" ( (binary_expression "param_1 + 0x1fe" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0003ca48;" goto statement_identifier ;) })) (expression_statement "cVar9 = (char)uVar2;" (assignment_expression "cVar9 = (char)uVar2" identifier = (cast_expression "(char)uVar2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(param_1 + 0x1fe) = cVar9;" (assignment_expression "*(char *)(param_1 + 0x1fe) = cVar9" (pointer_expression "*(char *)(param_1 + 0x1fe)" * (cast_expression "(char *)(param_1 + 0x1fe)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1fe)" ( (binary_expression "param_1 + 0x1fe" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0)) {\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }" if (parenthesized_expression "(((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0))" ( (binary_expression "((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0)" (parenthesized_expression "((uVar2 & 0xf0) == 0)" ( (binary_expression "(uVar2 & 0xf0) == 0" (parenthesized_expression "(uVar2 & 0xf0)" ( (binary_expression "uVar2 & 0xf0" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(*(int *)(param_1 + 0x1d8) != 0)" ( (binary_expression "*(int *)(param_1 + 0x1d8) != 0" (pointer_expression "*(int *)(param_1 + 0x1d8)" * (cast_expression "(int *)(param_1 + 0x1d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d8)" ( (binary_expression "param_1 + 0x1d8" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }\n  }" { (labeled_statement "LAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }" statement_identifier : (if_statement "if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }" if (parenthesized_expression "((uVar2 & 0xe0) == 0)" ( (binary_expression "(uVar2 & 0xe0) == 0" (parenthesized_expression "(uVar2 & 0xe0)" ( (binary_expression "uVar2 & 0xe0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }" { (expression_statement "iVar6 = *(int *)(param_1 + 0x1b4);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x1b4)" identifier = (pointer_expression "*(int *)(param_1 + 0x1b4)" * (cast_expression "(int *)(param_1 + 0x1b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x1b0);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x1b0)" identifier = (pointer_expression "*(int *)(param_1 + 0x1b0)" * (cast_expression "(int *)(param_1 + 0x1b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b0)" ( (binary_expression "param_1 + 0x1b0" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0003ca48;" goto statement_identifier ;) }))) }) (else_clause "else {\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }" else (compound_statement "{\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }" { (expression_statement "uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);" (assignment_expression "uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8)" identifier = (call_expression "(*(code *)PTR_png_malloc_00053308)(param_1,iVar8)" (parenthesized_expression "(*(code *)PTR_png_malloc_00053308)" ( (pointer_expression "*(code *)PTR_png_malloc_00053308" * (cast_expression "(code *)PTR_png_malloc_00053308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,iVar8)" ( identifier , identifier )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x1d8) = uVar4;" (assignment_expression "*(undefined4 *)(param_1 + 0x1d8) = uVar4" (pointer_expression "*(undefined4 *)(param_1 + 0x1d8)" * (cast_expression "(undefined4 *)(param_1 + 0x1d8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d8)" ( (binary_expression "param_1 + 0x1d8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);" (assignment_expression "iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f)" identifier = (unary_expression "-((int)(uVar2 << 0x1b) >> 0x1f)" - (parenthesized_expression "((int)(uVar2 << 0x1b) >> 0x1f)" ( (binary_expression "(int)(uVar2 << 0x1b) >> 0x1f" (cast_expression "(int)(uVar2 << 0x1b)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 << 0x1b)" ( (binary_expression "uVar2 << 0x1b" identifier << number_literal) ))) >> number_literal) )))) ;) (if_statement "if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }" if (parenthesized_expression "((uVar2 & 0x20) != 0)" ( (binary_expression "(uVar2 & 0x20) != 0" (parenthesized_expression "(uVar2 & 0x20)" ( (binary_expression "uVar2 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      iVar6 = iVar6 + 1;\n    }" { (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) })) (if_statement "if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }" if (parenthesized_expression "((uVar2 & 0x40) != 0)" ( (binary_expression "(uVar2 & 0x40) != 0" (parenthesized_expression "(uVar2 & 0x40)" ( (binary_expression "uVar2 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }" { (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (-1 < cVar9) goto LAB_0003cb38;" if (parenthesized_expression "(-1 < cVar9)" ( (binary_expression "-1 < cVar9" number_literal < identifier) )) (goto_statement "goto LAB_0003cb38;" goto statement_identifier ;)) (labeled_statement "LAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);" statement_identifier : (expression_statement "uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);" (assignment_expression "uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8)" identifier = (call_expression "(*(code *)PTR_png_malloc_00053308)(param_1,iVar8)" (parenthesized_expression "(*(code *)PTR_png_malloc_00053308)" ( (pointer_expression "*(code *)PTR_png_malloc_00053308" * (cast_expression "(code *)PTR_png_malloc_00053308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,iVar8)" ( identifier , identifier )))) ;)) (expression_statement "*(undefined4 *)(param_1 + 0x1dc) = uVar4;" (assignment_expression "*(undefined4 *)(param_1 + 0x1dc) = uVar4" (pointer_expression "*(undefined4 *)(param_1 + 0x1dc)" * (cast_expression "(undefined4 *)(param_1 + 0x1dc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1dc)" ( (binary_expression "param_1 + 0x1dc" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0003ca24;" goto statement_identifier ;) })) (if_statement "if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }" if (parenthesized_expression "(-1 < cVar9)" ( (binary_expression "-1 < cVar9" number_literal < identifier) )) (compound_statement "{\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }" { (labeled_statement "LAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;" statement_identifier : (if_statement "if (iVar6 < 2) goto LAB_0003ca24;" if (parenthesized_expression "(iVar6 < 2)" ( (binary_expression "iVar6 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0003ca24;" goto statement_identifier ;))) (goto_statement "goto LAB_0003cb10;" goto statement_identifier ;) })) (if_statement "if (iVar6 != 0) goto LAB_0003cb10;" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003cb10;" goto statement_identifier ;)) }))) (expression_statement "uVar4 = (*(code *)PTR_png_calloc_00053328)(param_1,iVar8);" (assignment_expression "uVar4 = (*(code *)PTR_png_calloc_00053328)(param_1,iVar8)" identifier = (call_expression "(*(code *)PTR_png_calloc_00053328)(param_1,iVar8)" (parenthesized_expression "(*(code *)PTR_png_calloc_00053328)" ( (pointer_expression "*(code *)PTR_png_calloc_00053328" * (cast_expression "(code *)PTR_png_calloc_00053328" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,iVar8)" ( identifier , identifier )))) ;) (expression_statement "iVar6 = *(int *)(param_1 + 0x1b4);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x1b4)" identifier = (pointer_expression "*(int *)(param_1 + 0x1b4)" * (cast_expression "(int *)(param_1 + 0x1b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x1b0);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x1b0)" identifier = (pointer_expression "*(int *)(param_1 + 0x1b0)" * (cast_expression "(int *)(param_1 + 0x1b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b0)" ( (binary_expression "param_1 + 0x1b0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x1d0) = uVar4;" (assignment_expression "*(undefined4 *)(param_1 + 0x1d0) = uVar4" (pointer_expression "*(undefined4 *)(param_1 + 0x1d0)" * (cast_expression "(undefined4 *)(param_1 + 0x1d0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d0)" ( (binary_expression "param_1 + 0x1d0" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0003ca48:\n  if ((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)) {\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }" statement_identifier : (if_statement "if ((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)) {\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }" if (parenthesized_expression "((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0))" ( (binary_expression "(*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)" (parenthesized_expression "(*(char *)(param_1 + 0x1fc) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x1fc) != '\0'" (pointer_expression "*(char *)(param_1 + 0x1fc)" * (cast_expression "(char *)(param_1 + 0x1fc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1fc)" ( (binary_expression "param_1 + 0x1fc" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((*(uint *)(param_1 + 300) & 2) == 0)" ( (binary_expression "(*(uint *)(param_1 + 300) & 2) == 0" (parenthesized_expression "(*(uint *)(param_1 + 300) & 2)" ( (binary_expression "*(uint *)(param_1 + 300) & 2" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }" { (expression_statement "*(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;" (assignment_expression "*(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3" (pointer_expression "*(uint *)(param_1 + 0x1b8)" * (cast_expression "(uint *)(param_1 + 0x1b8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b8)" ( (binary_expression "param_1 + 0x1b8" identifier + number_literal) )))) = (binary_expression "iVar6 + 7U >> 3" (binary_expression "iVar6 + 7U" identifier + number_literal) >> number_literal)) ;) (expression_statement "*(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;" (assignment_expression "*(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3" (pointer_expression "*(uint *)(param_1 + 0x1bc)" * (cast_expression "(uint *)(param_1 + 0x1bc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1bc)" ( (binary_expression "param_1 + 0x1bc" identifier + number_literal) )))) = (binary_expression "iVar5 + 7U >> 3" (binary_expression "iVar5 + 7U" identifier + number_literal) >> number_literal)) ;) (return_statement "return;" return ;) }))) (expression_statement "*(int *)(param_1 + 0x1b8) = iVar6;" (assignment_expression "*(int *)(param_1 + 0x1b8) = iVar6" (pointer_expression "*(int *)(param_1 + 0x1b8)" * (cast_expression "(int *)(param_1 + 0x1b8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b8)" ( (binary_expression "param_1 + 0x1b8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x1bc) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x1bc) = iVar5" (pointer_expression "*(int *)(param_1 + 0x1bc)" * (cast_expression "(int *)(param_1 + 0x1bc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1bc)" ( (binary_expression "param_1 + 0x1bc" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * 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 ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * (parenthesized_expression ( IDENT ))) * (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * IDENT) + LIT) >> LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) 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) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) })) (expression_statement (assignment_expression IDENT = (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 IDENT & LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == 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) ))))) ;) (goto_statement goto statement_identifier ;) }))) }) (else_clause else (compound_statement { (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT << LIT) ))) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) (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 = (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) )))) = IDENT) ;) (labeled_statement 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) )))) != (char_literal ' escape_sequence ')) )) && (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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) )))) = (binary_expression (binary_expression IDENT + LIT) >> LIT)) ;) (return_statement return ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_0003c968(int param_1)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined1 *puVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  char cVar9;\n  \n  puVar1 = PTR_png_malloc_00053308;\n  uVar2 = (uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201);\n  if (uVar2 < 8) {\n    uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;\n  }\n  else {\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }\n  iVar8 = uVar7 + 1;\n  *(char *)(param_1 + 0x206) = (char)uVar2;\n  *(undefined1 *)(param_1 + 0x207) = *(undefined1 *)(param_1 + 0x202);\n  puVar3 = (undefined1 *)(*(code *)puVar1)(param_1,iVar8);\n  iVar6 = *(int *)(param_1 + 0x1b4);\n  uVar2 = (uint)*(byte *)(param_1 + 0x1fe);\n  *(undefined1 **)(param_1 + 0x1d4) = puVar3;\n  *puVar3 = 0;\n  if (iVar6 == 1) {\n    uVar2 = uVar2 & 0x1f;\n  }\n  iVar5 = *(int *)(param_1 + 0x1b0);\n  if (iVar5 == 1) {\n    uVar2 = uVar2 & 0x2f;\n  }\n  if (uVar2 == 0) {\n    *(undefined1 *)(param_1 + 0x1fe) = 8;\n    goto LAB_0003ca48;\n  }\n  cVar9 = (char)uVar2;\n  *(char *)(param_1 + 0x1fe) = cVar9;\n  if (((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0)) {\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }\n  uVar4 = (*(code *)PTR_png_calloc_00053328)(param_1,iVar8);\n  iVar6 = *(int *)(param_1 + 0x1b4);\n  iVar5 = *(int *)(param_1 + 0x1b0);\n  *(undefined4 *)(param_1 + 0x1d0) = uVar4;\nLAB_0003ca48:\n  if ((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)) {\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }\n  *(int *)(param_1 + 0x1b8) = iVar6;\n  *(int *)(param_1 + 0x1bc) = iVar5;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0003c968(int param_1)" (identifier "FUN_0003c968") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined1 *puVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  char cVar9;\n  \n  puVar1 = PTR_png_malloc_00053308;\n  uVar2 = (uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201);\n  if (uVar2 < 8) {\n    uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;\n  }\n  else {\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }\n  iVar8 = uVar7 + 1;\n  *(char *)(param_1 + 0x206) = (char)uVar2;\n  *(undefined1 *)(param_1 + 0x207) = *(undefined1 *)(param_1 + 0x202);\n  puVar3 = (undefined1 *)(*(code *)puVar1)(param_1,iVar8);\n  iVar6 = *(int *)(param_1 + 0x1b4);\n  uVar2 = (uint)*(byte *)(param_1 + 0x1fe);\n  *(undefined1 **)(param_1 + 0x1d4) = puVar3;\n  *puVar3 = 0;\n  if (iVar6 == 1) {\n    uVar2 = uVar2 & 0x1f;\n  }\n  iVar5 = *(int *)(param_1 + 0x1b0);\n  if (iVar5 == 1) {\n    uVar2 = uVar2 & 0x2f;\n  }\n  if (uVar2 == 0) {\n    *(undefined1 *)(param_1 + 0x1fe) = 8;\n    goto LAB_0003ca48;\n  }\n  cVar9 = (char)uVar2;\n  *(char *)(param_1 + 0x1fe) = cVar9;\n  if (((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0)) {\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }\n  uVar4 = (*(code *)PTR_png_calloc_00053328)(param_1,iVar8);\n  iVar6 = *(int *)(param_1 + 0x1b4);\n  iVar5 = *(int *)(param_1 + 0x1b0);\n  *(undefined4 *)(param_1 + 0x1d0) = uVar4;\nLAB_0003ca48:\n  if ((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)) {\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }\n  *(int *)(param_1 + 0x1b8) = iVar6;\n  *(int *)(param_1 + 0x1bc) = iVar5;\n  return;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "undefined1 *puVar3;" (type_identifier "undefined1") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "char cVar9;" (primitive_type "char") (identifier "cVar9") (; ";")) (expression_statement "puVar1 = PTR_png_malloc_00053308;" (assignment_expression "puVar1 = PTR_png_malloc_00053308" (identifier "puVar1") (= "=") (identifier "PTR_png_malloc_00053308")) (; ";")) (expression_statement "uVar2 = (uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201);" (assignment_expression "uVar2 = (uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201)" (identifier "uVar2") (= "=") (binary_expression "(uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201)" (binary_expression "(uint)*(byte *)(param_1 + 0x204) * (uint)" (binary_expression "(uint)*(byte *)(param_1 + 0x204)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_1 + 0x204)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x204)" (( "(") (binary_expression "param_1 + 0x204" (identifier "param_1") (+ "+") (number_literal "0x204")) () ")")))) (* "*") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)(param_1 + 0x201)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x201)" (( "(") (binary_expression "param_1 + 0x201" (identifier "param_1") (+ "+") (number_literal "0x201")) () ")"))))) (; ";")) (if_statement "if (uVar2 < 8) {\n    uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;\n  }\n  else {\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }" (if "if") (parenthesized_expression "(uVar2 < 8)" (( "(") (binary_expression "uVar2 < 8" (identifier "uVar2") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n    uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;\n  }" ({ "{") (expression_statement "uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;" (assignment_expression "uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3" (identifier "uVar7") (= "=") (binary_expression "*(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3" (binary_expression "*(int *)(param_1 + 0x1b0) * uVar2 + 7" (binary_expression "*(int *)(param_1 + 0x1b0) * uVar2" (pointer_expression "*(int *)(param_1 + 0x1b0)" (* "*") (cast_expression "(int *)(param_1 + 0x1b0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b0)" (( "(") (binary_expression "param_1 + 0x1b0" (identifier "param_1") (+ "+") (number_literal "0x1b0")) () ")")))) (* "*") (identifier "uVar2")) (+ "+") (number_literal "7")) (>> ">>") (number_literal "3"))) (; ";")) (} "}")) (else_clause "else {\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }" (else "else") (compound_statement "{\n    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);\n  }" ({ "{") (expression_statement "uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);" (assignment_expression "uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0)" (identifier "uVar7") (= "=") (binary_expression "(uVar2 >> 3) * *(int *)(param_1 + 0x1b0)" (parenthesized_expression "(uVar2 >> 3)" (( "(") (binary_expression "uVar2 >> 3" (identifier "uVar2") (>> ">>") (number_literal "3")) () ")")) (* "*") (pointer_expression "*(int *)(param_1 + 0x1b0)" (* "*") (cast_expression "(int *)(param_1 + 0x1b0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b0)" (( "(") (binary_expression "param_1 + 0x1b0" (identifier "param_1") (+ "+") (number_literal "0x1b0")) () ")")))))) (; ";")) (} "}")))) (expression_statement "iVar8 = uVar7 + 1;" (assignment_expression "iVar8 = uVar7 + 1" (identifier "iVar8") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(char *)(param_1 + 0x206) = (char)uVar2;" (assignment_expression "*(char *)(param_1 + 0x206) = (char)uVar2" (pointer_expression "*(char *)(param_1 + 0x206)" (* "*") (cast_expression "(char *)(param_1 + 0x206)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x206)" (( "(") (binary_expression "param_1 + 0x206" (identifier "param_1") (+ "+") (number_literal "0x206")) () ")")))) (= "=") (cast_expression "(char)uVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar2"))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x207) = *(undefined1 *)(param_1 + 0x202);" (assignment_expression "*(undefined1 *)(param_1 + 0x207) = *(undefined1 *)(param_1 + 0x202)" (pointer_expression "*(undefined1 *)(param_1 + 0x207)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x207)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x207)" (( "(") (binary_expression "param_1 + 0x207" (identifier "param_1") (+ "+") (number_literal "0x207")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(param_1 + 0x202)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x202)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x202)" (( "(") (binary_expression "param_1 + 0x202" (identifier "param_1") (+ "+") (number_literal "0x202")) () ")"))))) (; ";")) (expression_statement "puVar3 = (undefined1 *)(*(code *)puVar1)(param_1,iVar8);" (assignment_expression "puVar3 = (undefined1 *)(*(code *)puVar1)(param_1,iVar8)" (identifier "puVar3") (= "=") (cast_expression "(undefined1 *)(*(code *)puVar1)(param_1,iVar8)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)puVar1)(param_1,iVar8)" (parenthesized_expression "(*(code *)puVar1)" (( "(") (pointer_expression "*(code *)puVar1" (* "*") (cast_expression "(code *)puVar1" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) () ")")) (argument_list "(param_1,iVar8)" (( "(") (identifier "param_1") (, ",") (identifier "iVar8") () ")"))))) (; ";")) (expression_statement "iVar6 = *(int *)(param_1 + 0x1b4);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x1b4)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(param_1 + 0x1b4)" (* "*") (cast_expression "(int *)(param_1 + 0x1b4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b4)" (( "(") (binary_expression "param_1 + 0x1b4" (identifier "param_1") (+ "+") (number_literal "0x1b4")) () ")"))))) (; ";")) (expression_statement "uVar2 = (uint)*(byte *)(param_1 + 0x1fe);" (assignment_expression "uVar2 = (uint)*(byte *)(param_1 + 0x1fe)" (identifier "uVar2") (= "=") (binary_expression "(uint)*(byte *)(param_1 + 0x1fe)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_1 + 0x1fe)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1fe)" (( "(") (binary_expression "param_1 + 0x1fe" (identifier "param_1") (+ "+") (number_literal "0x1fe")) () ")"))))) (; ";")) (expression_statement "*(undefined1 **)(param_1 + 0x1d4) = puVar3;" (assignment_expression "*(undefined1 **)(param_1 + 0x1d4) = puVar3" (pointer_expression "*(undefined1 **)(param_1 + 0x1d4)" (* "*") (cast_expression "(undefined1 **)(param_1 + 0x1d4)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x1d4)" (( "(") (binary_expression "param_1 + 0x1d4" (identifier "param_1") (+ "+") (number_literal "0x1d4")) () ")")))) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar6 == 1) {\n    uVar2 = uVar2 & 0x1f;\n  }" (if "if") (parenthesized_expression "(iVar6 == 1)" (( "(") (binary_expression "iVar6 == 1" (identifier "iVar6") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    uVar2 = uVar2 & 0x1f;\n  }" ({ "{") (expression_statement "uVar2 = uVar2 & 0x1f;" (assignment_expression "uVar2 = uVar2 & 0x1f" (identifier "uVar2") (= "=") (binary_expression "uVar2 & 0x1f" (identifier "uVar2") (& "&") (number_literal "0x1f"))) (; ";")) (} "}"))) (expression_statement "iVar5 = *(int *)(param_1 + 0x1b0);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x1b0)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x1b0)" (* "*") (cast_expression "(int *)(param_1 + 0x1b0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b0)" (( "(") (binary_expression "param_1 + 0x1b0" (identifier "param_1") (+ "+") (number_literal "0x1b0")) () ")"))))) (; ";")) (if_statement "if (iVar5 == 1) {\n    uVar2 = uVar2 & 0x2f;\n  }" (if "if") (parenthesized_expression "(iVar5 == 1)" (( "(") (binary_expression "iVar5 == 1" (identifier "iVar5") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    uVar2 = uVar2 & 0x2f;\n  }" ({ "{") (expression_statement "uVar2 = uVar2 & 0x2f;" (assignment_expression "uVar2 = uVar2 & 0x2f" (identifier "uVar2") (= "=") (binary_expression "uVar2 & 0x2f" (identifier "uVar2") (& "&") (number_literal "0x2f"))) (; ";")) (} "}"))) (if_statement "if (uVar2 == 0) {\n    *(undefined1 *)(param_1 + 0x1fe) = 8;\n    goto LAB_0003ca48;\n  }" (if "if") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined1 *)(param_1 + 0x1fe) = 8;\n    goto LAB_0003ca48;\n  }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + 0x1fe) = 8;" (assignment_expression "*(undefined1 *)(param_1 + 0x1fe) = 8" (pointer_expression "*(undefined1 *)(param_1 + 0x1fe)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x1fe)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1fe)" (( "(") (binary_expression "param_1 + 0x1fe" (identifier "param_1") (+ "+") (number_literal "0x1fe")) () ")")))) (= "=") (number_literal "8")) (; ";")) (goto_statement "goto LAB_0003ca48;" (goto "goto") (statement_identifier "LAB_0003ca48") (; ";")) (} "}"))) (expression_statement "cVar9 = (char)uVar2;" (assignment_expression "cVar9 = (char)uVar2" (identifier "cVar9") (= "=") (cast_expression "(char)uVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar2"))) (; ";")) (expression_statement "*(char *)(param_1 + 0x1fe) = cVar9;" (assignment_expression "*(char *)(param_1 + 0x1fe) = cVar9" (pointer_expression "*(char *)(param_1 + 0x1fe)" (* "*") (cast_expression "(char *)(param_1 + 0x1fe)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1fe)" (( "(") (binary_expression "param_1 + 0x1fe" (identifier "param_1") (+ "+") (number_literal "0x1fe")) () ")")))) (= "=") (identifier "cVar9")) (; ";")) (if_statement "if (((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0)) {\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }" (if "if") (parenthesized_expression "(((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0))" (( "(") (binary_expression "((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0)" (parenthesized_expression "((uVar2 & 0xf0) == 0)" (( "(") (binary_expression "(uVar2 & 0xf0) == 0" (parenthesized_expression "(uVar2 & 0xf0)" (( "(") (binary_expression "uVar2 & 0xf0" (identifier "uVar2") (& "&") (number_literal "0xf0")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(param_1 + 0x1d8) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x1d8) != 0" (pointer_expression "*(int *)(param_1 + 0x1d8)" (* "*") (cast_expression "(int *)(param_1 + 0x1d8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1d8)" (( "(") (binary_expression "param_1 + 0x1d8" (identifier "param_1") (+ "+") (number_literal "0x1d8")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\nLAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }\n  }" ({ "{") (labeled_statement "LAB_0003ca24:\n    if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }" (statement_identifier "LAB_0003ca24") (: ":") (if_statement "if ((uVar2 & 0xe0) == 0) {\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }" (if "if") (parenthesized_expression "((uVar2 & 0xe0) == 0)" (( "(") (binary_expression "(uVar2 & 0xe0) == 0" (parenthesized_expression "(uVar2 & 0xe0)" (( "(") (binary_expression "uVar2 & 0xe0" (identifier "uVar2") (& "&") (number_literal "0xe0")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar6 = *(int *)(param_1 + 0x1b4);\n      iVar5 = *(int *)(param_1 + 0x1b0);\n      goto LAB_0003ca48;\n    }" ({ "{") (expression_statement "iVar6 = *(int *)(param_1 + 0x1b4);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x1b4)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(param_1 + 0x1b4)" (* "*") (cast_expression "(int *)(param_1 + 0x1b4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b4)" (( "(") (binary_expression "param_1 + 0x1b4" (identifier "param_1") (+ "+") (number_literal "0x1b4")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(param_1 + 0x1b0);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x1b0)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x1b0)" (* "*") (cast_expression "(int *)(param_1 + 0x1b0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b0)" (( "(") (binary_expression "param_1 + 0x1b0" (identifier "param_1") (+ "+") (number_literal "0x1b0")) () ")"))))) (; ";")) (goto_statement "goto LAB_0003ca48;" (goto "goto") (statement_identifier "LAB_0003ca48") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }" (else "else") (compound_statement "{\n    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n    *(undefined4 *)(param_1 + 0x1d8) = uVar4;\n    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);\n    if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }\n    if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }\n    if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }\n    if (iVar6 != 0) goto LAB_0003cb10;\n  }" ({ "{") (expression_statement "uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);" (assignment_expression "uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8)" (identifier "uVar4") (= "=") (call_expression "(*(code *)PTR_png_malloc_00053308)(param_1,iVar8)" (parenthesized_expression "(*(code *)PTR_png_malloc_00053308)" (( "(") (pointer_expression "*(code *)PTR_png_malloc_00053308" (* "*") (cast_expression "(code *)PTR_png_malloc_00053308" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_malloc_00053308"))) () ")")) (argument_list "(param_1,iVar8)" (( "(") (identifier "param_1") (, ",") (identifier "iVar8") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x1d8) = uVar4;" (assignment_expression "*(undefined4 *)(param_1 + 0x1d8) = uVar4" (pointer_expression "*(undefined4 *)(param_1 + 0x1d8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1d8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1d8)" (( "(") (binary_expression "param_1 + 0x1d8" (identifier "param_1") (+ "+") (number_literal "0x1d8")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);" (assignment_expression "iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f)" (identifier "iVar6") (= "=") (unary_expression "-((int)(uVar2 << 0x1b) >> 0x1f)" (- "-") (parenthesized_expression "((int)(uVar2 << 0x1b) >> 0x1f)" (( "(") (binary_expression "(int)(uVar2 << 0x1b) >> 0x1f" (cast_expression "(int)(uVar2 << 0x1b)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar2 << 0x1b)" (( "(") (binary_expression "uVar2 << 0x1b" (identifier "uVar2") (<< "<<") (number_literal "0x1b")) () ")"))) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if ((uVar2 & 0x20) != 0) {\n      iVar6 = iVar6 + 1;\n    }" (if "if") (parenthesized_expression "((uVar2 & 0x20) != 0)" (( "(") (binary_expression "(uVar2 & 0x20) != 0" (parenthesized_expression "(uVar2 & 0x20)" (( "(") (binary_expression "uVar2 & 0x20" (identifier "uVar2") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar6 = iVar6 + 1;\n    }" ({ "{") (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((uVar2 & 0x40) != 0) {\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }" (if "if") (parenthesized_expression "((uVar2 & 0x40) != 0)" (( "(") (binary_expression "(uVar2 & 0x40) != 0" (parenthesized_expression "(uVar2 & 0x40)" (( "(") (binary_expression "uVar2 & 0x40" (identifier "uVar2") (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar6 = iVar6 + 1;\n      if (-1 < cVar9) goto LAB_0003cb38;\nLAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);\n      *(undefined4 *)(param_1 + 0x1dc) = uVar4;\n      goto LAB_0003ca24;\n    }" ({ "{") (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (-1 < cVar9) goto LAB_0003cb38;" (if "if") (parenthesized_expression "(-1 < cVar9)" (( "(") (binary_expression "-1 < cVar9" (number_literal "-1") (< "<") (identifier "cVar9")) () ")")) (goto_statement "goto LAB_0003cb38;" (goto "goto") (statement_identifier "LAB_0003cb38") (; ";"))) (labeled_statement "LAB_0003cb10:\n      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);" (statement_identifier "LAB_0003cb10") (: ":") (expression_statement "uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);" (assignment_expression "uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8)" (identifier "uVar4") (= "=") (call_expression "(*(code *)PTR_png_malloc_00053308)(param_1,iVar8)" (parenthesized_expression "(*(code *)PTR_png_malloc_00053308)" (( "(") (pointer_expression "*(code *)PTR_png_malloc_00053308" (* "*") (cast_expression "(code *)PTR_png_malloc_00053308" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_malloc_00053308"))) () ")")) (argument_list "(param_1,iVar8)" (( "(") (identifier "param_1") (, ",") (identifier "iVar8") () ")")))) (; ";"))) (expression_statement "*(undefined4 *)(param_1 + 0x1dc) = uVar4;" (assignment_expression "*(undefined4 *)(param_1 + 0x1dc) = uVar4" (pointer_expression "*(undefined4 *)(param_1 + 0x1dc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1dc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1dc)" (( "(") (binary_expression "param_1 + 0x1dc" (identifier "param_1") (+ "+") (number_literal "0x1dc")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (goto_statement "goto LAB_0003ca24;" (goto "goto") (statement_identifier "LAB_0003ca24") (; ";")) (} "}"))) (if_statement "if (-1 < cVar9) {\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }" (if "if") (parenthesized_expression "(-1 < cVar9)" (( "(") (binary_expression "-1 < cVar9" (number_literal "-1") (< "<") (identifier "cVar9")) () ")")) (compound_statement "{\nLAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;\n      goto LAB_0003cb10;\n    }" ({ "{") (labeled_statement "LAB_0003cb38:\n      if (iVar6 < 2) goto LAB_0003ca24;" (statement_identifier "LAB_0003cb38") (: ":") (if_statement "if (iVar6 < 2) goto LAB_0003ca24;" (if "if") (parenthesized_expression "(iVar6 < 2)" (( "(") (binary_expression "iVar6 < 2" (identifier "iVar6") (< "<") (number_literal "2")) () ")")) (goto_statement "goto LAB_0003ca24;" (goto "goto") (statement_identifier "LAB_0003ca24") (; ";")))) (goto_statement "goto LAB_0003cb10;" (goto "goto") (statement_identifier "LAB_0003cb10") (; ";")) (} "}"))) (if_statement "if (iVar6 != 0) goto LAB_0003cb10;" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0003cb10;" (goto "goto") (statement_identifier "LAB_0003cb10") (; ";"))) (} "}")))) (expression_statement "uVar4 = (*(code *)PTR_png_calloc_00053328)(param_1,iVar8);" (assignment_expression "uVar4 = (*(code *)PTR_png_calloc_00053328)(param_1,iVar8)" (identifier "uVar4") (= "=") (call_expression "(*(code *)PTR_png_calloc_00053328)(param_1,iVar8)" (parenthesized_expression "(*(code *)PTR_png_calloc_00053328)" (( "(") (pointer_expression "*(code *)PTR_png_calloc_00053328" (* "*") (cast_expression "(code *)PTR_png_calloc_00053328" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_calloc_00053328"))) () ")")) (argument_list "(param_1,iVar8)" (( "(") (identifier "param_1") (, ",") (identifier "iVar8") () ")")))) (; ";")) (expression_statement "iVar6 = *(int *)(param_1 + 0x1b4);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x1b4)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(param_1 + 0x1b4)" (* "*") (cast_expression "(int *)(param_1 + 0x1b4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b4)" (( "(") (binary_expression "param_1 + 0x1b4" (identifier "param_1") (+ "+") (number_literal "0x1b4")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(param_1 + 0x1b0);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x1b0)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x1b0)" (* "*") (cast_expression "(int *)(param_1 + 0x1b0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b0)" (( "(") (binary_expression "param_1 + 0x1b0" (identifier "param_1") (+ "+") (number_literal "0x1b0")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x1d0) = uVar4;" (assignment_expression "*(undefined4 *)(param_1 + 0x1d0) = uVar4" (pointer_expression "*(undefined4 *)(param_1 + 0x1d0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1d0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1d0)" (( "(") (binary_expression "param_1 + 0x1d0" (identifier "param_1") (+ "+") (number_literal "0x1d0")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (labeled_statement "LAB_0003ca48:\n  if ((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)) {\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }" (statement_identifier "LAB_0003ca48") (: ":") (if_statement "if ((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)) {\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }" (if "if") (parenthesized_expression "((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0))" (( "(") (binary_expression "(*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)" (parenthesized_expression "(*(char *)(param_1 + 0x1fc) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x1fc) != '\0'" (pointer_expression "*(char *)(param_1 + 0x1fc)" (* "*") (cast_expression "(char *)(param_1 + 0x1fc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1fc)" (( "(") (binary_expression "param_1 + 0x1fc" (identifier "param_1") (+ "+") (number_literal "0x1fc")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "((*(uint *)(param_1 + 300) & 2) == 0)" (( "(") (binary_expression "(*(uint *)(param_1 + 300) & 2) == 0" (parenthesized_expression "(*(uint *)(param_1 + 300) & 2)" (( "(") (binary_expression "*(uint *)(param_1 + 300) & 2" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;\n    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;\n    return;\n  }" ({ "{") (expression_statement "*(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;" (assignment_expression "*(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3" (pointer_expression "*(uint *)(param_1 + 0x1b8)" (* "*") (cast_expression "(uint *)(param_1 + 0x1b8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b8)" (( "(") (binary_expression "param_1 + 0x1b8" (identifier "param_1") (+ "+") (number_literal "0x1b8")) () ")")))) (= "=") (binary_expression "iVar6 + 7U >> 3" (binary_expression "iVar6 + 7U" (identifier "iVar6") (+ "+") (number_literal "7U")) (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;" (assignment_expression "*(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3" (pointer_expression "*(uint *)(param_1 + 0x1bc)" (* "*") (cast_expression "(uint *)(param_1 + 0x1bc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1bc)" (( "(") (binary_expression "param_1 + 0x1bc" (identifier "param_1") (+ "+") (number_literal "0x1bc")) () ")")))) (= "=") (binary_expression "iVar5 + 7U >> 3" (binary_expression "iVar5 + 7U" (identifier "iVar5") (+ "+") (number_literal "7U")) (>> ">>") (number_literal "3"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "*(int *)(param_1 + 0x1b8) = iVar6;" (assignment_expression "*(int *)(param_1 + 0x1b8) = iVar6" (pointer_expression "*(int *)(param_1 + 0x1b8)" (* "*") (cast_expression "(int *)(param_1 + 0x1b8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b8)" (( "(") (binary_expression "param_1 + 0x1b8" (identifier "param_1") (+ "+") (number_literal "0x1b8")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*(int *)(param_1 + 0x1bc) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x1bc) = iVar5" (pointer_expression "*(int *)(param_1 + 0x1bc)" (* "*") (cast_expression "(int *)(param_1 + 0x1bc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1bc)" (( "(") (binary_expression "param_1 + 0x1bc" (identifier "param_1") (+ "+") (number_literal "0x1bc")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 png_ptr)

{
  type_2 *puVar1;
  type_3 var_1;
  type_4 ppVar3;
  int var_5;
  type_5 var_4;
  type_5 var_3;
  type_3 var_2;
  int iVar8;
  type_6 pVar9;
  
  puVar1 = PTR_png_malloc_00053308;
  var_1 = (type_3)png_ptr->usr_channels * (type_3)png_ptr->usr_bit_depth;
  if (var_1 < 8) {
    var_2 = png_ptr->width * var_1 + 7 >> 3;
  }
  else {
    var_2 = (var_1 >> 3) * png_ptr->width;
  }
  iVar8 = var_2 + 1;
  png_ptr->maximum_pixel_depth = (type_6)var_1;
  png_ptr->transformed_pixel_depth = png_ptr->pixel_depth;
  ppVar3 = (type_4)(*(type_7 *)puVar1)(png_ptr,iVar8);
  var_3 = png_ptr->height;
  var_1 = (type_3)png_ptr->do_filter;
  png_ptr->row_buf = ppVar3;
  *ppVar3 = '\0';
  if (var_3 == 1) {
    var_1 = var_1 & 0x1f;
  }
  var_4 = png_ptr->width;
  if (var_4 == 1) {
    var_1 = var_1 & 0x2f;
  }
  if (var_1 == 0) {
    png_ptr->do_filter = '\b';
    goto LAB_0003ca48;
  }
  pVar9 = (type_6)var_1;
  png_ptr->do_filter = pVar9;
  if (((var_1 & 0xf0) == 0) || (png_ptr->try_row != (type_4)0x0)) {
LAB_0003ca24:
    if ((var_1 & 0xe0) == 0) {
      var_3 = png_ptr->height;
      var_4 = png_ptr->width;
      goto LAB_0003ca48;
    }
  }
  else {
    ppVar3 = (type_4)(*(type_7 *)PTR_png_malloc_00053308)(png_ptr,iVar8);
    png_ptr->try_row = ppVar3;
    var_5 = -((int)(var_1 << 0x1b) >> 0x1f);
    if ((var_1 & 0x20) != 0) {
      var_5 = var_5 + 1;
    }
    if ((var_1 & 0x40) != 0) {
      var_5 = var_5 + 1;
      if (-1 < (char)pVar9) goto LAB_0003cb38;
LAB_0003cb10:
      ppVar3 = (type_4)(*(type_7 *)PTR_png_malloc_00053308)(png_ptr,iVar8);
      png_ptr->tst_row = ppVar3;
      goto LAB_0003ca24;
    }
    if (-1 < (char)pVar9) {
LAB_0003cb38:
      if (var_5 < 2) goto LAB_0003ca24;
      goto LAB_0003cb10;
    }
    if (var_5 != 0) goto LAB_0003cb10;
  }
  ppVar3 = (type_4)(*(type_7 *)PTR_png_calloc_00053328)(png_ptr,iVar8);
  var_3 = png_ptr->height;
  var_4 = png_ptr->width;
  png_ptr->prev_row = ppVar3;
LAB_0003ca48:
  if ((png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) == 0)) {
    png_ptr->num_rows = var_3 + 7 >> 3;
    png_ptr->usr_width = var_4 + 7 >> 3;
    return;
  }
  png_ptr->num_rows = var_3;
  png_ptr->usr_width = var_4;
  return;
}


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

void MASKED(int param_1)

{
  undefined *puVar1;
  uint uVar2;
  undefined1 *puVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  char cVar9;
  
  puVar1 = PTR_png_malloc_00053308;
  uVar2 = (uint)*(byte *)(param_1 + 0x204) * (uint)*(byte *)(param_1 + 0x201);
  if (uVar2 < 8) {
    uVar7 = *(int *)(param_1 + 0x1b0) * uVar2 + 7 >> 3;
  }
  else {
    uVar7 = (uVar2 >> 3) * *(int *)(param_1 + 0x1b0);
  }
  iVar8 = uVar7 + 1;
  *(char *)(param_1 + 0x206) = (char)uVar2;
  *(undefined1 *)(param_1 + 0x207) = *(undefined1 *)(param_1 + 0x202);
  puVar3 = (undefined1 *)(*(code *)puVar1)(param_1,iVar8);
  iVar6 = *(int *)(param_1 + 0x1b4);
  uVar2 = (uint)*(byte *)(param_1 + 0x1fe);
  *(undefined1 **)(param_1 + 0x1d4) = puVar3;
  *puVar3 = 0;
  if (iVar6 == 1) {
    uVar2 = uVar2 & 0x1f;
  }
  iVar5 = *(int *)(param_1 + 0x1b0);
  if (iVar5 == 1) {
    uVar2 = uVar2 & 0x2f;
  }
  if (uVar2 == 0) {
    *(undefined1 *)(param_1 + 0x1fe) = 8;
    goto LAB_0003ca48;
  }
  cVar9 = (char)uVar2;
  *(char *)(param_1 + 0x1fe) = cVar9;
  if (((uVar2 & 0xf0) == 0) || (*(int *)(param_1 + 0x1d8) != 0)) {
LAB_0003ca24:
    if ((uVar2 & 0xe0) == 0) {
      iVar6 = *(int *)(param_1 + 0x1b4);
      iVar5 = *(int *)(param_1 + 0x1b0);
      goto LAB_0003ca48;
    }
  }
  else {
    uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);
    *(undefined4 *)(param_1 + 0x1d8) = uVar4;
    iVar6 = -((int)(uVar2 << 0x1b) >> 0x1f);
    if ((uVar2 & 0x20) != 0) {
      iVar6 = iVar6 + 1;
    }
    if ((uVar2 & 0x40) != 0) {
      iVar6 = iVar6 + 1;
      if (-1 < cVar9) goto LAB_0003cb38;
LAB_0003cb10:
      uVar4 = (*(code *)PTR_png_malloc_00053308)(param_1,iVar8);
      *(undefined4 *)(param_1 + 0x1dc) = uVar4;
      goto LAB_0003ca24;
    }
    if (-1 < cVar9) {
LAB_0003cb38:
      if (iVar6 < 2) goto LAB_0003ca24;
      goto LAB_0003cb10;
    }
    if (iVar6 != 0) goto LAB_0003cb10;
  }
  uVar4 = (*(code *)PTR_png_calloc_00053328)(param_1,iVar8);
  iVar6 = *(int *)(param_1 + 0x1b4);
  iVar5 = *(int *)(param_1 + 0x1b0);
  *(undefined4 *)(param_1 + 0x1d0) = uVar4;
LAB_0003ca48:
  if ((*(char *)(param_1 + 0x1fc) != '\0') && ((*(uint *)(param_1 + 300) & 2) == 0)) {
    *(uint *)(param_1 + 0x1b8) = iVar6 + 7U >> 3;
    *(uint *)(param_1 + 0x1bc) = iVar5 + 7U >> 3;
    return;
  }
  *(int *)(param_1 + 0x1b8) = iVar6;
  *(int *)(param_1 + 0x1bc) = iVar5;
  return;
}

