
void png_destroy_gamma_table(png_structrp png_ptr)

{
  undefined *puVar1;
  png_uint_16pp pppVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  (*(code *)PTR_png_free_00053324)(png_ptr,png_ptr->gamma_table);
  pppVar2 = png_ptr->gamma_16_table;
  png_ptr->gamma_table = (png_bytep)0x0;
  if (pppVar2 != (png_uint_16pp)0x0) {
    iVar4 = 1 << (8U - png_ptr->gamma_shift & 0x1f);
    if (0 < iVar4) {
      iVar5 = 0;
      do {
        iVar3 = iVar5 + 1;
        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);
        pppVar2 = png_ptr->gamma_16_table;
        iVar5 = iVar3;
      } while (iVar4 != iVar3);
    }
    (*(code *)PTR_png_free_00053324)(png_ptr);
    png_ptr->gamma_16_table = (png_uint_16pp)0x0;
  }
  (*(code *)PTR_png_free_00053324)(png_ptr,png_ptr->gamma_from_1);
  puVar1 = PTR_png_free_00053324;
  png_ptr->gamma_from_1 = (png_bytep)0x0;
  (*(code *)puVar1)(png_ptr,png_ptr->gamma_to_1);
  pppVar2 = png_ptr->gamma_16_from_1;
  png_ptr->gamma_to_1 = (png_bytep)0x0;
  if (pppVar2 != (png_uint_16pp)0x0) {
    iVar4 = 1 << (8U - png_ptr->gamma_shift & 0x1f);
    if (0 < iVar4) {
      iVar5 = 0;
      do {
        iVar3 = iVar5 + 1;
        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);
        pppVar2 = png_ptr->gamma_16_from_1;
        iVar5 = iVar3;
      } while (iVar4 != iVar3);
    }
    (*(code *)PTR_png_free_00053324)(png_ptr);
    png_ptr->gamma_16_from_1 = (png_uint_16pp)0x0;
  }
  pppVar2 = png_ptr->gamma_16_to_1;
  if (pppVar2 != (png_uint_16pp)0x0) {
    iVar5 = 1 << (8U - png_ptr->gamma_shift & 0x1f);
    iVar4 = 0;
    if (0 < iVar5) {
      do {
        iVar3 = iVar4 + 1;
        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar4]);
        pppVar2 = png_ptr->gamma_16_to_1;
        iVar4 = iVar3;
      } while (iVar5 != iVar3);
    }
    (*(code *)PTR_png_free_00053324)(png_ptr);
    png_ptr->gamma_16_to_1 = (png_uint_16pp)0x0;
  }
  return;
}



void FUN_00018e04(int param_1)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x23c));
  iVar3 = *(int *)(param_1 + 0x240);
  *(undefined4 *)(param_1 + 0x23c) = 0;
  if (iVar3 != 0) {
    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);
    if (0 < iVar5) {
      iVar4 = 0;
      do {
        iVar2 = iVar4 * 4;
        iVar4 = iVar4 + 1;
        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));
        iVar3 = *(int *)(param_1 + 0x240);
      } while (iVar5 != iVar4);
    }
    (*(code *)PTR_png_free_00053324)(param_1);
    *(undefined4 *)(param_1 + 0x240) = 0;
  }
  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x244));
  puVar1 = PTR_png_free_00053324;
  *(undefined4 *)(param_1 + 0x244) = 0;
  (*(code *)puVar1)(param_1,*(undefined4 *)(param_1 + 0x248));
  iVar3 = *(int *)(param_1 + 0x24c);
  *(undefined4 *)(param_1 + 0x248) = 0;
  if (iVar3 != 0) {
    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);
    if (0 < iVar5) {
      iVar4 = 0;
      do {
        iVar2 = iVar4 * 4;
        iVar4 = iVar4 + 1;
        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));
        iVar3 = *(int *)(param_1 + 0x24c);
      } while (iVar5 != iVar4);
    }
    (*(code *)PTR_png_free_00053324)(param_1);
    *(undefined4 *)(param_1 + 0x24c) = 0;
  }
  iVar3 = *(int *)(param_1 + 0x250);
  if (iVar3 != 0) {
    iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);
    iVar5 = 0;
    if (0 < iVar4) {
      do {
        iVar2 = iVar5 * 4;
        iVar5 = iVar5 + 1;
        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));
        iVar3 = *(int *)(param_1 + 0x250);
      } while (iVar4 != iVar5);
    }
    (*(code *)PTR_png_free_00053324)(param_1);
    *(undefined4 *)(param_1 + 0x250) = 0;
  }
  return;
}


lui gp,0x4
addiu gp,gp,0x21ec
addu gp,gp,t9
addiu sp,sp,-0x28
lw t9,-0x7ccc(gp)
lw a1,0x23c(a0)
sw s0,0x18(sp)
or s0,a0,zero
sw gp,0x10(sp)
sw ra,0x24(sp)
sw s2,0x20(sp)
jalr t9
_sw s1,0x1c(sp)
lw a1,0x240(s0)
lw gp,0x10(sp)
beq a1,zero,0x00018ea4
_sw zero,0x23c(s0)
lw v0,0x234(s0)
li s2,0x8
subu v0,s2,v0
li s2,0x1
sllv s2,s2,v0
blez s2,0x00018e94
_lw t9,-0x7ccc(gp)
or s1,zero,zero
sll v0,s1,0x2
lw t9,-0x7ccc(gp)
addiu s1,s1,0x1
addu a1,a1,v0
or a0,s0,zero
jalr t9
_lw a1,0x0(a1)
lw gp,0x10(sp)
bne s2,s1,0x00018e68
_lw a1,0x240(s0)
lw t9,-0x7ccc(gp)
jalr t9
_or a0,s0,zero
lw gp,0x10(sp)
sw zero,0x240(s0)
lw t9,-0x7ccc(gp)
or a0,s0,zero
jalr t9
_lw a1,0x244(s0)
or a0,s0,zero
lw gp,0x10(sp)
lw a1,0x248(s0)
lw t9,-0x7ccc(gp)
jalr t9
_sw zero,0x244(s0)
lw a1,0x24c(s0)
lw gp,0x10(sp)
beq a1,zero,0x00018f38
_sw zero,0x248(s0)
lw v0,0x234(s0)
li s2,0x8
subu v0,s2,v0
li s2,0x1
sllv s2,s2,v0
blez s2,0x00018f28
_lw t9,-0x7ccc(gp)
or s1,zero,zero
sll v0,s1,0x2
lw t9,-0x7ccc(gp)
addiu s1,s1,0x1
addu a1,a1,v0
or a0,s0,zero
jalr t9
_lw a1,0x0(a1)
lw gp,0x10(sp)
bne s2,s1,0x00018efc
_lw a1,0x24c(s0)
lw t9,-0x7ccc(gp)
jalr t9
_or a0,s0,zero
lw gp,0x10(sp)
sw zero,0x24c(s0)
lw a1,0x250(s0)
beq a1,zero,0x00018f94
_li s2,0x8
lw v0,0x234(s0)
subu v0,s2,v0
li s2,0x1
sllv s2,s2,v0
blez s2,0x00018f84
_or s1,zero,zero
sll v0,s1,0x2
lw t9,-0x7ccc(gp)
addiu s1,s1,0x1
addu a1,a1,v0
or a0,s0,zero
jalr t9
_lw a1,0x0(a1)
lw gp,0x10(sp)
bne s2,s1,0x00018f5c
_lw a1,0x250(s0)
lw t9,-0x7ccc(gp)
jalr t9
_or a0,s0,zero
sw zero,0x250(s0)
lw ra,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x28
(translation_unit "void FUN_00018e04(int param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x23c));\n  iVar3 = *(int *)(param_1 + 0x240);\n  *(undefined4 *)(param_1 + 0x23c) = 0;\n  if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x240) = 0;\n  }\n  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x244));\n  puVar1 = PTR_png_free_00053324;\n  *(undefined4 *)(param_1 + 0x244) = 0;\n  (*(code *)puVar1)(param_1,*(undefined4 *)(param_1 + 0x248));\n  iVar3 = *(int *)(param_1 + 0x24c);\n  *(undefined4 *)(param_1 + 0x248) = 0;\n  if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x24c) = 0;\n  }\n  iVar3 = *(int *)(param_1 + 0x250);\n  if (iVar3 != 0) {\n    iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    iVar5 = 0;\n    if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x250) = 0;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00018e04(int param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x23c));\n  iVar3 = *(int *)(param_1 + 0x240);\n  *(undefined4 *)(param_1 + 0x23c) = 0;\n  if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x240) = 0;\n  }\n  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x244));\n  puVar1 = PTR_png_free_00053324;\n  *(undefined4 *)(param_1 + 0x244) = 0;\n  (*(code *)puVar1)(param_1,*(undefined4 *)(param_1 + 0x248));\n  iVar3 = *(int *)(param_1 + 0x24c);\n  *(undefined4 *)(param_1 + 0x248) = 0;\n  if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x24c) = 0;\n  }\n  iVar3 = *(int *)(param_1 + 0x250);\n  if (iVar3 != 0) {\n    iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    iVar5 = 0;\n    if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x250) = 0;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00018e04(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x23c));\n  iVar3 = *(int *)(param_1 + 0x240);\n  *(undefined4 *)(param_1 + 0x23c) = 0;\n  if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x240) = 0;\n  }\n  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x244));\n  puVar1 = PTR_png_free_00053324;\n  *(undefined4 *)(param_1 + 0x244) = 0;\n  (*(code *)puVar1)(param_1,*(undefined4 *)(param_1 + 0x248));\n  iVar3 = *(int *)(param_1 + 0x24c);\n  *(undefined4 *)(param_1 + 0x248) = 0;\n  if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x24c) = 0;\n  }\n  iVar3 = *(int *)(param_1 + 0x250);\n  if (iVar3 != 0) {\n    iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    iVar5 = 0;\n    if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x250) = 0;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x23c));" (call_expression "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x23c))" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,*(undefined4 *)(param_1 + 0x23c))" ( identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x23c)" * (cast_expression "(undefined4 *)(param_1 + 0x23c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x23c)" ( (binary_expression "param_1 + 0x23c" identifier + number_literal) )))) ))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x240);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x240)" identifier = (pointer_expression "*(int *)(param_1 + 0x240)" * (cast_expression "(int *)(param_1 + 0x240)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x23c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x23c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x23c)" * (cast_expression "(undefined4 *)(param_1 + 0x23c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x23c)" ( (binary_expression "param_1 + 0x23c" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x240) = 0;\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x240) = 0;\n  }" { (expression_statement "iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);" (assignment_expression "iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" identifier = (binary_expression "1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" number_literal << (parenthesized_expression "(8U - *(int *)(param_1 + 0x234) & 0x1f)" ( (binary_expression "8U - *(int *)(param_1 + 0x234) & 0x1f" (binary_expression "8U - *(int *)(param_1 + 0x234)" number_literal - (pointer_expression "*(int *)(param_1 + 0x234)" * (cast_expression "(int *)(param_1 + 0x234)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x234)" ( (binary_expression "param_1 + 0x234" identifier + number_literal) ))))) & number_literal) )))) ;) (if_statement "if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (compound_statement "{\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);" do (compound_statement "{\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      }" { (expression_statement "iVar2 = iVar4 * 4;" (assignment_expression "iVar2 = iVar4 * 4" identifier = (binary_expression "iVar4 * 4" identifier * number_literal)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));" (call_expression "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2))" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,*(undefined4 *)(iVar3 + iVar2))" ( identifier , (pointer_expression "*(undefined4 *)(iVar3 + iVar2)" * (cast_expression "(undefined4 *)(iVar3 + iVar2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar2)" ( (binary_expression "iVar3 + iVar2" identifier + identifier) )))) ))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x240);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x240)" identifier = (pointer_expression "*(int *)(param_1 + 0x240)" * (cast_expression "(int *)(param_1 + 0x240)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar5 != iVar4)" ( (binary_expression "iVar5 != iVar4" identifier != identifier) )) ;) })) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1);" (call_expression "(*(code *)PTR_png_free_00053324)(param_1)" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x240) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x240) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x240)" * (cast_expression "(undefined4 *)(param_1 + 0x240)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x244));" (call_expression "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x244))" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,*(undefined4 *)(param_1 + 0x244))" ( identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x244)" * (cast_expression "(undefined4 *)(param_1 + 0x244)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x244)" ( (binary_expression "param_1 + 0x244" identifier + number_literal) )))) ))) ;) (expression_statement "puVar1 = PTR_png_free_00053324;" (assignment_expression "puVar1 = PTR_png_free_00053324" identifier = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x244) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x244) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x244)" * (cast_expression "(undefined4 *)(param_1 + 0x244)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x244)" ( (binary_expression "param_1 + 0x244" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*(code *)puVar1)(param_1,*(undefined4 *)(param_1 + 0x248));" (call_expression "(*(code *)puVar1)(param_1,*(undefined4 *)(param_1 + 0x248))" (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,*(undefined4 *)(param_1 + 0x248))" ( identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x248)" * (cast_expression "(undefined4 *)(param_1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) ))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x24c);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x24c)" identifier = (pointer_expression "*(int *)(param_1 + 0x24c)" * (cast_expression "(int *)(param_1 + 0x24c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24c)" ( (binary_expression "param_1 + 0x24c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x248) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x248) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x248)" * (cast_expression "(undefined4 *)(param_1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x24c) = 0;\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x24c) = 0;\n  }" { (expression_statement "iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);" (assignment_expression "iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" identifier = (binary_expression "1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" number_literal << (parenthesized_expression "(8U - *(int *)(param_1 + 0x234) & 0x1f)" ( (binary_expression "8U - *(int *)(param_1 + 0x234) & 0x1f" (binary_expression "8U - *(int *)(param_1 + 0x234)" number_literal - (pointer_expression "*(int *)(param_1 + 0x234)" * (cast_expression "(int *)(param_1 + 0x234)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x234)" ( (binary_expression "param_1 + 0x234" identifier + number_literal) ))))) & number_literal) )))) ;) (if_statement "if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (compound_statement "{\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);" do (compound_statement "{\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      }" { (expression_statement "iVar2 = iVar4 * 4;" (assignment_expression "iVar2 = iVar4 * 4" identifier = (binary_expression "iVar4 * 4" identifier * number_literal)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));" (call_expression "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2))" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,*(undefined4 *)(iVar3 + iVar2))" ( identifier , (pointer_expression "*(undefined4 *)(iVar3 + iVar2)" * (cast_expression "(undefined4 *)(iVar3 + iVar2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar2)" ( (binary_expression "iVar3 + iVar2" identifier + identifier) )))) ))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x24c);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x24c)" identifier = (pointer_expression "*(int *)(param_1 + 0x24c)" * (cast_expression "(int *)(param_1 + 0x24c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24c)" ( (binary_expression "param_1 + 0x24c" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar5 != iVar4)" ( (binary_expression "iVar5 != iVar4" identifier != identifier) )) ;) })) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1);" (call_expression "(*(code *)PTR_png_free_00053324)(param_1)" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x24c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x24c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x24c)" * (cast_expression "(undefined4 *)(param_1 + 0x24c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24c)" ( (binary_expression "param_1 + 0x24c" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "iVar3 = *(int *)(param_1 + 0x250);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x250)" identifier = (pointer_expression "*(int *)(param_1 + 0x250)" * (cast_expression "(int *)(param_1 + 0x250)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0) {\n    iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    iVar5 = 0;\n    if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x250) = 0;\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    iVar5 = 0;\n    if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x250) = 0;\n  }" { (expression_statement "iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);" (assignment_expression "iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" identifier = (binary_expression "1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" number_literal << (parenthesized_expression "(8U - *(int *)(param_1 + 0x234) & 0x1f)" ( (binary_expression "8U - *(int *)(param_1 + 0x234) & 0x1f" (binary_expression "8U - *(int *)(param_1 + 0x234)" number_literal - (pointer_expression "*(int *)(param_1 + 0x234)" * (cast_expression "(int *)(param_1 + 0x234)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x234)" ( (binary_expression "param_1 + 0x234" identifier + number_literal) ))))) & number_literal) )))) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }" { (do_statement "do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);" do (compound_statement "{\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      }" { (expression_statement "iVar2 = iVar5 * 4;" (assignment_expression "iVar2 = iVar5 * 4" identifier = (binary_expression "iVar5 * 4" identifier * number_literal)) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));" (call_expression "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2))" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,*(undefined4 *)(iVar3 + iVar2))" ( identifier , (pointer_expression "*(undefined4 *)(iVar3 + iVar2)" * (cast_expression "(undefined4 *)(iVar3 + iVar2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar2)" ( (binary_expression "iVar3 + iVar2" identifier + identifier) )))) ))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x250);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x250)" identifier = (pointer_expression "*(int *)(param_1 + 0x250)" * (cast_expression "(int *)(param_1 + 0x250)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar4 != iVar5)" ( (binary_expression "iVar4 != iVar5" identifier != identifier) )) ;) })) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1);" (call_expression "(*(code *)PTR_png_free_00053324)(param_1)" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x250) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x250) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x250)" * (cast_expression "(undefined4 *)(param_1 + 0x250)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) )))) = number_literal) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void png_destroy_gamma_table(png_structrp png_ptr)\n\n{\n  undefined *puVar1;\n  png_uint_16pp pppVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  (*(code *)PTR_png_free_00053324)(png_ptr,png_ptr->gamma_table);\n  pppVar2 = png_ptr->gamma_16_table;\n  png_ptr->gamma_table = (png_bytep)0x0;\n  if (pppVar2 != (png_uint_16pp)0x0) {\n    iVar4 = 1 << (8U - png_ptr->gamma_shift & 0x1f);\n    if (0 < iVar4) {\n      iVar5 = 0;\n      do {\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_table;\n        iVar5 = iVar3;\n      } while (iVar4 != iVar3);\n    }\n    (*(code *)PTR_png_free_00053324)(png_ptr);\n    png_ptr->gamma_16_table = (png_uint_16pp)0x0;\n  }\n  (*(code *)PTR_png_free_00053324)(png_ptr,png_ptr->gamma_from_1);\n  puVar1 = PTR_png_free_00053324;\n  png_ptr->gamma_from_1 = (png_bytep)0x0;\n  (*(code *)puVar1)(png_ptr,png_ptr->gamma_to_1);\n  pppVar2 = png_ptr->gamma_16_from_1;\n  png_ptr->gamma_to_1 = (png_bytep)0x0;\n  if (pppVar2 != (png_uint_16pp)0x0) {\n    iVar4 = 1 << (8U - png_ptr->gamma_shift & 0x1f);\n    if (0 < iVar4) {\n      iVar5 = 0;\n      do {\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_from_1;\n        iVar5 = iVar3;\n      } while (iVar4 != iVar3);\n    }\n    (*(code *)PTR_png_free_00053324)(png_ptr);\n    png_ptr->gamma_16_from_1 = (png_uint_16pp)0x0;\n  }\n  pppVar2 = png_ptr->gamma_16_to_1;\n  if (pppVar2 != (png_uint_16pp)0x0) {\n    iVar5 = 1 << (8U - png_ptr->gamma_shift & 0x1f);\n    iVar4 = 0;\n    if (0 < iVar5) {\n      do {\n        iVar3 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar4]);\n        pppVar2 = png_ptr->gamma_16_to_1;\n        iVar4 = iVar3;\n      } while (iVar5 != iVar3);\n    }\n    (*(code *)PTR_png_free_00053324)(png_ptr);\n    png_ptr->gamma_16_to_1 = (png_uint_16pp)0x0;\n  }\n  return;\n}\n\n" (function_definition "void png_destroy_gamma_table(png_structrp png_ptr)\n\n{\n  undefined *puVar1;\n  png_uint_16pp pppVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  (*(code *)PTR_png_free_00053324)(png_ptr,png_ptr->gamma_table);\n  pppVar2 = png_ptr->gamma_16_table;\n  png_ptr->gamma_table = (png_bytep)0x0;\n  if (pppVar2 != (png_uint_16pp)0x0) {\n    iVar4 = 1 << (8U - png_ptr->gamma_shift & 0x1f);\n    if (0 < iVar4) {\n      iVar5 = 0;\n      do {\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_table;\n        iVar5 = iVar3;\n      } while (iVar4 != iVar3);\n    }\n    (*(code *)PTR_png_free_00053324)(png_ptr);\n    png_ptr->gamma_16_table = (png_uint_16pp)0x0;\n  }\n  (*(code *)PTR_png_free_00053324)(png_ptr,png_ptr->gamma_from_1);\n  puVar1 = PTR_png_free_00053324;\n  png_ptr->gamma_from_1 = (png_bytep)0x0;\n  (*(code *)puVar1)(png_ptr,png_ptr->gamma_to_1);\n  pppVar2 = png_ptr->gamma_16_from_1;\n  png_ptr->gamma_to_1 = (png_bytep)0x0;\n  if (pppVar2 != (png_uint_16pp)0x0) {\n    iVar4 = 1 << (8U - png_ptr->gamma_shift & 0x1f);\n    if (0 < iVar4) {\n      iVar5 = 0;\n      do {\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_from_1;\n        iVar5 = iVar3;\n      } while (iVar4 != iVar3);\n    }\n    (*(code *)PTR_png_free_00053324)(png_ptr);\n    png_ptr->gamma_16_from_1 = (png_uint_16pp)0x0;\n  }\n  pppVar2 = png_ptr->gamma_16_to_1;\n  if (pppVar2 != (png_uint_16pp)0x0) {\n    iVar5 = 1 << (8U - png_ptr->gamma_shift & 0x1f);\n    iVar4 = 0;\n    if (0 < iVar5) {\n      do {\n        iVar3 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar4]);\n        pppVar2 = png_ptr->gamma_16_to_1;\n        iVar4 = iVar3;\n      } while (iVar5 != iVar3);\n    }\n    (*(code *)PTR_png_free_00053324)(png_ptr);\n    png_ptr->gamma_16_to_1 = (png_uint_16pp)0x0;\n  }\n  return;\n}" primitive_type (function_declarator "png_destroy_gamma_table(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  png_uint_16pp pppVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  (*(code *)PTR_png_free_00053324)(png_ptr,png_ptr->gamma_table);\n  pppVar2 = png_ptr->gamma_16_table;\n  png_ptr->gamma_table = (png_bytep)0x0;\n  if (pppVar2 != (png_uint_16pp)0x0) {\n    iVar4 = 1 << (8U - png_ptr->gamma_shift & 0x1f);\n    if (0 < iVar4) {\n      iVar5 = 0;\n      do {\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_table;\n        iVar5 = iVar3;\n      } while (iVar4 != iVar3);\n    }\n    (*(code *)PTR_png_free_00053324)(png_ptr);\n    png_ptr->gamma_16_table = (png_uint_16pp)0x0;\n  }\n  (*(code *)PTR_png_free_00053324)(png_ptr,png_ptr->gamma_from_1);\n  puVar1 = PTR_png_free_00053324;\n  png_ptr->gamma_from_1 = (png_bytep)0x0;\n  (*(code *)puVar1)(png_ptr,png_ptr->gamma_to_1);\n  pppVar2 = png_ptr->gamma_16_from_1;\n  png_ptr->gamma_to_1 = (png_bytep)0x0;\n  if (pppVar2 != (png_uint_16pp)0x0) {\n    iVar4 = 1 << (8U - png_ptr->gamma_shift & 0x1f);\n    if (0 < iVar4) {\n      iVar5 = 0;\n      do {\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_from_1;\n        iVar5 = iVar3;\n      } while (iVar4 != iVar3);\n    }\n    (*(code *)PTR_png_free_00053324)(png_ptr);\n    png_ptr->gamma_16_from_1 = (png_uint_16pp)0x0;\n  }\n  pppVar2 = png_ptr->gamma_16_to_1;\n  if (pppVar2 != (png_uint_16pp)0x0) {\n    iVar5 = 1 << (8U - png_ptr->gamma_shift & 0x1f);\n    iVar4 = 0;\n    if (0 < iVar5) {\n      do {\n        iVar3 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar4]);\n        pppVar2 = png_ptr->gamma_16_to_1;\n        iVar4 = iVar3;\n      } while (iVar5 != iVar3);\n    }\n    (*(code *)PTR_png_free_00053324)(png_ptr);\n    png_ptr->gamma_16_to_1 = (png_uint_16pp)0x0;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "png_uint_16pp pppVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (expression_statement "(*(code *)PTR_png_free_00053324)(png_ptr,png_ptr->gamma_table);" (call_expression "(*(code *)PTR_png_free_00053324)(png_ptr,png_ptr->gamma_table)" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,png_ptr->gamma_table)" ( identifier , (field_expression "png_ptr->gamma_table" identifier -> field_identifier) ))) ;) (expression_statement "pppVar2 = png_ptr->gamma_16_table;" (assignment_expression "pppVar2 = png_ptr->gamma_16_table" identifier = (field_expression "png_ptr->gamma_16_table" identifier -> field_identifier)) ;) (expression_statement "png_ptr->gamma_table = (png_bytep)0x0;" (assignment_expression "png_ptr->gamma_table = (png_bytep)0x0" (field_expression "png_ptr->gamma_table" identifier -> field_identifier) = (cast_expression "(png_bytep)0x0" ( (type_descriptor "png_bytep" type_identifier) ) number_literal)) ;) (if_statement "if (pppVar2 != (png_uint_16pp)0x0) {\n    iVar4 = 1 << (8U - png_ptr->gamma_shift & 0x1f);\n    if (0 < iVar4) {\n      iVar5 = 0;\n      do {\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_table;\n        iVar5 = iVar3;\n      } while (iVar4 != iVar3);\n    }\n    (*(code *)PTR_png_free_00053324)(png_ptr);\n    png_ptr->gamma_16_table = (png_uint_16pp)0x0;\n  }" if (parenthesized_expression "(pppVar2 != (png_uint_16pp)0x0)" ( (binary_expression "pppVar2 != (png_uint_16pp)0x0" identifier != (cast_expression "(png_uint_16pp)0x0" ( (type_descriptor "png_uint_16pp" type_identifier) ) number_literal)) )) (compound_statement "{\n    iVar4 = 1 << (8U - png_ptr->gamma_shift & 0x1f);\n    if (0 < iVar4) {\n      iVar5 = 0;\n      do {\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_table;\n        iVar5 = iVar3;\n      } while (iVar4 != iVar3);\n    }\n    (*(code *)PTR_png_free_00053324)(png_ptr);\n    png_ptr->gamma_16_table = (png_uint_16pp)0x0;\n  }" { (expression_statement "iVar4 = 1 << (8U - png_ptr->gamma_shift & 0x1f);" (assignment_expression "iVar4 = 1 << (8U - png_ptr->gamma_shift & 0x1f)" identifier = (binary_expression "1 << (8U - png_ptr->gamma_shift & 0x1f)" number_literal << (parenthesized_expression "(8U - png_ptr->gamma_shift & 0x1f)" ( (binary_expression "8U - png_ptr->gamma_shift & 0x1f" (binary_expression "8U - png_ptr->gamma_shift" number_literal - (field_expression "png_ptr->gamma_shift" identifier -> field_identifier)) & number_literal) )))) ;) (if_statement "if (0 < iVar4) {\n      iVar5 = 0;\n      do {\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_table;\n        iVar5 = iVar3;\n      } while (iVar4 != iVar3);\n    }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n      iVar5 = 0;\n      do {\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_table;\n        iVar5 = iVar3;\n      } while (iVar4 != iVar3);\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_table;\n        iVar5 = iVar3;\n      } while (iVar4 != iVar3);" do (compound_statement "{\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_table;\n        iVar5 = iVar3;\n      }" { (expression_statement "iVar3 = iVar5 + 1;" (assignment_expression "iVar3 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);" (call_expression "(*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5])" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,pppVar2[iVar5])" ( identifier , (subscript_expression "pppVar2[iVar5]" identifier [ identifier ]) ))) ;) (expression_statement "pppVar2 = png_ptr->gamma_16_table;" (assignment_expression "pppVar2 = png_ptr->gamma_16_table" identifier = (field_expression "png_ptr->gamma_16_table" identifier -> field_identifier)) ;) (expression_statement "iVar5 = iVar3;" (assignment_expression "iVar5 = iVar3" identifier = identifier) ;) }) while (parenthesized_expression "(iVar4 != iVar3)" ( (binary_expression "iVar4 != iVar3" identifier != identifier) )) ;) })) (expression_statement "(*(code *)PTR_png_free_00053324)(png_ptr);" (call_expression "(*(code *)PTR_png_free_00053324)(png_ptr)" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr)" ( identifier ))) ;) (expression_statement "png_ptr->gamma_16_table = (png_uint_16pp)0x0;" (assignment_expression "png_ptr->gamma_16_table = (png_uint_16pp)0x0" (field_expression "png_ptr->gamma_16_table" identifier -> field_identifier) = (cast_expression "(png_uint_16pp)0x0" ( (type_descriptor "png_uint_16pp" type_identifier) ) number_literal)) ;) })) (expression_statement "(*(code *)PTR_png_free_00053324)(png_ptr,png_ptr->gamma_from_1);" (call_expression "(*(code *)PTR_png_free_00053324)(png_ptr,png_ptr->gamma_from_1)" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,png_ptr->gamma_from_1)" ( identifier , (field_expression "png_ptr->gamma_from_1" identifier -> field_identifier) ))) ;) (expression_statement "puVar1 = PTR_png_free_00053324;" (assignment_expression "puVar1 = PTR_png_free_00053324" identifier = identifier) ;) (expression_statement "png_ptr->gamma_from_1 = (png_bytep)0x0;" (assignment_expression "png_ptr->gamma_from_1 = (png_bytep)0x0" (field_expression "png_ptr->gamma_from_1" identifier -> field_identifier) = (cast_expression "(png_bytep)0x0" ( (type_descriptor "png_bytep" type_identifier) ) number_literal)) ;) (expression_statement "(*(code *)puVar1)(png_ptr,png_ptr->gamma_to_1);" (call_expression "(*(code *)puVar1)(png_ptr,png_ptr->gamma_to_1)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,png_ptr->gamma_to_1)" ( identifier , (field_expression "png_ptr->gamma_to_1" identifier -> field_identifier) ))) ;) (expression_statement "pppVar2 = png_ptr->gamma_16_from_1;" (assignment_expression "pppVar2 = png_ptr->gamma_16_from_1" identifier = (field_expression "png_ptr->gamma_16_from_1" identifier -> field_identifier)) ;) (expression_statement "png_ptr->gamma_to_1 = (png_bytep)0x0;" (assignment_expression "png_ptr->gamma_to_1 = (png_bytep)0x0" (field_expression "png_ptr->gamma_to_1" identifier -> field_identifier) = (cast_expression "(png_bytep)0x0" ( (type_descriptor "png_bytep" type_identifier) ) number_literal)) ;) (if_statement "if (pppVar2 != (png_uint_16pp)0x0) {\n    iVar4 = 1 << (8U - png_ptr->gamma_shift & 0x1f);\n    if (0 < iVar4) {\n      iVar5 = 0;\n      do {\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_from_1;\n        iVar5 = iVar3;\n      } while (iVar4 != iVar3);\n    }\n    (*(code *)PTR_png_free_00053324)(png_ptr);\n    png_ptr->gamma_16_from_1 = (png_uint_16pp)0x0;\n  }" if (parenthesized_expression "(pppVar2 != (png_uint_16pp)0x0)" ( (binary_expression "pppVar2 != (png_uint_16pp)0x0" identifier != (cast_expression "(png_uint_16pp)0x0" ( (type_descriptor "png_uint_16pp" type_identifier) ) number_literal)) )) (compound_statement "{\n    iVar4 = 1 << (8U - png_ptr->gamma_shift & 0x1f);\n    if (0 < iVar4) {\n      iVar5 = 0;\n      do {\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_from_1;\n        iVar5 = iVar3;\n      } while (iVar4 != iVar3);\n    }\n    (*(code *)PTR_png_free_00053324)(png_ptr);\n    png_ptr->gamma_16_from_1 = (png_uint_16pp)0x0;\n  }" { (expression_statement "iVar4 = 1 << (8U - png_ptr->gamma_shift & 0x1f);" (assignment_expression "iVar4 = 1 << (8U - png_ptr->gamma_shift & 0x1f)" identifier = (binary_expression "1 << (8U - png_ptr->gamma_shift & 0x1f)" number_literal << (parenthesized_expression "(8U - png_ptr->gamma_shift & 0x1f)" ( (binary_expression "8U - png_ptr->gamma_shift & 0x1f" (binary_expression "8U - png_ptr->gamma_shift" number_literal - (field_expression "png_ptr->gamma_shift" identifier -> field_identifier)) & number_literal) )))) ;) (if_statement "if (0 < iVar4) {\n      iVar5 = 0;\n      do {\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_from_1;\n        iVar5 = iVar3;\n      } while (iVar4 != iVar3);\n    }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n      iVar5 = 0;\n      do {\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_from_1;\n        iVar5 = iVar3;\n      } while (iVar4 != iVar3);\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_from_1;\n        iVar5 = iVar3;\n      } while (iVar4 != iVar3);" do (compound_statement "{\n        iVar3 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);\n        pppVar2 = png_ptr->gamma_16_from_1;\n        iVar5 = iVar3;\n      }" { (expression_statement "iVar3 = iVar5 + 1;" (assignment_expression "iVar3 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5]);" (call_expression "(*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar5])" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,pppVar2[iVar5])" ( identifier , (subscript_expression "pppVar2[iVar5]" identifier [ identifier ]) ))) ;) (expression_statement "pppVar2 = png_ptr->gamma_16_from_1;" (assignment_expression "pppVar2 = png_ptr->gamma_16_from_1" identifier = (field_expression "png_ptr->gamma_16_from_1" identifier -> field_identifier)) ;) (expression_statement "iVar5 = iVar3;" (assignment_expression "iVar5 = iVar3" identifier = identifier) ;) }) while (parenthesized_expression "(iVar4 != iVar3)" ( (binary_expression "iVar4 != iVar3" identifier != identifier) )) ;) })) (expression_statement "(*(code *)PTR_png_free_00053324)(png_ptr);" (call_expression "(*(code *)PTR_png_free_00053324)(png_ptr)" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr)" ( identifier ))) ;) (expression_statement "png_ptr->gamma_16_from_1 = (png_uint_16pp)0x0;" (assignment_expression "png_ptr->gamma_16_from_1 = (png_uint_16pp)0x0" (field_expression "png_ptr->gamma_16_from_1" identifier -> field_identifier) = (cast_expression "(png_uint_16pp)0x0" ( (type_descriptor "png_uint_16pp" type_identifier) ) number_literal)) ;) })) (expression_statement "pppVar2 = png_ptr->gamma_16_to_1;" (assignment_expression "pppVar2 = png_ptr->gamma_16_to_1" identifier = (field_expression "png_ptr->gamma_16_to_1" identifier -> field_identifier)) ;) (if_statement "if (pppVar2 != (png_uint_16pp)0x0) {\n    iVar5 = 1 << (8U - png_ptr->gamma_shift & 0x1f);\n    iVar4 = 0;\n    if (0 < iVar5) {\n      do {\n        iVar3 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar4]);\n        pppVar2 = png_ptr->gamma_16_to_1;\n        iVar4 = iVar3;\n      } while (iVar5 != iVar3);\n    }\n    (*(code *)PTR_png_free_00053324)(png_ptr);\n    png_ptr->gamma_16_to_1 = (png_uint_16pp)0x0;\n  }" if (parenthesized_expression "(pppVar2 != (png_uint_16pp)0x0)" ( (binary_expression "pppVar2 != (png_uint_16pp)0x0" identifier != (cast_expression "(png_uint_16pp)0x0" ( (type_descriptor "png_uint_16pp" type_identifier) ) number_literal)) )) (compound_statement "{\n    iVar5 = 1 << (8U - png_ptr->gamma_shift & 0x1f);\n    iVar4 = 0;\n    if (0 < iVar5) {\n      do {\n        iVar3 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar4]);\n        pppVar2 = png_ptr->gamma_16_to_1;\n        iVar4 = iVar3;\n      } while (iVar5 != iVar3);\n    }\n    (*(code *)PTR_png_free_00053324)(png_ptr);\n    png_ptr->gamma_16_to_1 = (png_uint_16pp)0x0;\n  }" { (expression_statement "iVar5 = 1 << (8U - png_ptr->gamma_shift & 0x1f);" (assignment_expression "iVar5 = 1 << (8U - png_ptr->gamma_shift & 0x1f)" identifier = (binary_expression "1 << (8U - png_ptr->gamma_shift & 0x1f)" number_literal << (parenthesized_expression "(8U - png_ptr->gamma_shift & 0x1f)" ( (binary_expression "8U - png_ptr->gamma_shift & 0x1f" (binary_expression "8U - png_ptr->gamma_shift" number_literal - (field_expression "png_ptr->gamma_shift" identifier -> field_identifier)) & number_literal) )))) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar5) {\n      do {\n        iVar3 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar4]);\n        pppVar2 = png_ptr->gamma_16_to_1;\n        iVar4 = iVar3;\n      } while (iVar5 != iVar3);\n    }" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (compound_statement "{\n      do {\n        iVar3 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar4]);\n        pppVar2 = png_ptr->gamma_16_to_1;\n        iVar4 = iVar3;\n      } while (iVar5 != iVar3);\n    }" { (do_statement "do {\n        iVar3 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar4]);\n        pppVar2 = png_ptr->gamma_16_to_1;\n        iVar4 = iVar3;\n      } while (iVar5 != iVar3);" do (compound_statement "{\n        iVar3 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar4]);\n        pppVar2 = png_ptr->gamma_16_to_1;\n        iVar4 = iVar3;\n      }" { (expression_statement "iVar3 = iVar4 + 1;" (assignment_expression "iVar3 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar4]);" (call_expression "(*(code *)PTR_png_free_00053324)(png_ptr,pppVar2[iVar4])" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,pppVar2[iVar4])" ( identifier , (subscript_expression "pppVar2[iVar4]" identifier [ identifier ]) ))) ;) (expression_statement "pppVar2 = png_ptr->gamma_16_to_1;" (assignment_expression "pppVar2 = png_ptr->gamma_16_to_1" identifier = (field_expression "png_ptr->gamma_16_to_1" identifier -> field_identifier)) ;) (expression_statement "iVar4 = iVar3;" (assignment_expression "iVar4 = iVar3" identifier = identifier) ;) }) while (parenthesized_expression "(iVar5 != iVar3)" ( (binary_expression "iVar5 != iVar3" identifier != identifier) )) ;) })) (expression_statement "(*(code *)PTR_png_free_00053324)(png_ptr);" (call_expression "(*(code *)PTR_png_free_00053324)(png_ptr)" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr)" ( identifier ))) ;) (expression_statement "png_ptr->gamma_16_to_1 = (png_uint_16pp)0x0;" (assignment_expression "png_ptr->gamma_16_to_1 = (png_uint_16pp)0x0" (field_expression "png_ptr->gamma_16_to_1" identifier -> field_identifier) = (cast_expression "(png_uint_16pp)0x0" ( (type_descriptor "png_uint_16pp" type_identifier) ) number_literal)) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00018e04(int param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x23c));\n  iVar3 = *(int *)(param_1 + 0x240);\n  *(undefined4 *)(param_1 + 0x23c) = 0;\n  if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x240) = 0;\n  }\n  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x244));\n  puVar1 = PTR_png_free_00053324;\n  *(undefined4 *)(param_1 + 0x244) = 0;\n  (*(code *)puVar1)(param_1,*(undefined4 *)(param_1 + 0x248));\n  iVar3 = *(int *)(param_1 + 0x24c);\n  *(undefined4 *)(param_1 + 0x248) = 0;\n  if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x24c) = 0;\n  }\n  iVar3 = *(int *)(param_1 + 0x250);\n  if (iVar3 != 0) {\n    iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    iVar5 = 0;\n    if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x250) = 0;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00018e04(int param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x23c));\n  iVar3 = *(int *)(param_1 + 0x240);\n  *(undefined4 *)(param_1 + 0x23c) = 0;\n  if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x240) = 0;\n  }\n  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x244));\n  puVar1 = PTR_png_free_00053324;\n  *(undefined4 *)(param_1 + 0x244) = 0;\n  (*(code *)puVar1)(param_1,*(undefined4 *)(param_1 + 0x248));\n  iVar3 = *(int *)(param_1 + 0x24c);\n  *(undefined4 *)(param_1 + 0x248) = 0;\n  if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x24c) = 0;\n  }\n  iVar3 = *(int *)(param_1 + 0x250);\n  if (iVar3 != 0) {\n    iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    iVar5 = 0;\n    if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x250) = 0;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00018e04(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x23c));\n  iVar3 = *(int *)(param_1 + 0x240);\n  *(undefined4 *)(param_1 + 0x23c) = 0;\n  if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x240) = 0;\n  }\n  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x244));\n  puVar1 = PTR_png_free_00053324;\n  *(undefined4 *)(param_1 + 0x244) = 0;\n  (*(code *)puVar1)(param_1,*(undefined4 *)(param_1 + 0x248));\n  iVar3 = *(int *)(param_1 + 0x24c);\n  *(undefined4 *)(param_1 + 0x248) = 0;\n  if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x24c) = 0;\n  }\n  iVar3 = *(int *)(param_1 + 0x250);\n  if (iVar3 != 0) {\n    iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    iVar5 = 0;\n    if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x250) = 0;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x23c));" (call_expression "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x23c))" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,*(undefined4 *)(param_1 + 0x23c))" ( identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x23c)" * (cast_expression "(undefined4 *)(param_1 + 0x23c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x23c)" ( (binary_expression "param_1 + 0x23c" identifier + number_literal) )))) ))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x240);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x240)" identifier = (pointer_expression "*(int *)(param_1 + 0x240)" * (cast_expression "(int *)(param_1 + 0x240)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x23c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x23c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x23c)" * (cast_expression "(undefined4 *)(param_1 + 0x23c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x23c)" ( (binary_expression "param_1 + 0x23c" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x240) = 0;\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x240) = 0;\n  }" { (expression_statement "iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);" (assignment_expression "iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" identifier = (binary_expression "1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" number_literal << (parenthesized_expression "(8U - *(int *)(param_1 + 0x234) & 0x1f)" ( (binary_expression "8U - *(int *)(param_1 + 0x234) & 0x1f" (binary_expression "8U - *(int *)(param_1 + 0x234)" number_literal - (pointer_expression "*(int *)(param_1 + 0x234)" * (cast_expression "(int *)(param_1 + 0x234)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x234)" ( (binary_expression "param_1 + 0x234" identifier + number_literal) ))))) & number_literal) )))) ;) (if_statement "if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (compound_statement "{\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);" do (compound_statement "{\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      }" { (expression_statement "iVar2 = iVar4 * 4;" (assignment_expression "iVar2 = iVar4 * 4" identifier = (binary_expression "iVar4 * 4" identifier * number_literal)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));" (call_expression "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2))" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,*(undefined4 *)(iVar3 + iVar2))" ( identifier , (pointer_expression "*(undefined4 *)(iVar3 + iVar2)" * (cast_expression "(undefined4 *)(iVar3 + iVar2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar2)" ( (binary_expression "iVar3 + iVar2" identifier + identifier) )))) ))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x240);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x240)" identifier = (pointer_expression "*(int *)(param_1 + 0x240)" * (cast_expression "(int *)(param_1 + 0x240)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar5 != iVar4)" ( (binary_expression "iVar5 != iVar4" identifier != identifier) )) ;) })) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1);" (call_expression "(*(code *)PTR_png_free_00053324)(param_1)" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x240) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x240) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x240)" * (cast_expression "(undefined4 *)(param_1 + 0x240)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x244));" (call_expression "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x244))" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,*(undefined4 *)(param_1 + 0x244))" ( identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x244)" * (cast_expression "(undefined4 *)(param_1 + 0x244)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x244)" ( (binary_expression "param_1 + 0x244" identifier + number_literal) )))) ))) ;) (expression_statement "puVar1 = PTR_png_free_00053324;" (assignment_expression "puVar1 = PTR_png_free_00053324" identifier = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x244) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x244) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x244)" * (cast_expression "(undefined4 *)(param_1 + 0x244)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x244)" ( (binary_expression "param_1 + 0x244" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*(code *)puVar1)(param_1,*(undefined4 *)(param_1 + 0x248));" (call_expression "(*(code *)puVar1)(param_1,*(undefined4 *)(param_1 + 0x248))" (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,*(undefined4 *)(param_1 + 0x248))" ( identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x248)" * (cast_expression "(undefined4 *)(param_1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) ))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x24c);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x24c)" identifier = (pointer_expression "*(int *)(param_1 + 0x24c)" * (cast_expression "(int *)(param_1 + 0x24c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24c)" ( (binary_expression "param_1 + 0x24c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x248) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x248) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x248)" * (cast_expression "(undefined4 *)(param_1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x24c) = 0;\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x24c) = 0;\n  }" { (expression_statement "iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);" (assignment_expression "iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" identifier = (binary_expression "1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" number_literal << (parenthesized_expression "(8U - *(int *)(param_1 + 0x234) & 0x1f)" ( (binary_expression "8U - *(int *)(param_1 + 0x234) & 0x1f" (binary_expression "8U - *(int *)(param_1 + 0x234)" number_literal - (pointer_expression "*(int *)(param_1 + 0x234)" * (cast_expression "(int *)(param_1 + 0x234)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x234)" ( (binary_expression "param_1 + 0x234" identifier + number_literal) ))))) & number_literal) )))) ;) (if_statement "if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (compound_statement "{\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);" do (compound_statement "{\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      }" { (expression_statement "iVar2 = iVar4 * 4;" (assignment_expression "iVar2 = iVar4 * 4" identifier = (binary_expression "iVar4 * 4" identifier * number_literal)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));" (call_expression "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2))" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,*(undefined4 *)(iVar3 + iVar2))" ( identifier , (pointer_expression "*(undefined4 *)(iVar3 + iVar2)" * (cast_expression "(undefined4 *)(iVar3 + iVar2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar2)" ( (binary_expression "iVar3 + iVar2" identifier + identifier) )))) ))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x24c);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x24c)" identifier = (pointer_expression "*(int *)(param_1 + 0x24c)" * (cast_expression "(int *)(param_1 + 0x24c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24c)" ( (binary_expression "param_1 + 0x24c" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar5 != iVar4)" ( (binary_expression "iVar5 != iVar4" identifier != identifier) )) ;) })) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1);" (call_expression "(*(code *)PTR_png_free_00053324)(param_1)" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x24c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x24c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x24c)" * (cast_expression "(undefined4 *)(param_1 + 0x24c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24c)" ( (binary_expression "param_1 + 0x24c" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "iVar3 = *(int *)(param_1 + 0x250);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x250)" identifier = (pointer_expression "*(int *)(param_1 + 0x250)" * (cast_expression "(int *)(param_1 + 0x250)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0) {\n    iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    iVar5 = 0;\n    if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x250) = 0;\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    iVar5 = 0;\n    if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x250) = 0;\n  }" { (expression_statement "iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);" (assignment_expression "iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" identifier = (binary_expression "1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" number_literal << (parenthesized_expression "(8U - *(int *)(param_1 + 0x234) & 0x1f)" ( (binary_expression "8U - *(int *)(param_1 + 0x234) & 0x1f" (binary_expression "8U - *(int *)(param_1 + 0x234)" number_literal - (pointer_expression "*(int *)(param_1 + 0x234)" * (cast_expression "(int *)(param_1 + 0x234)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x234)" ( (binary_expression "param_1 + 0x234" identifier + number_literal) ))))) & number_literal) )))) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }" { (do_statement "do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);" do (compound_statement "{\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      }" { (expression_statement "iVar2 = iVar5 * 4;" (assignment_expression "iVar2 = iVar5 * 4" identifier = (binary_expression "iVar5 * 4" identifier * number_literal)) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));" (call_expression "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2))" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,*(undefined4 *)(iVar3 + iVar2))" ( identifier , (pointer_expression "*(undefined4 *)(iVar3 + iVar2)" * (cast_expression "(undefined4 *)(iVar3 + iVar2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar2)" ( (binary_expression "iVar3 + iVar2" identifier + identifier) )))) ))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x250);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x250)" identifier = (pointer_expression "*(int *)(param_1 + 0x250)" * (cast_expression "(int *)(param_1 + 0x250)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar4 != iVar5)" ( (binary_expression "iVar4 != iVar5" identifier != identifier) )) ;) })) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1);" (call_expression "(*(code *)PTR_png_free_00053324)(param_1)" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" ( (pointer_expression "*(code *)PTR_png_free_00053324" * (cast_expression "(code *)PTR_png_free_00053324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x250) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x250) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x250)" * (cast_expression "(undefined4 *)(param_1 + 0x250)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) )))) = number_literal) ;) })) (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression LIT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression LIT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression 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 LIT << (parenthesized_expression ( (binary_expression (binary_expression LIT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00018e04(int param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x23c));\n  iVar3 = *(int *)(param_1 + 0x240);\n  *(undefined4 *)(param_1 + 0x23c) = 0;\n  if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x240) = 0;\n  }\n  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x244));\n  puVar1 = PTR_png_free_00053324;\n  *(undefined4 *)(param_1 + 0x244) = 0;\n  (*(code *)puVar1)(param_1,*(undefined4 *)(param_1 + 0x248));\n  iVar3 = *(int *)(param_1 + 0x24c);\n  *(undefined4 *)(param_1 + 0x248) = 0;\n  if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x24c) = 0;\n  }\n  iVar3 = *(int *)(param_1 + 0x250);\n  if (iVar3 != 0) {\n    iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    iVar5 = 0;\n    if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x250) = 0;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00018e04(int param_1)" (identifier "FUN_00018e04") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x23c));\n  iVar3 = *(int *)(param_1 + 0x240);\n  *(undefined4 *)(param_1 + 0x23c) = 0;\n  if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x240) = 0;\n  }\n  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x244));\n  puVar1 = PTR_png_free_00053324;\n  *(undefined4 *)(param_1 + 0x244) = 0;\n  (*(code *)puVar1)(param_1,*(undefined4 *)(param_1 + 0x248));\n  iVar3 = *(int *)(param_1 + 0x24c);\n  *(undefined4 *)(param_1 + 0x248) = 0;\n  if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x24c) = 0;\n  }\n  iVar3 = *(int *)(param_1 + 0x250);\n  if (iVar3 != 0) {\n    iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    iVar5 = 0;\n    if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x250) = 0;\n  }\n  return;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x23c));" (call_expression "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x23c))" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" (( "(") (pointer_expression "*(code *)PTR_png_free_00053324" (* "*") (cast_expression "(code *)PTR_png_free_00053324" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_free_00053324"))) () ")")) (argument_list "(param_1,*(undefined4 *)(param_1 + 0x23c))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x23c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x23c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x23c)" (( "(") (binary_expression "param_1 + 0x23c" (identifier "param_1") (+ "+") (number_literal "0x23c")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 0x240);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x240)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x240)" (* "*") (cast_expression "(int *)(param_1 + 0x240)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x240)" (( "(") (binary_expression "param_1 + 0x240" (identifier "param_1") (+ "+") (number_literal "0x240")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x23c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x23c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x23c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x23c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x23c)" (( "(") (binary_expression "param_1 + 0x23c" (identifier "param_1") (+ "+") (number_literal "0x23c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x240) = 0;\n  }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x240) = 0;\n  }" ({ "{") (expression_statement "iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);" (assignment_expression "iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" (identifier "iVar5") (= "=") (binary_expression "1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(8U - *(int *)(param_1 + 0x234) & 0x1f)" (( "(") (binary_expression "8U - *(int *)(param_1 + 0x234) & 0x1f" (binary_expression "8U - *(int *)(param_1 + 0x234)" (number_literal "8U") (- "-") (pointer_expression "*(int *)(param_1 + 0x234)" (* "*") (cast_expression "(int *)(param_1 + 0x234)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x234)" (( "(") (binary_expression "param_1 + 0x234" (identifier "param_1") (+ "+") (number_literal "0x234")) () ")"))))) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }" (if "if") (parenthesized_expression "(0 < iVar5)" (( "(") (binary_expression "0 < iVar5" (number_literal "0") (< "<") (identifier "iVar5")) () ")")) (compound_statement "{\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);\n    }" ({ "{") (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      } while (iVar5 != iVar4);" (do "do") (compound_statement "{\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x240);\n      }" ({ "{") (expression_statement "iVar2 = iVar4 * 4;" (assignment_expression "iVar2 = iVar4 * 4" (identifier "iVar2") (= "=") (binary_expression "iVar4 * 4" (identifier "iVar4") (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));" (call_expression "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2))" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" (( "(") (pointer_expression "*(code *)PTR_png_free_00053324" (* "*") (cast_expression "(code *)PTR_png_free_00053324" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_free_00053324"))) () ")")) (argument_list "(param_1,*(undefined4 *)(iVar3 + iVar2))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(iVar3 + iVar2)" (* "*") (cast_expression "(undefined4 *)(iVar3 + iVar2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + iVar2)" (( "(") (binary_expression "iVar3 + iVar2" (identifier "iVar3") (+ "+") (identifier "iVar2")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 0x240);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x240)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x240)" (* "*") (cast_expression "(int *)(param_1 + 0x240)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x240)" (( "(") (binary_expression "param_1 + 0x240" (identifier "param_1") (+ "+") (number_literal "0x240")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != iVar4)" (( "(") (binary_expression "iVar5 != iVar4" (identifier "iVar5") (!= "!=") (identifier "iVar4")) () ")")) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1);" (call_expression "(*(code *)PTR_png_free_00053324)(param_1)" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" (( "(") (pointer_expression "*(code *)PTR_png_free_00053324" (* "*") (cast_expression "(code *)PTR_png_free_00053324" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_free_00053324"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x240) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x240) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x240)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x240)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x240)" (( "(") (binary_expression "param_1 + 0x240" (identifier "param_1") (+ "+") (number_literal "0x240")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x244));" (call_expression "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x244))" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" (( "(") (pointer_expression "*(code *)PTR_png_free_00053324" (* "*") (cast_expression "(code *)PTR_png_free_00053324" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_free_00053324"))) () ")")) (argument_list "(param_1,*(undefined4 *)(param_1 + 0x244))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x244)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x244)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x244)" (( "(") (binary_expression "param_1 + 0x244" (identifier "param_1") (+ "+") (number_literal "0x244")) () ")")))) () ")"))) (; ";")) (expression_statement "puVar1 = PTR_png_free_00053324;" (assignment_expression "puVar1 = PTR_png_free_00053324" (identifier "puVar1") (= "=") (identifier "PTR_png_free_00053324")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x244) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x244) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x244)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x244)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x244)" (( "(") (binary_expression "param_1 + 0x244" (identifier "param_1") (+ "+") (number_literal "0x244")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "(*(code *)puVar1)(param_1,*(undefined4 *)(param_1 + 0x248));" (call_expression "(*(code *)puVar1)(param_1,*(undefined4 *)(param_1 + 0x248))" (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,*(undefined4 *)(param_1 + 0x248))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x248)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x248)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x248)" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 0x24c);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x24c)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x24c)" (* "*") (cast_expression "(int *)(param_1 + 0x24c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24c)" (( "(") (binary_expression "param_1 + 0x24c" (identifier "param_1") (+ "+") (number_literal "0x24c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x248) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x248) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x248)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x248)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x248)" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar3 != 0) {\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x24c) = 0;\n  }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x24c) = 0;\n  }" ({ "{") (expression_statement "iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);" (assignment_expression "iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" (identifier "iVar5") (= "=") (binary_expression "1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(8U - *(int *)(param_1 + 0x234) & 0x1f)" (( "(") (binary_expression "8U - *(int *)(param_1 + 0x234) & 0x1f" (binary_expression "8U - *(int *)(param_1 + 0x234)" (number_literal "8U") (- "-") (pointer_expression "*(int *)(param_1 + 0x234)" (* "*") (cast_expression "(int *)(param_1 + 0x234)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x234)" (( "(") (binary_expression "param_1 + 0x234" (identifier "param_1") (+ "+") (number_literal "0x234")) () ")"))))) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (0 < iVar5) {\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }" (if "if") (parenthesized_expression "(0 < iVar5)" (( "(") (binary_expression "0 < iVar5" (number_literal "0") (< "<") (identifier "iVar5")) () ")")) (compound_statement "{\n      iVar4 = 0;\n      do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);\n    }" ({ "{") (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      } while (iVar5 != iVar4);" (do "do") (compound_statement "{\n        iVar2 = iVar4 * 4;\n        iVar4 = iVar4 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x24c);\n      }" ({ "{") (expression_statement "iVar2 = iVar4 * 4;" (assignment_expression "iVar2 = iVar4 * 4" (identifier "iVar2") (= "=") (binary_expression "iVar4 * 4" (identifier "iVar4") (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));" (call_expression "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2))" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" (( "(") (pointer_expression "*(code *)PTR_png_free_00053324" (* "*") (cast_expression "(code *)PTR_png_free_00053324" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_free_00053324"))) () ")")) (argument_list "(param_1,*(undefined4 *)(iVar3 + iVar2))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(iVar3 + iVar2)" (* "*") (cast_expression "(undefined4 *)(iVar3 + iVar2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + iVar2)" (( "(") (binary_expression "iVar3 + iVar2" (identifier "iVar3") (+ "+") (identifier "iVar2")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 0x24c);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x24c)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x24c)" (* "*") (cast_expression "(int *)(param_1 + 0x24c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24c)" (( "(") (binary_expression "param_1 + 0x24c" (identifier "param_1") (+ "+") (number_literal "0x24c")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != iVar4)" (( "(") (binary_expression "iVar5 != iVar4" (identifier "iVar5") (!= "!=") (identifier "iVar4")) () ")")) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1);" (call_expression "(*(code *)PTR_png_free_00053324)(param_1)" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" (( "(") (pointer_expression "*(code *)PTR_png_free_00053324" (* "*") (cast_expression "(code *)PTR_png_free_00053324" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_free_00053324"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x24c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x24c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x24c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x24c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24c)" (( "(") (binary_expression "param_1 + 0x24c" (identifier "param_1") (+ "+") (number_literal "0x24c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "iVar3 = *(int *)(param_1 + 0x250);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x250)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x250)" (* "*") (cast_expression "(int *)(param_1 + 0x250)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x250)" (( "(") (binary_expression "param_1 + 0x250" (identifier "param_1") (+ "+") (number_literal "0x250")) () ")"))))) (; ";")) (if_statement "if (iVar3 != 0) {\n    iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    iVar5 = 0;\n    if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x250) = 0;\n  }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);\n    iVar5 = 0;\n    if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }\n    (*(code *)PTR_png_free_00053324)(param_1);\n    *(undefined4 *)(param_1 + 0x250) = 0;\n  }" ({ "{") (expression_statement "iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);" (assignment_expression "iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" (identifier "iVar4") (= "=") (binary_expression "1 << (8U - *(int *)(param_1 + 0x234) & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(8U - *(int *)(param_1 + 0x234) & 0x1f)" (( "(") (binary_expression "8U - *(int *)(param_1 + 0x234) & 0x1f" (binary_expression "8U - *(int *)(param_1 + 0x234)" (number_literal "8U") (- "-") (pointer_expression "*(int *)(param_1 + 0x234)" (* "*") (cast_expression "(int *)(param_1 + 0x234)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x234)" (( "(") (binary_expression "param_1 + 0x234" (identifier "param_1") (+ "+") (number_literal "0x234")) () ")"))))) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < iVar4) {\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }" (if "if") (parenthesized_expression "(0 < iVar4)" (( "(") (binary_expression "0 < iVar4" (number_literal "0") (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n      do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);\n    }" ({ "{") (do_statement "do {\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      } while (iVar4 != iVar5);" (do "do") (compound_statement "{\n        iVar2 = iVar5 * 4;\n        iVar5 = iVar5 + 1;\n        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));\n        iVar3 = *(int *)(param_1 + 0x250);\n      }" ({ "{") (expression_statement "iVar2 = iVar5 * 4;" (assignment_expression "iVar2 = iVar5 * 4" (identifier "iVar2") (= "=") (binary_expression "iVar5 * 4" (identifier "iVar5") (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));" (call_expression "(*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2))" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" (( "(") (pointer_expression "*(code *)PTR_png_free_00053324" (* "*") (cast_expression "(code *)PTR_png_free_00053324" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_free_00053324"))) () ")")) (argument_list "(param_1,*(undefined4 *)(iVar3 + iVar2))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(iVar3 + iVar2)" (* "*") (cast_expression "(undefined4 *)(iVar3 + iVar2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + iVar2)" (( "(") (binary_expression "iVar3 + iVar2" (identifier "iVar3") (+ "+") (identifier "iVar2")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 0x250);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x250)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x250)" (* "*") (cast_expression "(int *)(param_1 + 0x250)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x250)" (( "(") (binary_expression "param_1 + 0x250" (identifier "param_1") (+ "+") (number_literal "0x250")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != iVar5)" (( "(") (binary_expression "iVar4 != iVar5" (identifier "iVar4") (!= "!=") (identifier "iVar5")) () ")")) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_png_free_00053324)(param_1);" (call_expression "(*(code *)PTR_png_free_00053324)(param_1)" (parenthesized_expression "(*(code *)PTR_png_free_00053324)" (( "(") (pointer_expression "*(code *)PTR_png_free_00053324" (* "*") (cast_expression "(code *)PTR_png_free_00053324" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_free_00053324"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x250) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x250) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x250)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x250)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x250)" (( "(") (binary_expression "param_1 + 0x250" (identifier "param_1") (+ "+") (number_literal "0x250")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (return_statement "return;" (return "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: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (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: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (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)))))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) (expression_statement (assignment_expression left: (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)))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (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) (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: (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: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (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: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (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)))))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) (expression_statement (assignment_expression left: (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)))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (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: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (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)))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) (expression_statement (assignment_expression left: (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)))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (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))))) (return_statement))))

void MASKED(int param_1)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x23c));
  iVar3 = *(int *)(param_1 + 0x240);
  *(undefined4 *)(param_1 + 0x23c) = 0;
  if (iVar3 != 0) {
    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);
    if (0 < iVar5) {
      iVar4 = 0;
      do {
        iVar2 = iVar4 * 4;
        iVar4 = iVar4 + 1;
        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));
        iVar3 = *(int *)(param_1 + 0x240);
      } while (iVar5 != iVar4);
    }
    (*(code *)PTR_png_free_00053324)(param_1);
    *(undefined4 *)(param_1 + 0x240) = 0;
  }
  (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(param_1 + 0x244));
  puVar1 = PTR_png_free_00053324;
  *(undefined4 *)(param_1 + 0x244) = 0;
  (*(code *)puVar1)(param_1,*(undefined4 *)(param_1 + 0x248));
  iVar3 = *(int *)(param_1 + 0x24c);
  *(undefined4 *)(param_1 + 0x248) = 0;
  if (iVar3 != 0) {
    iVar5 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);
    if (0 < iVar5) {
      iVar4 = 0;
      do {
        iVar2 = iVar4 * 4;
        iVar4 = iVar4 + 1;
        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));
        iVar3 = *(int *)(param_1 + 0x24c);
      } while (iVar5 != iVar4);
    }
    (*(code *)PTR_png_free_00053324)(param_1);
    *(undefined4 *)(param_1 + 0x24c) = 0;
  }
  iVar3 = *(int *)(param_1 + 0x250);
  if (iVar3 != 0) {
    iVar4 = 1 << (8U - *(int *)(param_1 + 0x234) & 0x1f);
    iVar5 = 0;
    if (0 < iVar4) {
      do {
        iVar2 = iVar5 * 4;
        iVar5 = iVar5 + 1;
        (*(code *)PTR_png_free_00053324)(param_1,*(undefined4 *)(iVar3 + iVar2));
        iVar3 = *(int *)(param_1 + 0x250);
      } while (iVar4 != iVar5);
    }
    (*(code *)PTR_png_free_00053324)(param_1);
    *(undefined4 *)(param_1 + 0x250) = 0;
  }
  return;
}

