
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void png_write_info_before_PLTE(png_structrp png_ptr,png_const_inforp info_ptr)

{
  uint uVar1;
  ushort uVar2;
  
  if (((png_ptr == (png_structrp)0x0) || (info_ptr == (png_const_inforp)0x0)) ||
     ((png_ptr->mode & 0x400) != 0)) {
    return;
  }
  png_write_sig(png_ptr);
  if (((png_ptr->mode & 0x1000) != 0) && (png_ptr->mng_features_permitted != 0)) {
    png_warning(png_ptr,"MNG features are not allowed in a PNG datastream");
    png_ptr->mng_features_permitted = 0;
  }
  png_write_IHDR(png_ptr,info_ptr->width,info_ptr->height,(uint)info_ptr->bit_depth,
                 (uint)info_ptr->color_type,(uint)info_ptr->compression_type,
                 (uint)info_ptr->filter_type,(uint)info_ptr->interlace_type);
  uVar1 = info_ptr->valid;
  if ((uVar1 & 0x20000) != 0) {
    png_write_acTL(png_ptr,info_ptr->num_frames,info_ptr->num_plays);
    uVar1 = info_ptr->valid;
  }
  uVar2 = (info_ptr->colorspace).flags;
  if ((short)uVar2 < 0) {
LAB_00036b30:
    if ((uVar1 & 2) == 0) goto LAB_00036b34;
LAB_00036b9c:
    png_write_sBIT(png_ptr,&info_ptr->sig_bit,(uint)info_ptr->color_type);
LAB_00036ae3:
    uVar2 = (info_ptr->colorspace).flags;
    if ((short)uVar2 < 0) goto LAB_00036b34;
  }
  else {
    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {
      png_write_gAMA_fixed(png_ptr,(info_ptr->colorspace).gamma);
      uVar2 = (info_ptr->colorspace).flags;
      uVar1 = info_ptr->valid;
      if ((short)uVar2 < 0) goto LAB_00036b30;
    }
    if ((uVar1 & 0x1000) != 0) {
      if ((uVar1 & 0x800) != 0) {
        png_app_warning(png_ptr,"profile matches sRGB but writing iCCP instead");
      }
      png_write_iCCP(png_ptr,info_ptr->iccp_name,info_ptr->iccp_profile);
LAB_00036ad9:
      if ((info_ptr->valid & 2) != 0) goto LAB_00036b9c;
      goto LAB_00036ae3;
    }
    if ((uVar1 & 0x800) != 0) {
      png_write_sRGB(png_ptr,(uint)(info_ptr->colorspace).rendering_intent);
      goto LAB_00036ad9;
    }
    if ((uVar1 & 2) != 0) goto LAB_00036b9c;
  }
  if (((uVar2 & 0x10) != 0) && ((info_ptr->valid & 4) != 0)) {
    png_write_cHRM_fixed(png_ptr,&(info_ptr->colorspace).end_points_xy);
  }
LAB_00036b34:
  if (info_ptr->unknown_chunks_num != 0) {
    write_unknown_chunks
              (png_ptr,(png_const_inforp)&info_ptr->unknown_chunks,
               (uint)&info_ptr->unknown_chunks_num,(png_const_inforp)0x1);
  }
  png_ptr->mode = png_ptr->mode | 0x400;
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void png_write_info_before_PLTE(int param_1,undefined4 *param_2)

{
  uint uVar1;
  ushort uVar2;
  
  if (((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0))
  {
    return;
  }
  png_write_sig(param_1);
  if (((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0)) {
    png_warning(param_1,"MNG features are not allowed in a PNG datastream");
    *(undefined4 *)(param_1 + 0x2ac) = 0;
  }
  FUN_0003a950(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),
               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),
               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7));
  uVar1 = param_2[2];
  if ((uVar1 & 0x20000) != 0) {
    FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);
    uVar1 = param_2[2];
  }
  uVar2 = *(ushort *)((int)param_2 + 0x72);
  if ((short)uVar2 < 0) {
LAB_00036b30:
    if ((uVar1 & 2) == 0) goto LAB_00036b34;
LAB_00036b9c:
    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));
LAB_00036ae3:
    uVar2 = *(ushort *)((int)param_2 + 0x72);
    if ((short)uVar2 < 0) goto LAB_00036b34;
  }
  else {
    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {
      FUN_0003af90(param_1,param_2[10]);
      uVar2 = *(ushort *)((int)param_2 + 0x72);
      uVar1 = param_2[2];
      if ((short)uVar2 < 0) goto LAB_00036b30;
    }
    if ((uVar1 & 0x1000) != 0) {
      if ((uVar1 & 0x800) != 0) {
        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");
      }
      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);
LAB_00036ad9:
      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;
      goto LAB_00036ae3;
    }
    if ((uVar1 & 0x800) != 0) {
      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));
      goto LAB_00036ad9;
    }
    if ((uVar1 & 2) != 0) goto LAB_00036b9c;
  }
  if (((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0)) {
    FUN_0003b7f0(param_1,param_2 + 0xb);
  }
LAB_00036b34:
  if (param_2[0x3f] != 0) {
    FUN_00036220(1);
  }
  *(uint *)(param_1 + 0xd0) = *(uint *)(param_1 + 0xd0) | 0x400;
  return;
}


PUSH EDI
PUSH ESI
PUSH EBX
MOV EDI,dword ptr [ESP + 0x10]
CALL 0x00014970
ADD EBX,0x1d364
MOV ESI,dword ptr [ESP + 0x14]
TEST EDI,EDI
JZ 0x00036a37
TEST ESI,ESI
JZ 0x00036a37
TEST byte ptr [EDI + 0xd1],0x4
JZ 0x00036a40
POP EBX
POP ESI
POP EDI
RET
SUB ESP,0xc
PUSH EDI
CALL 0x00014110
ADD ESP,0x10
TEST byte ptr [EDI + 0xd1],0x10
JZ 0x00036a63
MOV EDX,dword ptr [EDI + 0x2ac]
TEST EDX,EDX
JNZ 0x00036bc0
MOVZX EAX,byte ptr [ESI + 0x1c]
PUSH EAX
MOVZX EAX,byte ptr [ESI + 0x1b]
PUSH EAX
MOVZX EAX,byte ptr [ESI + 0x1a]
PUSH EAX
MOVZX EAX,byte ptr [ESI + 0x19]
PUSH EAX
MOVZX EAX,byte ptr [ESI + 0x18]
PUSH EAX
PUSH dword ptr [ESI + 0x4]
PUSH dword ptr [ESI]
PUSH EDI
CALL 0x0003a950
MOV EAX,dword ptr [ESI + 0x8]
ADD ESP,0x20
TEST EAX,0x20000
JNZ 0x00036b70
MOVZX EDX,word ptr [ESI + 0x72]
TEST DX,DX
JS 0x00036b30
TEST DL,0x8
JZ 0x00036aae
TEST AL,0x1
JNZ 0x00036b10
MOV ECX,EAX
AND ECX,0x800
TEST AH,0x10
JZ 0x00036b90
TEST ECX,ECX
JNZ 0x00036be8
SUB ESP,0x4
PUSH dword ptr [ESI + 0x78]
PUSH dword ptr [ESI + 0x74]
PUSH EDI
CALL 0x0003b150
ADD ESP,0x10
TEST byte ptr [ESI + 0x8],0x2
JNZ 0x00036b9c
MOVZX EDX,word ptr [ESI + 0x72]
TEST DX,DX
JS 0x00036b34
AND EDX,0x10
JZ 0x00036b34
TEST byte ptr [ESI + 0x8],0x4
JZ 0x00036b34
SUB ESP,0x8
LEA EAX,[ESI + 0x2c]
PUSH EAX
PUSH EDI
CALL 0x0003b7f0
ADD ESP,0x10
JMP 0x00036b34
SUB ESP,0x8
PUSH dword ptr [ESI + 0x28]
PUSH EDI
CALL 0x0003af90
MOVZX EDX,word ptr [ESI + 0x72]
ADD ESP,0x10
MOV EAX,dword ptr [ESI + 0x8]
TEST DX,DX
JNS 0x00036aae
LEA ESI,[ESI]
NOP
TEST AL,0x2
JNZ 0x00036b9c
MOV EAX,dword ptr [ESI + 0xfc]
TEST EAX,EAX
JZ 0x00036b59
SUB ESP,0xc
LEA ECX,[ESI + 0xfc]
LEA EDX,[ESI + 0xf8]
MOV EAX,EDI
PUSH 0x1
CALL 0x00036220
ADD ESP,0x10
OR dword ptr [EDI + 0xd0],0x400
POP EBX
POP ESI
POP EDI
RET
SUB ESP,0x4
PUSH dword ptr [ESI + 0x11c]
PUSH dword ptr [ESI + 0x118]
PUSH EDI
CALL 0x0003d240
MOV EAX,dword ptr [ESI + 0x8]
ADD ESP,0x10
JMP 0x00036a98
TEST ECX,ECX
JNZ 0x00036c00
TEST AL,0x2
JZ 0x00036aec
MOVZX EAX,byte ptr [ESI + 0x19]
SUB ESP,0x4
PUSH EAX
LEA EAX,[ESI + 0x94]
PUSH EAX
PUSH EDI
CALL 0x0003b620
ADD ESP,0x10
JMP 0x00036ae3
SUB ESP,0x8
LEA EAX,[EBX + 0xfffec674]
PUSH EAX
PUSH EDI
CALL 0x000143a0
ADD ESP,0x10
MOV dword ptr [EDI + 0x2ac],0x0
JMP 0x00036a63
SUB ESP,0x8
LEA EAX,[EBX + 0xfffeff74]
PUSH EAX
PUSH EDI
CALL 0x0001ae70
ADD ESP,0x10
JMP 0x00036ac7
MOVZX EAX,word ptr [ESI + 0x70]
SUB ESP,0x8
PUSH EAX
PUSH EDI
CALL 0x0003b060
ADD ESP,0x10
JMP 0x00036ad9
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid png_write_info_before_PLTE(int param_1,undefined4 *param_2)\n\n{\n  uint uVar1;\n  ushort uVar2;\n  \n  if (((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0))\n  {\n    return;\n  }\n  png_write_sig(param_1);\n  if (((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0)) {\n    png_warning(param_1,"MNG features are not allowed in a PNG datastream");\n    *(undefined4 *)(param_1 + 0x2ac) = 0;\n  }\n  FUN_0003a950(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7));\n  uVar1 = param_2[2];\n  if ((uVar1 & 0x20000) != 0) {\n    FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);\n    uVar1 = param_2[2];\n  }\n  uVar2 = *(ushort *)((int)param_2 + 0x72);\n  if ((short)uVar2 < 0) {\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));\nLAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }\n  else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }\n  if (((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0)) {\n    FUN_0003b7f0(param_1,param_2 + 0xb);\n  }\nLAB_00036b34:\n  if (param_2[0x3f] != 0) {\n    FUN_00036220(1);\n  }\n  *(uint *)(param_1 + 0xd0) = *(uint *)(param_1 + 0xd0) | 0x400;\n  return;\n}\n\n" comment (function_definition "void png_write_info_before_PLTE(int param_1,undefined4 *param_2)\n\n{\n  uint uVar1;\n  ushort uVar2;\n  \n  if (((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0))\n  {\n    return;\n  }\n  png_write_sig(param_1);\n  if (((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0)) {\n    png_warning(param_1,"MNG features are not allowed in a PNG datastream");\n    *(undefined4 *)(param_1 + 0x2ac) = 0;\n  }\n  FUN_0003a950(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7));\n  uVar1 = param_2[2];\n  if ((uVar1 & 0x20000) != 0) {\n    FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);\n    uVar1 = param_2[2];\n  }\n  uVar2 = *(ushort *)((int)param_2 + 0x72);\n  if ((short)uVar2 < 0) {\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));\nLAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }\n  else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }\n  if (((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0)) {\n    FUN_0003b7f0(param_1,param_2 + 0xb);\n  }\nLAB_00036b34:\n  if (param_2[0x3f] != 0) {\n    FUN_00036220(1);\n  }\n  *(uint *)(param_1 + 0xd0) = *(uint *)(param_1 + 0xd0) | 0x400;\n  return;\n}" primitive_type (function_declarator "png_write_info_before_PLTE(int param_1,undefined4 *param_2)" identifier (parameter_list "(int param_1,undefined4 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  ushort uVar2;\n  \n  if (((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0))\n  {\n    return;\n  }\n  png_write_sig(param_1);\n  if (((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0)) {\n    png_warning(param_1,"MNG features are not allowed in a PNG datastream");\n    *(undefined4 *)(param_1 + 0x2ac) = 0;\n  }\n  FUN_0003a950(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7));\n  uVar1 = param_2[2];\n  if ((uVar1 & 0x20000) != 0) {\n    FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);\n    uVar1 = param_2[2];\n  }\n  uVar2 = *(ushort *)((int)param_2 + 0x72);\n  if ((short)uVar2 < 0) {\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));\nLAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }\n  else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }\n  if (((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0)) {\n    FUN_0003b7f0(param_1,param_2 + 0xb);\n  }\nLAB_00036b34:\n  if (param_2[0x3f] != 0) {\n    FUN_00036220(1);\n  }\n  *(uint *)(param_1 + 0xd0) = *(uint *)(param_1 + 0xd0) | 0x400;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (if_statement "if (((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0))\n  {\n    return;\n  }" if (parenthesized_expression "(((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0))" ( (binary_expression "((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0)" (parenthesized_expression "((param_1 == 0) || (param_2 == (undefined4 *)0x0))" ( (binary_expression "(param_1 == 0) || (param_2 == (undefined4 *)0x0)" (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) || (parenthesized_expression "(param_2 == (undefined4 *)0x0)" ( (binary_expression "param_2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "((*(byte *)(param_1 + 0xd1) & 4) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0xd1) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xd1) & 4)" ( (binary_expression "*(byte *)(param_1 + 0xd1) & 4" (pointer_expression "*(byte *)(param_1 + 0xd1)" * (cast_expression "(byte *)(param_1 + 0xd1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd1)" ( (binary_expression "param_1 + 0xd1" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "png_write_sig(param_1);" (call_expression "png_write_sig(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if (((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0)) {\n    png_warning(param_1,"MNG features are not allowed in a PNG datastream");\n    *(undefined4 *)(param_1 + 0x2ac) = 0;\n  }" if (parenthesized_expression "(((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0))" ( (binary_expression "((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0)" (parenthesized_expression "((*(byte *)(param_1 + 0xd1) & 0x10) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0xd1) & 0x10) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xd1) & 0x10)" ( (binary_expression "*(byte *)(param_1 + 0xd1) & 0x10" (pointer_expression "*(byte *)(param_1 + 0xd1)" * (cast_expression "(byte *)(param_1 + 0xd1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd1)" ( (binary_expression "param_1 + 0xd1" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(*(int *)(param_1 + 0x2ac) != 0)" ( (binary_expression "*(int *)(param_1 + 0x2ac) != 0" (pointer_expression "*(int *)(param_1 + 0x2ac)" * (cast_expression "(int *)(param_1 + 0x2ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2ac)" ( (binary_expression "param_1 + 0x2ac" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n    png_warning(param_1,"MNG features are not allowed in a PNG datastream");\n    *(undefined4 *)(param_1 + 0x2ac) = 0;\n  }" { (expression_statement "png_warning(param_1,"MNG features are not allowed in a PNG datastream");" (call_expression "png_warning(param_1,"MNG features are not allowed in a PNG datastream")" identifier (argument_list "(param_1,"MNG features are not allowed in a PNG datastream")" ( identifier , (string_literal ""MNG features are not allowed in a PNG datastream"" " string_content ") ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x2ac) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x2ac) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x2ac)" * (cast_expression "(undefined4 *)(param_1 + 0x2ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2ac)" ( (binary_expression "param_1 + 0x2ac" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "FUN_0003a950(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7));" (call_expression "FUN_0003a950(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7))" identifier (argument_list "(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7))" ( identifier , (pointer_expression "*param_2" * identifier) , (subscript_expression "param_2[1]" identifier [ number_literal ]) , (pointer_expression "*(undefined1 *)(param_2 + 6)" * (cast_expression "(undefined1 *)(param_2 + 6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) )))) , (pointer_expression "*(undefined1 *)((int)param_2 + 0x19)" * (cast_expression "(undefined1 *)((int)param_2 + 0x19)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x19)" ( (binary_expression "(int)param_2 + 0x19" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined1 *)((int)param_2 + 0x1a)" * (cast_expression "(undefined1 *)((int)param_2 + 0x1a)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x1a)" ( (binary_expression "(int)param_2 + 0x1a" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined1 *)((int)param_2 + 0x1b)" * (cast_expression "(undefined1 *)((int)param_2 + 0x1b)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x1b)" ( (binary_expression "(int)param_2 + 0x1b" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined1 *)(param_2 + 7)" * (cast_expression "(undefined1 *)(param_2 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) )))) ))) ;) (expression_statement "uVar1 = param_2[2];" (assignment_expression "uVar1 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (if_statement "if ((uVar1 & 0x20000) != 0) {\n    FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);\n    uVar1 = param_2[2];\n  }" if (parenthesized_expression "((uVar1 & 0x20000) != 0)" ( (binary_expression "(uVar1 & 0x20000) != 0" (parenthesized_expression "(uVar1 & 0x20000)" ( (binary_expression "uVar1 & 0x20000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);\n    uVar1 = param_2[2];\n  }" { (expression_statement "FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);" (call_expression "FUN_0003d240(param_1,param_2[0x46],param_2[0x47])" identifier (argument_list "(param_1,param_2[0x46],param_2[0x47])" ( identifier , (subscript_expression "param_2[0x46]" identifier [ number_literal ]) , (subscript_expression "param_2[0x47]" identifier [ number_literal ]) ))) ;) (expression_statement "uVar1 = param_2[2];" (assignment_expression "uVar1 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) })) (expression_statement "uVar2 = *(ushort *)((int)param_2 + 0x72);" (assignment_expression "uVar2 = *(ushort *)((int)param_2 + 0x72)" identifier = (pointer_expression "*(ushort *)((int)param_2 + 0x72)" * (cast_expression "(ushort *)((int)param_2 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x72)" ( (binary_expression "(int)param_2 + 0x72" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if ((short)uVar2 < 0) {\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));\nLAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }\n  else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }" if (parenthesized_expression "((short)uVar2 < 0)" ( (binary_expression "(short)uVar2 < 0" (cast_expression "(short)uVar2" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));\nLAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }" { (labeled_statement "LAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;" statement_identifier : (if_statement "if ((uVar1 & 2) == 0) goto LAB_00036b34;" if (parenthesized_expression "((uVar1 & 2) == 0)" ( (binary_expression "(uVar1 & 2) == 0" (parenthesized_expression "(uVar1 & 2)" ( (binary_expression "uVar1 & 2" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00036b34;" goto statement_identifier ;))) (labeled_statement "LAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));" statement_identifier : (expression_statement "FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));" (call_expression "FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19))" identifier (argument_list "(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19))" ( identifier , (binary_expression "param_2 + 0x25" identifier + number_literal) , (pointer_expression "*(undefined1 *)((int)param_2 + 0x19)" * (cast_expression "(undefined1 *)((int)param_2 + 0x19)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x19)" ( (binary_expression "(int)param_2 + 0x19" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;)) (labeled_statement "LAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);" statement_identifier : (expression_statement "uVar2 = *(ushort *)((int)param_2 + 0x72);" (assignment_expression "uVar2 = *(ushort *)((int)param_2 + 0x72)" identifier = (pointer_expression "*(ushort *)((int)param_2 + 0x72)" * (cast_expression "(ushort *)((int)param_2 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x72)" ( (binary_expression "(int)param_2 + 0x72" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) (if_statement "if ((short)uVar2 < 0) goto LAB_00036b34;" if (parenthesized_expression "((short)uVar2 < 0)" ( (binary_expression "(short)uVar2 < 0" (cast_expression "(short)uVar2" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) < number_literal) )) (goto_statement "goto LAB_00036b34;" goto statement_identifier ;)) }) (else_clause "else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }" else (compound_statement "{\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }" { (if_statement "if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }" if (parenthesized_expression "(((uVar2 & 8) != 0) && ((uVar1 & 1) != 0))" ( (binary_expression "((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)" (parenthesized_expression "((uVar2 & 8) != 0)" ( (binary_expression "(uVar2 & 8) != 0" (parenthesized_expression "(uVar2 & 8)" ( (binary_expression "uVar2 & 8" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((uVar1 & 1) != 0)" ( (binary_expression "(uVar1 & 1) != 0" (parenthesized_expression "(uVar1 & 1)" ( (binary_expression "uVar1 & 1" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }" { (expression_statement "FUN_0003af90(param_1,param_2[10]);" (call_expression "FUN_0003af90(param_1,param_2[10])" identifier (argument_list "(param_1,param_2[10])" ( identifier , (subscript_expression "param_2[10]" identifier [ number_literal ]) ))) ;) (expression_statement "uVar2 = *(ushort *)((int)param_2 + 0x72);" (assignment_expression "uVar2 = *(ushort *)((int)param_2 + 0x72)" identifier = (pointer_expression "*(ushort *)((int)param_2 + 0x72)" * (cast_expression "(ushort *)((int)param_2 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x72)" ( (binary_expression "(int)param_2 + 0x72" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar1 = param_2[2];" (assignment_expression "uVar1 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (if_statement "if ((short)uVar2 < 0) goto LAB_00036b30;" if (parenthesized_expression "((short)uVar2 < 0)" ( (binary_expression "(short)uVar2 < 0" (cast_expression "(short)uVar2" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) < number_literal) )) (goto_statement "goto LAB_00036b30;" goto statement_identifier ;)) })) (if_statement "if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }" if (parenthesized_expression "((uVar1 & 0x1000) != 0)" ( (binary_expression "(uVar1 & 0x1000) != 0" (parenthesized_expression "(uVar1 & 0x1000)" ( (binary_expression "uVar1 & 0x1000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }" { (if_statement "if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }" if (parenthesized_expression "((uVar1 & 0x800) != 0)" ( (binary_expression "(uVar1 & 0x800) != 0" (parenthesized_expression "(uVar1 & 0x800)" ( (binary_expression "uVar1 & 0x800" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }" { (expression_statement "FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");" (call_expression "FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead")" identifier (argument_list "(param_1,"profile matches sRGB but writing iCCP instead")" ( identifier , (string_literal ""profile matches sRGB but writing iCCP instead"" " string_content ") ))) ;) })) (expression_statement "FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);" (call_expression "FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e])" identifier (argument_list "(param_1,param_2[0x1d],param_2[0x1e])" ( identifier , (subscript_expression "param_2[0x1d]" identifier [ number_literal ]) , (subscript_expression "param_2[0x1e]" identifier [ number_literal ]) ))) ;) (labeled_statement "LAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;" statement_identifier : (if_statement "if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;" if (parenthesized_expression "((*(byte *)(param_2 + 2) & 2) != 0)" ( (binary_expression "(*(byte *)(param_2 + 2) & 2) != 0" (parenthesized_expression "(*(byte *)(param_2 + 2) & 2)" ( (binary_expression "*(byte *)(param_2 + 2) & 2" (pointer_expression "*(byte *)(param_2 + 2)" * (cast_expression "(byte *)(param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00036b9c;" goto statement_identifier ;))) (goto_statement "goto LAB_00036ae3;" goto statement_identifier ;) })) (if_statement "if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }" if (parenthesized_expression "((uVar1 & 0x800) != 0)" ( (binary_expression "(uVar1 & 0x800) != 0" (parenthesized_expression "(uVar1 & 0x800)" ( (binary_expression "uVar1 & 0x800" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }" { (expression_statement "FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));" (call_expression "FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c))" identifier (argument_list "(param_1,*(undefined2 *)(param_2 + 0x1c))" ( identifier , (pointer_expression "*(undefined2 *)(param_2 + 0x1c)" * (cast_expression "(undefined2 *)(param_2 + 0x1c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) ))) ;) (goto_statement "goto LAB_00036ad9;" goto statement_identifier ;) })) (if_statement "if ((uVar1 & 2) != 0) goto LAB_00036b9c;" if (parenthesized_expression "((uVar1 & 2) != 0)" ( (binary_expression "(uVar1 & 2) != 0" (parenthesized_expression "(uVar1 & 2)" ( (binary_expression "uVar1 & 2" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00036b9c;" goto statement_identifier ;)) }))) (if_statement "if (((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0)) {\n    FUN_0003b7f0(param_1,param_2 + 0xb);\n  }" if (parenthesized_expression "(((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0))" ( (binary_expression "((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0)" (parenthesized_expression "((uVar2 & 0x10) != 0)" ( (binary_expression "(uVar2 & 0x10) != 0" (parenthesized_expression "(uVar2 & 0x10)" ( (binary_expression "uVar2 & 0x10" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)(param_2 + 2) & 4) != 0)" ( (binary_expression "(*(byte *)(param_2 + 2) & 4) != 0" (parenthesized_expression "(*(byte *)(param_2 + 2) & 4)" ( (binary_expression "*(byte *)(param_2 + 2) & 4" (pointer_expression "*(byte *)(param_2 + 2)" * (cast_expression "(byte *)(param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    FUN_0003b7f0(param_1,param_2 + 0xb);\n  }" { (expression_statement "FUN_0003b7f0(param_1,param_2 + 0xb);" (call_expression "FUN_0003b7f0(param_1,param_2 + 0xb)" identifier (argument_list "(param_1,param_2 + 0xb)" ( identifier , (binary_expression "param_2 + 0xb" identifier + number_literal) ))) ;) })) (labeled_statement "LAB_00036b34:\n  if (param_2[0x3f] != 0) {\n    FUN_00036220(1);\n  }" statement_identifier : (if_statement "if (param_2[0x3f] != 0) {\n    FUN_00036220(1);\n  }" if (parenthesized_expression "(param_2[0x3f] != 0)" ( (binary_expression "param_2[0x3f] != 0" (subscript_expression "param_2[0x3f]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    FUN_00036220(1);\n  }" { (expression_statement "FUN_00036220(1);" (call_expression "FUN_00036220(1)" identifier (argument_list "(1)" ( number_literal ))) ;) }))) (expression_statement "*(uint *)(param_1 + 0xd0) = *(uint *)(param_1 + 0xd0) | 0x400;" (assignment_expression "*(uint *)(param_1 + 0xd0) = *(uint *)(param_1 + 0xd0) | 0x400" (pointer_expression "*(uint *)(param_1 + 0xd0)" * (cast_expression "(uint *)(param_1 + 0xd0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd0)" ( (binary_expression "param_1 + 0xd0" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 0xd0) | 0x400" (pointer_expression "*(uint *)(param_1 + 0xd0)" * (cast_expression "(uint *)(param_1 + 0xd0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd0)" ( (binary_expression "param_1 + 0xd0" identifier + number_literal) )))) | number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid png_write_info_before_PLTE(png_structrp png_ptr,png_const_inforp info_ptr)\n\n{\n  uint uVar1;\n  ushort uVar2;\n  \n  if (((png_ptr == (png_structrp)0x0) || (info_ptr == (png_const_inforp)0x0)) ||\n     ((png_ptr->mode & 0x400) != 0)) {\n    return;\n  }\n  png_write_sig(png_ptr);\n  if (((png_ptr->mode & 0x1000) != 0) && (png_ptr->mng_features_permitted != 0)) {\n    png_warning(png_ptr,"MNG features are not allowed in a PNG datastream");\n    png_ptr->mng_features_permitted = 0;\n  }\n  png_write_IHDR(png_ptr,info_ptr->width,info_ptr->height,(uint)info_ptr->bit_depth,\n                 (uint)info_ptr->color_type,(uint)info_ptr->compression_type,\n                 (uint)info_ptr->filter_type,(uint)info_ptr->interlace_type);\n  uVar1 = info_ptr->valid;\n  if ((uVar1 & 0x20000) != 0) {\n    png_write_acTL(png_ptr,info_ptr->num_frames,info_ptr->num_plays);\n    uVar1 = info_ptr->valid;\n  }\n  uVar2 = (info_ptr->colorspace).flags;\n  if ((short)uVar2 < 0) {\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    png_write_sBIT(png_ptr,&info_ptr->sig_bit,(uint)info_ptr->color_type);\nLAB_00036ae3:\n    uVar2 = (info_ptr->colorspace).flags;\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }\n  else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      png_write_gAMA_fixed(png_ptr,(info_ptr->colorspace).gamma);\n      uVar2 = (info_ptr->colorspace).flags;\n      uVar1 = info_ptr->valid;\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        png_app_warning(png_ptr,"profile matches sRGB but writing iCCP instead");\n      }\n      png_write_iCCP(png_ptr,info_ptr->iccp_name,info_ptr->iccp_profile);\nLAB_00036ad9:\n      if ((info_ptr->valid & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      png_write_sRGB(png_ptr,(uint)(info_ptr->colorspace).rendering_intent);\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }\n  if (((uVar2 & 0x10) != 0) && ((info_ptr->valid & 4) != 0)) {\n    png_write_cHRM_fixed(png_ptr,&(info_ptr->colorspace).end_points_xy);\n  }\nLAB_00036b34:\n  if (info_ptr->unknown_chunks_num != 0) {\n    write_unknown_chunks\n              (png_ptr,(png_const_inforp)&info_ptr->unknown_chunks,\n               (uint)&info_ptr->unknown_chunks_num,(png_const_inforp)0x1);\n  }\n  png_ptr->mode = png_ptr->mode | 0x400;\n  return;\n}\n\n" comment (function_definition "void png_write_info_before_PLTE(png_structrp png_ptr,png_const_inforp info_ptr)\n\n{\n  uint uVar1;\n  ushort uVar2;\n  \n  if (((png_ptr == (png_structrp)0x0) || (info_ptr == (png_const_inforp)0x0)) ||\n     ((png_ptr->mode & 0x400) != 0)) {\n    return;\n  }\n  png_write_sig(png_ptr);\n  if (((png_ptr->mode & 0x1000) != 0) && (png_ptr->mng_features_permitted != 0)) {\n    png_warning(png_ptr,"MNG features are not allowed in a PNG datastream");\n    png_ptr->mng_features_permitted = 0;\n  }\n  png_write_IHDR(png_ptr,info_ptr->width,info_ptr->height,(uint)info_ptr->bit_depth,\n                 (uint)info_ptr->color_type,(uint)info_ptr->compression_type,\n                 (uint)info_ptr->filter_type,(uint)info_ptr->interlace_type);\n  uVar1 = info_ptr->valid;\n  if ((uVar1 & 0x20000) != 0) {\n    png_write_acTL(png_ptr,info_ptr->num_frames,info_ptr->num_plays);\n    uVar1 = info_ptr->valid;\n  }\n  uVar2 = (info_ptr->colorspace).flags;\n  if ((short)uVar2 < 0) {\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    png_write_sBIT(png_ptr,&info_ptr->sig_bit,(uint)info_ptr->color_type);\nLAB_00036ae3:\n    uVar2 = (info_ptr->colorspace).flags;\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }\n  else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      png_write_gAMA_fixed(png_ptr,(info_ptr->colorspace).gamma);\n      uVar2 = (info_ptr->colorspace).flags;\n      uVar1 = info_ptr->valid;\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        png_app_warning(png_ptr,"profile matches sRGB but writing iCCP instead");\n      }\n      png_write_iCCP(png_ptr,info_ptr->iccp_name,info_ptr->iccp_profile);\nLAB_00036ad9:\n      if ((info_ptr->valid & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      png_write_sRGB(png_ptr,(uint)(info_ptr->colorspace).rendering_intent);\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }\n  if (((uVar2 & 0x10) != 0) && ((info_ptr->valid & 4) != 0)) {\n    png_write_cHRM_fixed(png_ptr,&(info_ptr->colorspace).end_points_xy);\n  }\nLAB_00036b34:\n  if (info_ptr->unknown_chunks_num != 0) {\n    write_unknown_chunks\n              (png_ptr,(png_const_inforp)&info_ptr->unknown_chunks,\n               (uint)&info_ptr->unknown_chunks_num,(png_const_inforp)0x1);\n  }\n  png_ptr->mode = png_ptr->mode | 0x400;\n  return;\n}" primitive_type (function_declarator "png_write_info_before_PLTE(png_structrp png_ptr,png_const_inforp info_ptr)" identifier (parameter_list "(png_structrp png_ptr,png_const_inforp info_ptr)" ( (parameter_declaration "png_structrp png_ptr" type_identifier identifier) , (parameter_declaration "png_const_inforp info_ptr" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  ushort uVar2;\n  \n  if (((png_ptr == (png_structrp)0x0) || (info_ptr == (png_const_inforp)0x0)) ||\n     ((png_ptr->mode & 0x400) != 0)) {\n    return;\n  }\n  png_write_sig(png_ptr);\n  if (((png_ptr->mode & 0x1000) != 0) && (png_ptr->mng_features_permitted != 0)) {\n    png_warning(png_ptr,"MNG features are not allowed in a PNG datastream");\n    png_ptr->mng_features_permitted = 0;\n  }\n  png_write_IHDR(png_ptr,info_ptr->width,info_ptr->height,(uint)info_ptr->bit_depth,\n                 (uint)info_ptr->color_type,(uint)info_ptr->compression_type,\n                 (uint)info_ptr->filter_type,(uint)info_ptr->interlace_type);\n  uVar1 = info_ptr->valid;\n  if ((uVar1 & 0x20000) != 0) {\n    png_write_acTL(png_ptr,info_ptr->num_frames,info_ptr->num_plays);\n    uVar1 = info_ptr->valid;\n  }\n  uVar2 = (info_ptr->colorspace).flags;\n  if ((short)uVar2 < 0) {\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    png_write_sBIT(png_ptr,&info_ptr->sig_bit,(uint)info_ptr->color_type);\nLAB_00036ae3:\n    uVar2 = (info_ptr->colorspace).flags;\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }\n  else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      png_write_gAMA_fixed(png_ptr,(info_ptr->colorspace).gamma);\n      uVar2 = (info_ptr->colorspace).flags;\n      uVar1 = info_ptr->valid;\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        png_app_warning(png_ptr,"profile matches sRGB but writing iCCP instead");\n      }\n      png_write_iCCP(png_ptr,info_ptr->iccp_name,info_ptr->iccp_profile);\nLAB_00036ad9:\n      if ((info_ptr->valid & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      png_write_sRGB(png_ptr,(uint)(info_ptr->colorspace).rendering_intent);\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }\n  if (((uVar2 & 0x10) != 0) && ((info_ptr->valid & 4) != 0)) {\n    png_write_cHRM_fixed(png_ptr,&(info_ptr->colorspace).end_points_xy);\n  }\nLAB_00036b34:\n  if (info_ptr->unknown_chunks_num != 0) {\n    write_unknown_chunks\n              (png_ptr,(png_const_inforp)&info_ptr->unknown_chunks,\n               (uint)&info_ptr->unknown_chunks_num,(png_const_inforp)0x1);\n  }\n  png_ptr->mode = png_ptr->mode | 0x400;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (if_statement "if (((png_ptr == (png_structrp)0x0) || (info_ptr == (png_const_inforp)0x0)) ||\n     ((png_ptr->mode & 0x400) != 0)) {\n    return;\n  }" if (parenthesized_expression "(((png_ptr == (png_structrp)0x0) || (info_ptr == (png_const_inforp)0x0)) ||\n     ((png_ptr->mode & 0x400) != 0))" ( (binary_expression "((png_ptr == (png_structrp)0x0) || (info_ptr == (png_const_inforp)0x0)) ||\n     ((png_ptr->mode & 0x400) != 0)" (parenthesized_expression "((png_ptr == (png_structrp)0x0) || (info_ptr == (png_const_inforp)0x0))" ( (binary_expression "(png_ptr == (png_structrp)0x0) || (info_ptr == (png_const_inforp)0x0)" (parenthesized_expression "(png_ptr == (png_structrp)0x0)" ( (binary_expression "png_ptr == (png_structrp)0x0" identifier == (cast_expression "(png_structrp)0x0" ( (type_descriptor "png_structrp" type_identifier) ) number_literal)) )) || (parenthesized_expression "(info_ptr == (png_const_inforp)0x0)" ( (binary_expression "info_ptr == (png_const_inforp)0x0" identifier == (cast_expression "(png_const_inforp)0x0" ( (type_descriptor "png_const_inforp" type_identifier) ) number_literal)) ))) )) || (parenthesized_expression "((png_ptr->mode & 0x400) != 0)" ( (binary_expression "(png_ptr->mode & 0x400) != 0" (parenthesized_expression "(png_ptr->mode & 0x400)" ( (binary_expression "png_ptr->mode & 0x400" (field_expression "png_ptr->mode" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "png_write_sig(png_ptr);" (call_expression "png_write_sig(png_ptr)" identifier (argument_list "(png_ptr)" ( identifier ))) ;) (if_statement "if (((png_ptr->mode & 0x1000) != 0) && (png_ptr->mng_features_permitted != 0)) {\n    png_warning(png_ptr,"MNG features are not allowed in a PNG datastream");\n    png_ptr->mng_features_permitted = 0;\n  }" if (parenthesized_expression "(((png_ptr->mode & 0x1000) != 0) && (png_ptr->mng_features_permitted != 0))" ( (binary_expression "((png_ptr->mode & 0x1000) != 0) && (png_ptr->mng_features_permitted != 0)" (parenthesized_expression "((png_ptr->mode & 0x1000) != 0)" ( (binary_expression "(png_ptr->mode & 0x1000) != 0" (parenthesized_expression "(png_ptr->mode & 0x1000)" ( (binary_expression "png_ptr->mode & 0x1000" (field_expression "png_ptr->mode" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(png_ptr->mng_features_permitted != 0)" ( (binary_expression "png_ptr->mng_features_permitted != 0" (field_expression "png_ptr->mng_features_permitted" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n    png_warning(png_ptr,"MNG features are not allowed in a PNG datastream");\n    png_ptr->mng_features_permitted = 0;\n  }" { (expression_statement "png_warning(png_ptr,"MNG features are not allowed in a PNG datastream");" (call_expression "png_warning(png_ptr,"MNG features are not allowed in a PNG datastream")" identifier (argument_list "(png_ptr,"MNG features are not allowed in a PNG datastream")" ( identifier , (string_literal ""MNG features are not allowed in a PNG datastream"" " string_content ") ))) ;) (expression_statement "png_ptr->mng_features_permitted = 0;" (assignment_expression "png_ptr->mng_features_permitted = 0" (field_expression "png_ptr->mng_features_permitted" identifier -> field_identifier) = number_literal) ;) })) (expression_statement "png_write_IHDR(png_ptr,info_ptr->width,info_ptr->height,(uint)info_ptr->bit_depth,\n                 (uint)info_ptr->color_type,(uint)info_ptr->compression_type,\n                 (uint)info_ptr->filter_type,(uint)info_ptr->interlace_type);" (call_expression "png_write_IHDR(png_ptr,info_ptr->width,info_ptr->height,(uint)info_ptr->bit_depth,\n                 (uint)info_ptr->color_type,(uint)info_ptr->compression_type,\n                 (uint)info_ptr->filter_type,(uint)info_ptr->interlace_type)" identifier (argument_list "(png_ptr,info_ptr->width,info_ptr->height,(uint)info_ptr->bit_depth,\n                 (uint)info_ptr->color_type,(uint)info_ptr->compression_type,\n                 (uint)info_ptr->filter_type,(uint)info_ptr->interlace_type)" ( identifier , (field_expression "info_ptr->width" identifier -> field_identifier) , (field_expression "info_ptr->height" identifier -> field_identifier) , (cast_expression "(uint)info_ptr->bit_depth" ( (type_descriptor "uint" type_identifier) ) (field_expression "info_ptr->bit_depth" identifier -> field_identifier)) , (cast_expression "(uint)info_ptr->color_type" ( (type_descriptor "uint" type_identifier) ) (field_expression "info_ptr->color_type" identifier -> field_identifier)) , (cast_expression "(uint)info_ptr->compression_type" ( (type_descriptor "uint" type_identifier) ) (field_expression "info_ptr->compression_type" identifier -> field_identifier)) , (cast_expression "(uint)info_ptr->filter_type" ( (type_descriptor "uint" type_identifier) ) (field_expression "info_ptr->filter_type" identifier -> field_identifier)) , (cast_expression "(uint)info_ptr->interlace_type" ( (type_descriptor "uint" type_identifier) ) (field_expression "info_ptr->interlace_type" identifier -> field_identifier)) ))) ;) (expression_statement "uVar1 = info_ptr->valid;" (assignment_expression "uVar1 = info_ptr->valid" identifier = (field_expression "info_ptr->valid" identifier -> field_identifier)) ;) (if_statement "if ((uVar1 & 0x20000) != 0) {\n    png_write_acTL(png_ptr,info_ptr->num_frames,info_ptr->num_plays);\n    uVar1 = info_ptr->valid;\n  }" if (parenthesized_expression "((uVar1 & 0x20000) != 0)" ( (binary_expression "(uVar1 & 0x20000) != 0" (parenthesized_expression "(uVar1 & 0x20000)" ( (binary_expression "uVar1 & 0x20000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    png_write_acTL(png_ptr,info_ptr->num_frames,info_ptr->num_plays);\n    uVar1 = info_ptr->valid;\n  }" { (expression_statement "png_write_acTL(png_ptr,info_ptr->num_frames,info_ptr->num_plays);" (call_expression "png_write_acTL(png_ptr,info_ptr->num_frames,info_ptr->num_plays)" identifier (argument_list "(png_ptr,info_ptr->num_frames,info_ptr->num_plays)" ( identifier , (field_expression "info_ptr->num_frames" identifier -> field_identifier) , (field_expression "info_ptr->num_plays" identifier -> field_identifier) ))) ;) (expression_statement "uVar1 = info_ptr->valid;" (assignment_expression "uVar1 = info_ptr->valid" identifier = (field_expression "info_ptr->valid" identifier -> field_identifier)) ;) })) (expression_statement "uVar2 = (info_ptr->colorspace).flags;" (assignment_expression "uVar2 = (info_ptr->colorspace).flags" identifier = (field_expression "(info_ptr->colorspace).flags" (parenthesized_expression "(info_ptr->colorspace)" ( (field_expression "info_ptr->colorspace" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((short)uVar2 < 0) {\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    png_write_sBIT(png_ptr,&info_ptr->sig_bit,(uint)info_ptr->color_type);\nLAB_00036ae3:\n    uVar2 = (info_ptr->colorspace).flags;\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }\n  else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      png_write_gAMA_fixed(png_ptr,(info_ptr->colorspace).gamma);\n      uVar2 = (info_ptr->colorspace).flags;\n      uVar1 = info_ptr->valid;\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        png_app_warning(png_ptr,"profile matches sRGB but writing iCCP instead");\n      }\n      png_write_iCCP(png_ptr,info_ptr->iccp_name,info_ptr->iccp_profile);\nLAB_00036ad9:\n      if ((info_ptr->valid & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      png_write_sRGB(png_ptr,(uint)(info_ptr->colorspace).rendering_intent);\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }" if (parenthesized_expression "((short)uVar2 < 0)" ( (binary_expression "(short)uVar2 < 0" (cast_expression "(short)uVar2" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    png_write_sBIT(png_ptr,&info_ptr->sig_bit,(uint)info_ptr->color_type);\nLAB_00036ae3:\n    uVar2 = (info_ptr->colorspace).flags;\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }" { (labeled_statement "LAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;" statement_identifier : (if_statement "if ((uVar1 & 2) == 0) goto LAB_00036b34;" if (parenthesized_expression "((uVar1 & 2) == 0)" ( (binary_expression "(uVar1 & 2) == 0" (parenthesized_expression "(uVar1 & 2)" ( (binary_expression "uVar1 & 2" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00036b34;" goto statement_identifier ;))) (labeled_statement "LAB_00036b9c:\n    png_write_sBIT(png_ptr,&info_ptr->sig_bit,(uint)info_ptr->color_type);" statement_identifier : (expression_statement "png_write_sBIT(png_ptr,&info_ptr->sig_bit,(uint)info_ptr->color_type);" (call_expression "png_write_sBIT(png_ptr,&info_ptr->sig_bit,(uint)info_ptr->color_type)" identifier (argument_list "(png_ptr,&info_ptr->sig_bit,(uint)info_ptr->color_type)" ( identifier , (pointer_expression "&info_ptr->sig_bit" & (field_expression "info_ptr->sig_bit" identifier -> field_identifier)) , (cast_expression "(uint)info_ptr->color_type" ( (type_descriptor "uint" type_identifier) ) (field_expression "info_ptr->color_type" identifier -> field_identifier)) ))) ;)) (labeled_statement "LAB_00036ae3:\n    uVar2 = (info_ptr->colorspace).flags;" statement_identifier : (expression_statement "uVar2 = (info_ptr->colorspace).flags;" (assignment_expression "uVar2 = (info_ptr->colorspace).flags" identifier = (field_expression "(info_ptr->colorspace).flags" (parenthesized_expression "(info_ptr->colorspace)" ( (field_expression "info_ptr->colorspace" identifier -> field_identifier) )) . field_identifier)) ;)) (if_statement "if ((short)uVar2 < 0) goto LAB_00036b34;" if (parenthesized_expression "((short)uVar2 < 0)" ( (binary_expression "(short)uVar2 < 0" (cast_expression "(short)uVar2" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) < number_literal) )) (goto_statement "goto LAB_00036b34;" goto statement_identifier ;)) }) (else_clause "else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      png_write_gAMA_fixed(png_ptr,(info_ptr->colorspace).gamma);\n      uVar2 = (info_ptr->colorspace).flags;\n      uVar1 = info_ptr->valid;\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        png_app_warning(png_ptr,"profile matches sRGB but writing iCCP instead");\n      }\n      png_write_iCCP(png_ptr,info_ptr->iccp_name,info_ptr->iccp_profile);\nLAB_00036ad9:\n      if ((info_ptr->valid & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      png_write_sRGB(png_ptr,(uint)(info_ptr->colorspace).rendering_intent);\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }" else (compound_statement "{\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      png_write_gAMA_fixed(png_ptr,(info_ptr->colorspace).gamma);\n      uVar2 = (info_ptr->colorspace).flags;\n      uVar1 = info_ptr->valid;\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        png_app_warning(png_ptr,"profile matches sRGB but writing iCCP instead");\n      }\n      png_write_iCCP(png_ptr,info_ptr->iccp_name,info_ptr->iccp_profile);\nLAB_00036ad9:\n      if ((info_ptr->valid & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      png_write_sRGB(png_ptr,(uint)(info_ptr->colorspace).rendering_intent);\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }" { (if_statement "if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      png_write_gAMA_fixed(png_ptr,(info_ptr->colorspace).gamma);\n      uVar2 = (info_ptr->colorspace).flags;\n      uVar1 = info_ptr->valid;\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }" if (parenthesized_expression "(((uVar2 & 8) != 0) && ((uVar1 & 1) != 0))" ( (binary_expression "((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)" (parenthesized_expression "((uVar2 & 8) != 0)" ( (binary_expression "(uVar2 & 8) != 0" (parenthesized_expression "(uVar2 & 8)" ( (binary_expression "uVar2 & 8" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((uVar1 & 1) != 0)" ( (binary_expression "(uVar1 & 1) != 0" (parenthesized_expression "(uVar1 & 1)" ( (binary_expression "uVar1 & 1" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      png_write_gAMA_fixed(png_ptr,(info_ptr->colorspace).gamma);\n      uVar2 = (info_ptr->colorspace).flags;\n      uVar1 = info_ptr->valid;\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }" { (expression_statement "png_write_gAMA_fixed(png_ptr,(info_ptr->colorspace).gamma);" (call_expression "png_write_gAMA_fixed(png_ptr,(info_ptr->colorspace).gamma)" identifier (argument_list "(png_ptr,(info_ptr->colorspace).gamma)" ( identifier , (field_expression "(info_ptr->colorspace).gamma" (parenthesized_expression "(info_ptr->colorspace)" ( (field_expression "info_ptr->colorspace" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "uVar2 = (info_ptr->colorspace).flags;" (assignment_expression "uVar2 = (info_ptr->colorspace).flags" identifier = (field_expression "(info_ptr->colorspace).flags" (parenthesized_expression "(info_ptr->colorspace)" ( (field_expression "info_ptr->colorspace" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar1 = info_ptr->valid;" (assignment_expression "uVar1 = info_ptr->valid" identifier = (field_expression "info_ptr->valid" identifier -> field_identifier)) ;) (if_statement "if ((short)uVar2 < 0) goto LAB_00036b30;" if (parenthesized_expression "((short)uVar2 < 0)" ( (binary_expression "(short)uVar2 < 0" (cast_expression "(short)uVar2" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) < number_literal) )) (goto_statement "goto LAB_00036b30;" goto statement_identifier ;)) })) (if_statement "if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        png_app_warning(png_ptr,"profile matches sRGB but writing iCCP instead");\n      }\n      png_write_iCCP(png_ptr,info_ptr->iccp_name,info_ptr->iccp_profile);\nLAB_00036ad9:\n      if ((info_ptr->valid & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }" if (parenthesized_expression "((uVar1 & 0x1000) != 0)" ( (binary_expression "(uVar1 & 0x1000) != 0" (parenthesized_expression "(uVar1 & 0x1000)" ( (binary_expression "uVar1 & 0x1000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      if ((uVar1 & 0x800) != 0) {\n        png_app_warning(png_ptr,"profile matches sRGB but writing iCCP instead");\n      }\n      png_write_iCCP(png_ptr,info_ptr->iccp_name,info_ptr->iccp_profile);\nLAB_00036ad9:\n      if ((info_ptr->valid & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }" { (if_statement "if ((uVar1 & 0x800) != 0) {\n        png_app_warning(png_ptr,"profile matches sRGB but writing iCCP instead");\n      }" if (parenthesized_expression "((uVar1 & 0x800) != 0)" ( (binary_expression "(uVar1 & 0x800) != 0" (parenthesized_expression "(uVar1 & 0x800)" ( (binary_expression "uVar1 & 0x800" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        png_app_warning(png_ptr,"profile matches sRGB but writing iCCP instead");\n      }" { (expression_statement "png_app_warning(png_ptr,"profile matches sRGB but writing iCCP instead");" (call_expression "png_app_warning(png_ptr,"profile matches sRGB but writing iCCP instead")" identifier (argument_list "(png_ptr,"profile matches sRGB but writing iCCP instead")" ( identifier , (string_literal ""profile matches sRGB but writing iCCP instead"" " string_content ") ))) ;) })) (expression_statement "png_write_iCCP(png_ptr,info_ptr->iccp_name,info_ptr->iccp_profile);" (call_expression "png_write_iCCP(png_ptr,info_ptr->iccp_name,info_ptr->iccp_profile)" identifier (argument_list "(png_ptr,info_ptr->iccp_name,info_ptr->iccp_profile)" ( identifier , (field_expression "info_ptr->iccp_name" identifier -> field_identifier) , (field_expression "info_ptr->iccp_profile" identifier -> field_identifier) ))) ;) (labeled_statement "LAB_00036ad9:\n      if ((info_ptr->valid & 2) != 0) goto LAB_00036b9c;" statement_identifier : (if_statement "if ((info_ptr->valid & 2) != 0) goto LAB_00036b9c;" if (parenthesized_expression "((info_ptr->valid & 2) != 0)" ( (binary_expression "(info_ptr->valid & 2) != 0" (parenthesized_expression "(info_ptr->valid & 2)" ( (binary_expression "info_ptr->valid & 2" (field_expression "info_ptr->valid" identifier -> field_identifier) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00036b9c;" goto statement_identifier ;))) (goto_statement "goto LAB_00036ae3;" goto statement_identifier ;) })) (if_statement "if ((uVar1 & 0x800) != 0) {\n      png_write_sRGB(png_ptr,(uint)(info_ptr->colorspace).rendering_intent);\n      goto LAB_00036ad9;\n    }" if (parenthesized_expression "((uVar1 & 0x800) != 0)" ( (binary_expression "(uVar1 & 0x800) != 0" (parenthesized_expression "(uVar1 & 0x800)" ( (binary_expression "uVar1 & 0x800" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      png_write_sRGB(png_ptr,(uint)(info_ptr->colorspace).rendering_intent);\n      goto LAB_00036ad9;\n    }" { (expression_statement "png_write_sRGB(png_ptr,(uint)(info_ptr->colorspace).rendering_intent);" (call_expression "png_write_sRGB(png_ptr,(uint)(info_ptr->colorspace).rendering_intent)" identifier (argument_list "(png_ptr,(uint)(info_ptr->colorspace).rendering_intent)" ( identifier , (field_expression "(uint)(info_ptr->colorspace).rendering_intent" (call_expression "(uint)(info_ptr->colorspace)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(info_ptr->colorspace)" ( (field_expression "info_ptr->colorspace" identifier -> field_identifier) ))) . field_identifier) ))) ;) (goto_statement "goto LAB_00036ad9;" goto statement_identifier ;) })) (if_statement "if ((uVar1 & 2) != 0) goto LAB_00036b9c;" if (parenthesized_expression "((uVar1 & 2) != 0)" ( (binary_expression "(uVar1 & 2) != 0" (parenthesized_expression "(uVar1 & 2)" ( (binary_expression "uVar1 & 2" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00036b9c;" goto statement_identifier ;)) }))) (if_statement "if (((uVar2 & 0x10) != 0) && ((info_ptr->valid & 4) != 0)) {\n    png_write_cHRM_fixed(png_ptr,&(info_ptr->colorspace).end_points_xy);\n  }" if (parenthesized_expression "(((uVar2 & 0x10) != 0) && ((info_ptr->valid & 4) != 0))" ( (binary_expression "((uVar2 & 0x10) != 0) && ((info_ptr->valid & 4) != 0)" (parenthesized_expression "((uVar2 & 0x10) != 0)" ( (binary_expression "(uVar2 & 0x10) != 0" (parenthesized_expression "(uVar2 & 0x10)" ( (binary_expression "uVar2 & 0x10" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((info_ptr->valid & 4) != 0)" ( (binary_expression "(info_ptr->valid & 4) != 0" (parenthesized_expression "(info_ptr->valid & 4)" ( (binary_expression "info_ptr->valid & 4" (field_expression "info_ptr->valid" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    png_write_cHRM_fixed(png_ptr,&(info_ptr->colorspace).end_points_xy);\n  }" { (expression_statement "png_write_cHRM_fixed(png_ptr,&(info_ptr->colorspace).end_points_xy);" (call_expression "png_write_cHRM_fixed(png_ptr,&(info_ptr->colorspace).end_points_xy)" identifier (argument_list "(png_ptr,&(info_ptr->colorspace).end_points_xy)" ( identifier , (pointer_expression "&(info_ptr->colorspace).end_points_xy" & (field_expression "(info_ptr->colorspace).end_points_xy" (parenthesized_expression "(info_ptr->colorspace)" ( (field_expression "info_ptr->colorspace" identifier -> field_identifier) )) . field_identifier)) ))) ;) })) (labeled_statement "LAB_00036b34:\n  if (info_ptr->unknown_chunks_num != 0) {\n    write_unknown_chunks\n              (png_ptr,(png_const_inforp)&info_ptr->unknown_chunks,\n               (uint)&info_ptr->unknown_chunks_num,(png_const_inforp)0x1);\n  }" statement_identifier : (if_statement "if (info_ptr->unknown_chunks_num != 0) {\n    write_unknown_chunks\n              (png_ptr,(png_const_inforp)&info_ptr->unknown_chunks,\n               (uint)&info_ptr->unknown_chunks_num,(png_const_inforp)0x1);\n  }" if (parenthesized_expression "(info_ptr->unknown_chunks_num != 0)" ( (binary_expression "info_ptr->unknown_chunks_num != 0" (field_expression "info_ptr->unknown_chunks_num" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n    write_unknown_chunks\n              (png_ptr,(png_const_inforp)&info_ptr->unknown_chunks,\n               (uint)&info_ptr->unknown_chunks_num,(png_const_inforp)0x1);\n  }" { (expression_statement "write_unknown_chunks\n              (png_ptr,(png_const_inforp)&info_ptr->unknown_chunks,\n               (uint)&info_ptr->unknown_chunks_num,(png_const_inforp)0x1);" (call_expression "write_unknown_chunks\n              (png_ptr,(png_const_inforp)&info_ptr->unknown_chunks,\n               (uint)&info_ptr->unknown_chunks_num,(png_const_inforp)0x1)" identifier (argument_list "(png_ptr,(png_const_inforp)&info_ptr->unknown_chunks,\n               (uint)&info_ptr->unknown_chunks_num,(png_const_inforp)0x1)" ( identifier , (binary_expression "(png_const_inforp)&info_ptr->unknown_chunks" (parenthesized_expression "(png_const_inforp)" ( identifier )) & (field_expression "info_ptr->unknown_chunks" identifier -> field_identifier)) , (binary_expression "(uint)&info_ptr->unknown_chunks_num" (parenthesized_expression "(uint)" ( identifier )) & (field_expression "info_ptr->unknown_chunks_num" identifier -> field_identifier)) , (cast_expression "(png_const_inforp)0x1" ( (type_descriptor "png_const_inforp" type_identifier) ) number_literal) ))) ;) }))) (expression_statement "png_ptr->mode = png_ptr->mode | 0x400;" (assignment_expression "png_ptr->mode = png_ptr->mode | 0x400" (field_expression "png_ptr->mode" identifier -> field_identifier) = (binary_expression "png_ptr->mode | 0x400" (field_expression "png_ptr->mode" identifier -> field_identifier) | number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "void png_write_info_before_PLTE(int param_1,undefined4 *param_2)\n\n{\n  uint uVar1;\n  ushort uVar2;\n  \n  if (((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0))\n  {\n    return;\n  }\n  png_write_sig(param_1);\n  if (((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0)) {\n    png_warning(param_1,"MNG features are not allowed in a PNG datastream");\n    *(undefined4 *)(param_1 + 0x2ac) = 0;\n  }\n  FUN_0003a950(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7));\n  uVar1 = param_2[2];\n  if ((uVar1 & 0x20000) != 0) {\n    FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);\n    uVar1 = param_2[2];\n  }\n  uVar2 = *(ushort *)((int)param_2 + 0x72);\n  if ((short)uVar2 < 0) {\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));\nLAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }\n  else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }\n  if (((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0)) {\n    FUN_0003b7f0(param_1,param_2 + 0xb);\n  }\nLAB_00036b34:\n  if (param_2[0x3f] != 0) {\n    FUN_00036220(1);\n  }\n  *(uint *)(param_1 + 0xd0) = *(uint *)(param_1 + 0xd0) | 0x400;\n  return;\n}\n\n" (function_definition "void png_write_info_before_PLTE(int param_1,undefined4 *param_2)\n\n{\n  uint uVar1;\n  ushort uVar2;\n  \n  if (((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0))\n  {\n    return;\n  }\n  png_write_sig(param_1);\n  if (((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0)) {\n    png_warning(param_1,"MNG features are not allowed in a PNG datastream");\n    *(undefined4 *)(param_1 + 0x2ac) = 0;\n  }\n  FUN_0003a950(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7));\n  uVar1 = param_2[2];\n  if ((uVar1 & 0x20000) != 0) {\n    FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);\n    uVar1 = param_2[2];\n  }\n  uVar2 = *(ushort *)((int)param_2 + 0x72);\n  if ((short)uVar2 < 0) {\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));\nLAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }\n  else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }\n  if (((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0)) {\n    FUN_0003b7f0(param_1,param_2 + 0xb);\n  }\nLAB_00036b34:\n  if (param_2[0x3f] != 0) {\n    FUN_00036220(1);\n  }\n  *(uint *)(param_1 + 0xd0) = *(uint *)(param_1 + 0xd0) | 0x400;\n  return;\n}" primitive_type (function_declarator "png_write_info_before_PLTE(int param_1,undefined4 *param_2)" identifier (parameter_list "(int param_1,undefined4 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  ushort uVar2;\n  \n  if (((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0))\n  {\n    return;\n  }\n  png_write_sig(param_1);\n  if (((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0)) {\n    png_warning(param_1,"MNG features are not allowed in a PNG datastream");\n    *(undefined4 *)(param_1 + 0x2ac) = 0;\n  }\n  FUN_0003a950(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7));\n  uVar1 = param_2[2];\n  if ((uVar1 & 0x20000) != 0) {\n    FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);\n    uVar1 = param_2[2];\n  }\n  uVar2 = *(ushort *)((int)param_2 + 0x72);\n  if ((short)uVar2 < 0) {\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));\nLAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }\n  else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }\n  if (((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0)) {\n    FUN_0003b7f0(param_1,param_2 + 0xb);\n  }\nLAB_00036b34:\n  if (param_2[0x3f] != 0) {\n    FUN_00036220(1);\n  }\n  *(uint *)(param_1 + 0xd0) = *(uint *)(param_1 + 0xd0) | 0x400;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (if_statement "if (((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0))\n  {\n    return;\n  }" if (parenthesized_expression "(((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0))" ( (binary_expression "((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0)" (parenthesized_expression "((param_1 == 0) || (param_2 == (undefined4 *)0x0))" ( (binary_expression "(param_1 == 0) || (param_2 == (undefined4 *)0x0)" (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) || (parenthesized_expression "(param_2 == (undefined4 *)0x0)" ( (binary_expression "param_2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "((*(byte *)(param_1 + 0xd1) & 4) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0xd1) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xd1) & 4)" ( (binary_expression "*(byte *)(param_1 + 0xd1) & 4" (pointer_expression "*(byte *)(param_1 + 0xd1)" * (cast_expression "(byte *)(param_1 + 0xd1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd1)" ( (binary_expression "param_1 + 0xd1" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "png_write_sig(param_1);" (call_expression "png_write_sig(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if (((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0)) {\n    png_warning(param_1,"MNG features are not allowed in a PNG datastream");\n    *(undefined4 *)(param_1 + 0x2ac) = 0;\n  }" if (parenthesized_expression "(((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0))" ( (binary_expression "((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0)" (parenthesized_expression "((*(byte *)(param_1 + 0xd1) & 0x10) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0xd1) & 0x10) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xd1) & 0x10)" ( (binary_expression "*(byte *)(param_1 + 0xd1) & 0x10" (pointer_expression "*(byte *)(param_1 + 0xd1)" * (cast_expression "(byte *)(param_1 + 0xd1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd1)" ( (binary_expression "param_1 + 0xd1" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(*(int *)(param_1 + 0x2ac) != 0)" ( (binary_expression "*(int *)(param_1 + 0x2ac) != 0" (pointer_expression "*(int *)(param_1 + 0x2ac)" * (cast_expression "(int *)(param_1 + 0x2ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2ac)" ( (binary_expression "param_1 + 0x2ac" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n    png_warning(param_1,"MNG features are not allowed in a PNG datastream");\n    *(undefined4 *)(param_1 + 0x2ac) = 0;\n  }" { (expression_statement "png_warning(param_1,"MNG features are not allowed in a PNG datastream");" (call_expression "png_warning(param_1,"MNG features are not allowed in a PNG datastream")" identifier (argument_list "(param_1,"MNG features are not allowed in a PNG datastream")" ( identifier , (string_literal ""MNG features are not allowed in a PNG datastream"" " string_content ") ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x2ac) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x2ac) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x2ac)" * (cast_expression "(undefined4 *)(param_1 + 0x2ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2ac)" ( (binary_expression "param_1 + 0x2ac" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "FUN_0003a950(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7));" (call_expression "FUN_0003a950(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7))" identifier (argument_list "(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7))" ( identifier , (pointer_expression "*param_2" * identifier) , (subscript_expression "param_2[1]" identifier [ number_literal ]) , (pointer_expression "*(undefined1 *)(param_2 + 6)" * (cast_expression "(undefined1 *)(param_2 + 6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) )))) , (pointer_expression "*(undefined1 *)((int)param_2 + 0x19)" * (cast_expression "(undefined1 *)((int)param_2 + 0x19)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x19)" ( (binary_expression "(int)param_2 + 0x19" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined1 *)((int)param_2 + 0x1a)" * (cast_expression "(undefined1 *)((int)param_2 + 0x1a)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x1a)" ( (binary_expression "(int)param_2 + 0x1a" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined1 *)((int)param_2 + 0x1b)" * (cast_expression "(undefined1 *)((int)param_2 + 0x1b)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x1b)" ( (binary_expression "(int)param_2 + 0x1b" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined1 *)(param_2 + 7)" * (cast_expression "(undefined1 *)(param_2 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) )))) ))) ;) (expression_statement "uVar1 = param_2[2];" (assignment_expression "uVar1 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (if_statement "if ((uVar1 & 0x20000) != 0) {\n    FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);\n    uVar1 = param_2[2];\n  }" if (parenthesized_expression "((uVar1 & 0x20000) != 0)" ( (binary_expression "(uVar1 & 0x20000) != 0" (parenthesized_expression "(uVar1 & 0x20000)" ( (binary_expression "uVar1 & 0x20000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);\n    uVar1 = param_2[2];\n  }" { (expression_statement "FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);" (call_expression "FUN_0003d240(param_1,param_2[0x46],param_2[0x47])" identifier (argument_list "(param_1,param_2[0x46],param_2[0x47])" ( identifier , (subscript_expression "param_2[0x46]" identifier [ number_literal ]) , (subscript_expression "param_2[0x47]" identifier [ number_literal ]) ))) ;) (expression_statement "uVar1 = param_2[2];" (assignment_expression "uVar1 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) })) (expression_statement "uVar2 = *(ushort *)((int)param_2 + 0x72);" (assignment_expression "uVar2 = *(ushort *)((int)param_2 + 0x72)" identifier = (pointer_expression "*(ushort *)((int)param_2 + 0x72)" * (cast_expression "(ushort *)((int)param_2 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x72)" ( (binary_expression "(int)param_2 + 0x72" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if ((short)uVar2 < 0) {\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));\nLAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }\n  else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }" if (parenthesized_expression "((short)uVar2 < 0)" ( (binary_expression "(short)uVar2 < 0" (cast_expression "(short)uVar2" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));\nLAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }" { (labeled_statement "LAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;" statement_identifier : (if_statement "if ((uVar1 & 2) == 0) goto LAB_00036b34;" if (parenthesized_expression "((uVar1 & 2) == 0)" ( (binary_expression "(uVar1 & 2) == 0" (parenthesized_expression "(uVar1 & 2)" ( (binary_expression "uVar1 & 2" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00036b34;" goto statement_identifier ;))) (labeled_statement "LAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));" statement_identifier : (expression_statement "FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));" (call_expression "FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19))" identifier (argument_list "(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19))" ( identifier , (binary_expression "param_2 + 0x25" identifier + number_literal) , (pointer_expression "*(undefined1 *)((int)param_2 + 0x19)" * (cast_expression "(undefined1 *)((int)param_2 + 0x19)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x19)" ( (binary_expression "(int)param_2 + 0x19" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;)) (labeled_statement "LAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);" statement_identifier : (expression_statement "uVar2 = *(ushort *)((int)param_2 + 0x72);" (assignment_expression "uVar2 = *(ushort *)((int)param_2 + 0x72)" identifier = (pointer_expression "*(ushort *)((int)param_2 + 0x72)" * (cast_expression "(ushort *)((int)param_2 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x72)" ( (binary_expression "(int)param_2 + 0x72" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) (if_statement "if ((short)uVar2 < 0) goto LAB_00036b34;" if (parenthesized_expression "((short)uVar2 < 0)" ( (binary_expression "(short)uVar2 < 0" (cast_expression "(short)uVar2" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) < number_literal) )) (goto_statement "goto LAB_00036b34;" goto statement_identifier ;)) }) (else_clause "else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }" else (compound_statement "{\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }" { (if_statement "if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }" if (parenthesized_expression "(((uVar2 & 8) != 0) && ((uVar1 & 1) != 0))" ( (binary_expression "((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)" (parenthesized_expression "((uVar2 & 8) != 0)" ( (binary_expression "(uVar2 & 8) != 0" (parenthesized_expression "(uVar2 & 8)" ( (binary_expression "uVar2 & 8" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((uVar1 & 1) != 0)" ( (binary_expression "(uVar1 & 1) != 0" (parenthesized_expression "(uVar1 & 1)" ( (binary_expression "uVar1 & 1" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }" { (expression_statement "FUN_0003af90(param_1,param_2[10]);" (call_expression "FUN_0003af90(param_1,param_2[10])" identifier (argument_list "(param_1,param_2[10])" ( identifier , (subscript_expression "param_2[10]" identifier [ number_literal ]) ))) ;) (expression_statement "uVar2 = *(ushort *)((int)param_2 + 0x72);" (assignment_expression "uVar2 = *(ushort *)((int)param_2 + 0x72)" identifier = (pointer_expression "*(ushort *)((int)param_2 + 0x72)" * (cast_expression "(ushort *)((int)param_2 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x72)" ( (binary_expression "(int)param_2 + 0x72" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar1 = param_2[2];" (assignment_expression "uVar1 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (if_statement "if ((short)uVar2 < 0) goto LAB_00036b30;" if (parenthesized_expression "((short)uVar2 < 0)" ( (binary_expression "(short)uVar2 < 0" (cast_expression "(short)uVar2" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) < number_literal) )) (goto_statement "goto LAB_00036b30;" goto statement_identifier ;)) })) (if_statement "if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }" if (parenthesized_expression "((uVar1 & 0x1000) != 0)" ( (binary_expression "(uVar1 & 0x1000) != 0" (parenthesized_expression "(uVar1 & 0x1000)" ( (binary_expression "uVar1 & 0x1000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }" { (if_statement "if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }" if (parenthesized_expression "((uVar1 & 0x800) != 0)" ( (binary_expression "(uVar1 & 0x800) != 0" (parenthesized_expression "(uVar1 & 0x800)" ( (binary_expression "uVar1 & 0x800" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }" { (expression_statement "FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");" (call_expression "FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead")" identifier (argument_list "(param_1,"profile matches sRGB but writing iCCP instead")" ( identifier , (string_literal ""profile matches sRGB but writing iCCP instead"" " string_content ") ))) ;) })) (expression_statement "FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);" (call_expression "FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e])" identifier (argument_list "(param_1,param_2[0x1d],param_2[0x1e])" ( identifier , (subscript_expression "param_2[0x1d]" identifier [ number_literal ]) , (subscript_expression "param_2[0x1e]" identifier [ number_literal ]) ))) ;) (labeled_statement "LAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;" statement_identifier : (if_statement "if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;" if (parenthesized_expression "((*(byte *)(param_2 + 2) & 2) != 0)" ( (binary_expression "(*(byte *)(param_2 + 2) & 2) != 0" (parenthesized_expression "(*(byte *)(param_2 + 2) & 2)" ( (binary_expression "*(byte *)(param_2 + 2) & 2" (pointer_expression "*(byte *)(param_2 + 2)" * (cast_expression "(byte *)(param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00036b9c;" goto statement_identifier ;))) (goto_statement "goto LAB_00036ae3;" goto statement_identifier ;) })) (if_statement "if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }" if (parenthesized_expression "((uVar1 & 0x800) != 0)" ( (binary_expression "(uVar1 & 0x800) != 0" (parenthesized_expression "(uVar1 & 0x800)" ( (binary_expression "uVar1 & 0x800" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }" { (expression_statement "FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));" (call_expression "FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c))" identifier (argument_list "(param_1,*(undefined2 *)(param_2 + 0x1c))" ( identifier , (pointer_expression "*(undefined2 *)(param_2 + 0x1c)" * (cast_expression "(undefined2 *)(param_2 + 0x1c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) ))) ;) (goto_statement "goto LAB_00036ad9;" goto statement_identifier ;) })) (if_statement "if ((uVar1 & 2) != 0) goto LAB_00036b9c;" if (parenthesized_expression "((uVar1 & 2) != 0)" ( (binary_expression "(uVar1 & 2) != 0" (parenthesized_expression "(uVar1 & 2)" ( (binary_expression "uVar1 & 2" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00036b9c;" goto statement_identifier ;)) }))) (if_statement "if (((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0)) {\n    FUN_0003b7f0(param_1,param_2 + 0xb);\n  }" if (parenthesized_expression "(((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0))" ( (binary_expression "((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0)" (parenthesized_expression "((uVar2 & 0x10) != 0)" ( (binary_expression "(uVar2 & 0x10) != 0" (parenthesized_expression "(uVar2 & 0x10)" ( (binary_expression "uVar2 & 0x10" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)(param_2 + 2) & 4) != 0)" ( (binary_expression "(*(byte *)(param_2 + 2) & 4) != 0" (parenthesized_expression "(*(byte *)(param_2 + 2) & 4)" ( (binary_expression "*(byte *)(param_2 + 2) & 4" (pointer_expression "*(byte *)(param_2 + 2)" * (cast_expression "(byte *)(param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    FUN_0003b7f0(param_1,param_2 + 0xb);\n  }" { (expression_statement "FUN_0003b7f0(param_1,param_2 + 0xb);" (call_expression "FUN_0003b7f0(param_1,param_2 + 0xb)" identifier (argument_list "(param_1,param_2 + 0xb)" ( identifier , (binary_expression "param_2 + 0xb" identifier + number_literal) ))) ;) })) (labeled_statement "LAB_00036b34:\n  if (param_2[0x3f] != 0) {\n    FUN_00036220(1);\n  }" statement_identifier : (if_statement "if (param_2[0x3f] != 0) {\n    FUN_00036220(1);\n  }" if (parenthesized_expression "(param_2[0x3f] != 0)" ( (binary_expression "param_2[0x3f] != 0" (subscript_expression "param_2[0x3f]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    FUN_00036220(1);\n  }" { (expression_statement "FUN_00036220(1);" (call_expression "FUN_00036220(1)" identifier (argument_list "(1)" ( number_literal ))) ;) }))) (expression_statement "*(uint *)(param_1 + 0xd0) = *(uint *)(param_1 + 0xd0) | 0x400;" (assignment_expression "*(uint *)(param_1 + 0xd0) = *(uint *)(param_1 + 0xd0) | 0x400" (pointer_expression "*(uint *)(param_1 + 0xd0)" * (cast_expression "(uint *)(param_1 + 0xd0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd0)" ( (binary_expression "param_1 + 0xd0" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 0xd0) | 0x400" (pointer_expression "*(uint *)(param_1 + 0xd0)" * (cast_expression "(uint *)(param_1 + 0xd0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd0)" ( (binary_expression "param_1 + 0xd0" identifier + number_literal) )))) | number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") ))) ;) (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 IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (subscript_expression IDENT [ LIT ]) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT) < LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (return_statement return ;) })))
(function_definition "void png_write_info_before_PLTE(int param_1,undefined4 *param_2)\n\n{\n  uint uVar1;\n  ushort uVar2;\n  \n  if (((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0))\n  {\n    return;\n  }\n  png_write_sig(param_1);\n  if (((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0)) {\n    png_warning(param_1,"MNG features are not allowed in a PNG datastream");\n    *(undefined4 *)(param_1 + 0x2ac) = 0;\n  }\n  FUN_0003a950(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7));\n  uVar1 = param_2[2];\n  if ((uVar1 & 0x20000) != 0) {\n    FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);\n    uVar1 = param_2[2];\n  }\n  uVar2 = *(ushort *)((int)param_2 + 0x72);\n  if ((short)uVar2 < 0) {\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));\nLAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }\n  else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }\n  if (((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0)) {\n    FUN_0003b7f0(param_1,param_2 + 0xb);\n  }\nLAB_00036b34:\n  if (param_2[0x3f] != 0) {\n    FUN_00036220(1);\n  }\n  *(uint *)(param_1 + 0xd0) = *(uint *)(param_1 + 0xd0) | 0x400;\n  return;\n}" (primitive_type "void") (function_declarator "png_write_info_before_PLTE(int param_1,undefined4 *param_2)" (identifier "png_write_info_before_PLTE") (parameter_list "(int param_1,undefined4 *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  ushort uVar2;\n  \n  if (((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0))\n  {\n    return;\n  }\n  png_write_sig(param_1);\n  if (((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0)) {\n    png_warning(param_1,"MNG features are not allowed in a PNG datastream");\n    *(undefined4 *)(param_1 + 0x2ac) = 0;\n  }\n  FUN_0003a950(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7));\n  uVar1 = param_2[2];\n  if ((uVar1 & 0x20000) != 0) {\n    FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);\n    uVar1 = param_2[2];\n  }\n  uVar2 = *(ushort *)((int)param_2 + 0x72);\n  if ((short)uVar2 < 0) {\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));\nLAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }\n  else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }\n  if (((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0)) {\n    FUN_0003b7f0(param_1,param_2 + 0xb);\n  }\nLAB_00036b34:\n  if (param_2[0x3f] != 0) {\n    FUN_00036220(1);\n  }\n  *(uint *)(param_1 + 0xd0) = *(uint *)(param_1 + 0xd0) | 0x400;\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "ushort uVar2;" (type_identifier "ushort") (identifier "uVar2") (; ";")) (if_statement "if (((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0))\n  {\n    return;\n  }" (if "if") (parenthesized_expression "(((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0))" (( "(") (binary_expression "((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0)" (parenthesized_expression "((param_1 == 0) || (param_2 == (undefined4 *)0x0))" (( "(") (binary_expression "(param_1 == 0) || (param_2 == (undefined4 *)0x0)" (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(param_2 == (undefined4 *)0x0)" (( "(") (binary_expression "param_2 == (undefined4 *)0x0" (identifier "param_2") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(param_1 + 0xd1) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0xd1) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xd1) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0xd1) & 4" (pointer_expression "*(byte *)(param_1 + 0xd1)" (* "*") (cast_expression "(byte *)(param_1 + 0xd1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd1)" (( "(") (binary_expression "param_1 + 0xd1" (identifier "param_1") (+ "+") (number_literal "0xd1")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "png_write_sig(param_1);" (call_expression "png_write_sig(param_1)" (identifier "png_write_sig") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (if_statement "if (((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0)) {\n    png_warning(param_1,"MNG features are not allowed in a PNG datastream");\n    *(undefined4 *)(param_1 + 0x2ac) = 0;\n  }" (if "if") (parenthesized_expression "(((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0))" (( "(") (binary_expression "((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0)" (parenthesized_expression "((*(byte *)(param_1 + 0xd1) & 0x10) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0xd1) & 0x10) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xd1) & 0x10)" (( "(") (binary_expression "*(byte *)(param_1 + 0xd1) & 0x10" (pointer_expression "*(byte *)(param_1 + 0xd1)" (* "*") (cast_expression "(byte *)(param_1 + 0xd1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd1)" (( "(") (binary_expression "param_1 + 0xd1" (identifier "param_1") (+ "+") (number_literal "0xd1")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_1 + 0x2ac) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x2ac) != 0" (pointer_expression "*(int *)(param_1 + 0x2ac)" (* "*") (cast_expression "(int *)(param_1 + 0x2ac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2ac)" (( "(") (binary_expression "param_1 + 0x2ac" (identifier "param_1") (+ "+") (number_literal "0x2ac")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    png_warning(param_1,"MNG features are not allowed in a PNG datastream");\n    *(undefined4 *)(param_1 + 0x2ac) = 0;\n  }" ({ "{") (expression_statement "png_warning(param_1,"MNG features are not allowed in a PNG datastream");" (call_expression "png_warning(param_1,"MNG features are not allowed in a PNG datastream")" (identifier "png_warning") (argument_list "(param_1,"MNG features are not allowed in a PNG datastream")" (( "(") (identifier "param_1") (, ",") (string_literal ""MNG features are not allowed in a PNG datastream"" (" """) (string_content "MNG features are not allowed in a PNG datastream") (" """)) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x2ac) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x2ac) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x2ac)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x2ac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2ac)" (( "(") (binary_expression "param_1 + 0x2ac" (identifier "param_1") (+ "+") (number_literal "0x2ac")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "FUN_0003a950(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7));" (call_expression "FUN_0003a950(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7))" (identifier "FUN_0003a950") (argument_list "(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),\n               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),\n               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (, ",") (pointer_expression "*(undefined1 *)(param_2 + 6)" (* "*") (cast_expression "(undefined1 *)(param_2 + 6)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 6)" (( "(") (binary_expression "param_2 + 6" (identifier "param_2") (+ "+") (number_literal "6")) () ")")))) (, ",") (pointer_expression "*(undefined1 *)((int)param_2 + 0x19)" (* "*") (cast_expression "(undefined1 *)((int)param_2 + 0x19)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 0x19)" (( "(") (binary_expression "(int)param_2 + 0x19" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "0x19")) () ")")))) (, ",") (pointer_expression "*(undefined1 *)((int)param_2 + 0x1a)" (* "*") (cast_expression "(undefined1 *)((int)param_2 + 0x1a)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 0x1a)" (( "(") (binary_expression "(int)param_2 + 0x1a" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "0x1a")) () ")")))) (, ",") (pointer_expression "*(undefined1 *)((int)param_2 + 0x1b)" (* "*") (cast_expression "(undefined1 *)((int)param_2 + 0x1b)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 0x1b)" (( "(") (binary_expression "(int)param_2 + 0x1b" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "0x1b")) () ")")))) (, ",") (pointer_expression "*(undefined1 *)(param_2 + 7)" (* "*") (cast_expression "(undefined1 *)(param_2 + 7)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 7)" (( "(") (binary_expression "param_2 + 7" (identifier "param_2") (+ "+") (number_literal "7")) () ")")))) () ")"))) (; ";")) (expression_statement "uVar1 = param_2[2];" (assignment_expression "uVar1 = param_2[2]" (identifier "uVar1") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if ((uVar1 & 0x20000) != 0) {\n    FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);\n    uVar1 = param_2[2];\n  }" (if "if") (parenthesized_expression "((uVar1 & 0x20000) != 0)" (( "(") (binary_expression "(uVar1 & 0x20000) != 0" (parenthesized_expression "(uVar1 & 0x20000)" (( "(") (binary_expression "uVar1 & 0x20000" (identifier "uVar1") (& "&") (number_literal "0x20000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);\n    uVar1 = param_2[2];\n  }" ({ "{") (expression_statement "FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);" (call_expression "FUN_0003d240(param_1,param_2[0x46],param_2[0x47])" (identifier "FUN_0003d240") (argument_list "(param_1,param_2[0x46],param_2[0x47])" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_2[0x46]" (identifier "param_2") ([ "[") (number_literal "0x46") (] "]")) (, ",") (subscript_expression "param_2[0x47]" (identifier "param_2") ([ "[") (number_literal "0x47") (] "]")) () ")"))) (; ";")) (expression_statement "uVar1 = param_2[2];" (assignment_expression "uVar1 = param_2[2]" (identifier "uVar1") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (expression_statement "uVar2 = *(ushort *)((int)param_2 + 0x72);" (assignment_expression "uVar2 = *(ushort *)((int)param_2 + 0x72)" (identifier "uVar2") (= "=") (pointer_expression "*(ushort *)((int)param_2 + 0x72)" (* "*") (cast_expression "(ushort *)((int)param_2 + 0x72)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 0x72)" (( "(") (binary_expression "(int)param_2 + 0x72" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "0x72")) () ")"))))) (; ";")) (if_statement "if ((short)uVar2 < 0) {\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));\nLAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }\n  else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }" (if "if") (parenthesized_expression "((short)uVar2 < 0)" (( "(") (binary_expression "(short)uVar2 < 0" (cast_expression "(short)uVar2" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar2")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;\nLAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));\nLAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);\n    if ((short)uVar2 < 0) goto LAB_00036b34;\n  }" ({ "{") (labeled_statement "LAB_00036b30:\n    if ((uVar1 & 2) == 0) goto LAB_00036b34;" (statement_identifier "LAB_00036b30") (: ":") (if_statement "if ((uVar1 & 2) == 0) goto LAB_00036b34;" (if "if") (parenthesized_expression "((uVar1 & 2) == 0)" (( "(") (binary_expression "(uVar1 & 2) == 0" (parenthesized_expression "(uVar1 & 2)" (( "(") (binary_expression "uVar1 & 2" (identifier "uVar1") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00036b34;" (goto "goto") (statement_identifier "LAB_00036b34") (; ";")))) (labeled_statement "LAB_00036b9c:\n    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));" (statement_identifier "LAB_00036b9c") (: ":") (expression_statement "FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));" (call_expression "FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19))" (identifier "FUN_0003b620") (argument_list "(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19))" (( "(") (identifier "param_1") (, ",") (binary_expression "param_2 + 0x25" (identifier "param_2") (+ "+") (number_literal "0x25")) (, ",") (pointer_expression "*(undefined1 *)((int)param_2 + 0x19)" (* "*") (cast_expression "(undefined1 *)((int)param_2 + 0x19)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 0x19)" (( "(") (binary_expression "(int)param_2 + 0x19" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "0x19")) () ")")))) () ")"))) (; ";"))) (labeled_statement "LAB_00036ae3:\n    uVar2 = *(ushort *)((int)param_2 + 0x72);" (statement_identifier "LAB_00036ae3") (: ":") (expression_statement "uVar2 = *(ushort *)((int)param_2 + 0x72);" (assignment_expression "uVar2 = *(ushort *)((int)param_2 + 0x72)" (identifier "uVar2") (= "=") (pointer_expression "*(ushort *)((int)param_2 + 0x72)" (* "*") (cast_expression "(ushort *)((int)param_2 + 0x72)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 0x72)" (( "(") (binary_expression "(int)param_2 + 0x72" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "0x72")) () ")"))))) (; ";"))) (if_statement "if ((short)uVar2 < 0) goto LAB_00036b34;" (if "if") (parenthesized_expression "((short)uVar2 < 0)" (( "(") (binary_expression "(short)uVar2 < 0" (cast_expression "(short)uVar2" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar2")) (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00036b34;" (goto "goto") (statement_identifier "LAB_00036b34") (; ";"))) (} "}")) (else_clause "else {\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }" (else "else") (compound_statement "{\n    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }\n    if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }\n    if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }\n    if ((uVar1 & 2) != 0) goto LAB_00036b9c;\n  }" ({ "{") (if_statement "if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }" (if "if") (parenthesized_expression "(((uVar2 & 8) != 0) && ((uVar1 & 1) != 0))" (( "(") (binary_expression "((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)" (parenthesized_expression "((uVar2 & 8) != 0)" (( "(") (binary_expression "(uVar2 & 8) != 0" (parenthesized_expression "(uVar2 & 8)" (( "(") (binary_expression "uVar2 & 8" (identifier "uVar2") (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((uVar1 & 1) != 0)" (( "(") (binary_expression "(uVar1 & 1) != 0" (parenthesized_expression "(uVar1 & 1)" (( "(") (binary_expression "uVar1 & 1" (identifier "uVar1") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      FUN_0003af90(param_1,param_2[10]);\n      uVar2 = *(ushort *)((int)param_2 + 0x72);\n      uVar1 = param_2[2];\n      if ((short)uVar2 < 0) goto LAB_00036b30;\n    }" ({ "{") (expression_statement "FUN_0003af90(param_1,param_2[10]);" (call_expression "FUN_0003af90(param_1,param_2[10])" (identifier "FUN_0003af90") (argument_list "(param_1,param_2[10])" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) () ")"))) (; ";")) (expression_statement "uVar2 = *(ushort *)((int)param_2 + 0x72);" (assignment_expression "uVar2 = *(ushort *)((int)param_2 + 0x72)" (identifier "uVar2") (= "=") (pointer_expression "*(ushort *)((int)param_2 + 0x72)" (* "*") (cast_expression "(ushort *)((int)param_2 + 0x72)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 0x72)" (( "(") (binary_expression "(int)param_2 + 0x72" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "0x72")) () ")"))))) (; ";")) (expression_statement "uVar1 = param_2[2];" (assignment_expression "uVar1 = param_2[2]" (identifier "uVar1") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if ((short)uVar2 < 0) goto LAB_00036b30;" (if "if") (parenthesized_expression "((short)uVar2 < 0)" (( "(") (binary_expression "(short)uVar2 < 0" (cast_expression "(short)uVar2" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar2")) (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00036b30;" (goto "goto") (statement_identifier "LAB_00036b30") (; ";"))) (} "}"))) (if_statement "if ((uVar1 & 0x1000) != 0) {\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }" (if "if") (parenthesized_expression "((uVar1 & 0x1000) != 0)" (( "(") (binary_expression "(uVar1 & 0x1000) != 0" (parenthesized_expression "(uVar1 & 0x1000)" (( "(") (binary_expression "uVar1 & 0x1000" (identifier "uVar1") (& "&") (number_literal "0x1000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }\n      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);\nLAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;\n      goto LAB_00036ae3;\n    }" ({ "{") (if_statement "if ((uVar1 & 0x800) != 0) {\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }" (if "if") (parenthesized_expression "((uVar1 & 0x800) != 0)" (( "(") (binary_expression "(uVar1 & 0x800) != 0" (parenthesized_expression "(uVar1 & 0x800)" (( "(") (binary_expression "uVar1 & 0x800" (identifier "uVar1") (& "&") (number_literal "0x800")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");\n      }" ({ "{") (expression_statement "FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");" (call_expression "FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead")" (identifier "FUN_0001ae70") (argument_list "(param_1,"profile matches sRGB but writing iCCP instead")" (( "(") (identifier "param_1") (, ",") (string_literal ""profile matches sRGB but writing iCCP instead"" (" """) (string_content "profile matches sRGB but writing iCCP instead") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);" (call_expression "FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e])" (identifier "FUN_0003b150") (argument_list "(param_1,param_2[0x1d],param_2[0x1e])" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_2[0x1d]" (identifier "param_2") ([ "[") (number_literal "0x1d") (] "]")) (, ",") (subscript_expression "param_2[0x1e]" (identifier "param_2") ([ "[") (number_literal "0x1e") (] "]")) () ")"))) (; ";")) (labeled_statement "LAB_00036ad9:\n      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;" (statement_identifier "LAB_00036ad9") (: ":") (if_statement "if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;" (if "if") (parenthesized_expression "((*(byte *)(param_2 + 2) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(param_2 + 2) & 2) != 0" (parenthesized_expression "(*(byte *)(param_2 + 2) & 2)" (( "(") (binary_expression "*(byte *)(param_2 + 2) & 2" (pointer_expression "*(byte *)(param_2 + 2)" (* "*") (cast_expression "(byte *)(param_2 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00036b9c;" (goto "goto") (statement_identifier "LAB_00036b9c") (; ";")))) (goto_statement "goto LAB_00036ae3;" (goto "goto") (statement_identifier "LAB_00036ae3") (; ";")) (} "}"))) (if_statement "if ((uVar1 & 0x800) != 0) {\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }" (if "if") (parenthesized_expression "((uVar1 & 0x800) != 0)" (( "(") (binary_expression "(uVar1 & 0x800) != 0" (parenthesized_expression "(uVar1 & 0x800)" (( "(") (binary_expression "uVar1 & 0x800" (identifier "uVar1") (& "&") (number_literal "0x800")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));\n      goto LAB_00036ad9;\n    }" ({ "{") (expression_statement "FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));" (call_expression "FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c))" (identifier "FUN_0003b060") (argument_list "(param_1,*(undefined2 *)(param_2 + 0x1c))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined2 *)(param_2 + 0x1c)" (* "*") (cast_expression "(undefined2 *)(param_2 + 0x1c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")")))) () ")"))) (; ";")) (goto_statement "goto LAB_00036ad9;" (goto "goto") (statement_identifier "LAB_00036ad9") (; ";")) (} "}"))) (if_statement "if ((uVar1 & 2) != 0) goto LAB_00036b9c;" (if "if") (parenthesized_expression "((uVar1 & 2) != 0)" (( "(") (binary_expression "(uVar1 & 2) != 0" (parenthesized_expression "(uVar1 & 2)" (( "(") (binary_expression "uVar1 & 2" (identifier "uVar1") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00036b9c;" (goto "goto") (statement_identifier "LAB_00036b9c") (; ";"))) (} "}")))) (if_statement "if (((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0)) {\n    FUN_0003b7f0(param_1,param_2 + 0xb);\n  }" (if "if") (parenthesized_expression "(((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0))" (( "(") (binary_expression "((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0)" (parenthesized_expression "((uVar2 & 0x10) != 0)" (( "(") (binary_expression "(uVar2 & 0x10) != 0" (parenthesized_expression "(uVar2 & 0x10)" (( "(") (binary_expression "uVar2 & 0x10" (identifier "uVar2") (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(param_2 + 2) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(param_2 + 2) & 4) != 0" (parenthesized_expression "(*(byte *)(param_2 + 2) & 4)" (( "(") (binary_expression "*(byte *)(param_2 + 2) & 4" (pointer_expression "*(byte *)(param_2 + 2)" (* "*") (cast_expression "(byte *)(param_2 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    FUN_0003b7f0(param_1,param_2 + 0xb);\n  }" ({ "{") (expression_statement "FUN_0003b7f0(param_1,param_2 + 0xb);" (call_expression "FUN_0003b7f0(param_1,param_2 + 0xb)" (identifier "FUN_0003b7f0") (argument_list "(param_1,param_2 + 0xb)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_2 + 0xb" (identifier "param_2") (+ "+") (number_literal "0xb")) () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_00036b34:\n  if (param_2[0x3f] != 0) {\n    FUN_00036220(1);\n  }" (statement_identifier "LAB_00036b34") (: ":") (if_statement "if (param_2[0x3f] != 0) {\n    FUN_00036220(1);\n  }" (if "if") (parenthesized_expression "(param_2[0x3f] != 0)" (( "(") (binary_expression "param_2[0x3f] != 0" (subscript_expression "param_2[0x3f]" (identifier "param_2") ([ "[") (number_literal "0x3f") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_00036220(1);\n  }" ({ "{") (expression_statement "FUN_00036220(1);" (call_expression "FUN_00036220(1)" (identifier "FUN_00036220") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (} "}")))) (expression_statement "*(uint *)(param_1 + 0xd0) = *(uint *)(param_1 + 0xd0) | 0x400;" (assignment_expression "*(uint *)(param_1 + 0xd0) = *(uint *)(param_1 + 0xd0) | 0x400" (pointer_expression "*(uint *)(param_1 + 0xd0)" (* "*") (cast_expression "(uint *)(param_1 + 0xd0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd0)" (( "(") (binary_expression "param_1 + 0xd0" (identifier "param_1") (+ "+") (number_literal "0xd0")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 0xd0) | 0x400" (pointer_expression "*(uint *)(param_1 + 0xd0)" (* "*") (cast_expression "(uint *)(param_1 + 0xd0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd0)" (( "(") (binary_expression "param_1 + 0xd0" (identifier "param_1") (+ "+") (number_literal "0xd0")) () ")")))) (| "|") (number_literal "0x400"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void function_1(type_1 var_1,type_2 var_2)

{
  type_3 var_6;
  type_4 var_9;
  
  if (((var_1 == (type_1)0x0) || (var_2 == (type_2)0x0)) ||
     ((var_1->mode & 0x400) != 0)) {
    return;
  }
  var_3(var_1);
  if (((var_1->mode & 0x1000) != 0) && (var_1->mng_features_permitted != 0)) {
    var_4(var_1,"MNG features are not allowed in a PNG datastream");
    var_1->mng_features_permitted = 0;
  }
  var_5(var_1,var_2->width,var_2->height,(type_3)var_2->bit_depth,
                 (type_3)var_2->color_type,(type_3)var_2->compression_type,
                 (type_3)var_2->filter_type,(type_3)var_2->interlace_type);
  var_6 = var_2->valid;
  if ((var_6 & 0x20000) != 0) {
    var_7(var_1,var_2->num_frames,var_2->num_plays);
    var_6 = var_2->valid;
  }
  var_9 = (var_2->colorspace).flags;
  if ((short)var_9 < 0) {
LAB_00036b30:
    if ((var_6 & 2) == 0) goto LAB_00036b34;
LAB_00036b9c:
    var_8(var_1,&var_2->sig_bit,(type_3)var_2->color_type);
LAB_00036ae3:
    var_9 = (var_2->colorspace).flags;
    if ((short)var_9 < 0) goto LAB_00036b34;
  }
  else {
    if (((var_9 & 8) != 0) && ((var_6 & 1) != 0)) {
      var_10(var_1,(var_2->colorspace).gamma);
      var_9 = (var_2->colorspace).flags;
      var_6 = var_2->valid;
      if ((short)var_9 < 0) goto LAB_00036b30;
    }
    if ((var_6 & 0x1000) != 0) {
      if ((var_6 & 0x800) != 0) {
        var_11(var_1,"profile matches sRGB but writing iCCP instead");
      }
      var_12(var_1,var_2->iccp_name,var_2->iccp_profile);
LAB_00036ad9:
      if ((var_2->valid & 2) != 0) goto LAB_00036b9c;
      goto LAB_00036ae3;
    }
    if ((var_6 & 0x800) != 0) {
      var_13(var_1,(type_3)(var_2->colorspace).rendering_intent);
      goto LAB_00036ad9;
    }
    if ((var_6 & 2) != 0) goto LAB_00036b9c;
  }
  if (((var_9 & 0x10) != 0) && ((var_2->valid & 4) != 0)) {
    var_14(var_1,&(var_2->colorspace).end_points_xy);
  }
LAB_00036b34:
  if (var_2->unknown_chunks_num != 0) {
    var_15
              (var_1,(type_2)&var_2->unknown_chunks,
               (type_3)&var_2->unknown_chunks_num,(type_2)0x1);
  }
  var_1->mode = var_1->mode | 0x400;
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void MASKED(int param_1,undefined4 *param_2)

{
  uint uVar1;
  ushort uVar2;
  
  if (((param_1 == 0) || (param_2 == (undefined4 *)0x0)) || ((*(byte *)(param_1 + 0xd1) & 4) != 0))
  {
    return;
  }
  png_write_sig(param_1);
  if (((*(byte *)(param_1 + 0xd1) & 0x10) != 0) && (*(int *)(param_1 + 0x2ac) != 0)) {
    png_warning(param_1,"MNG features are not allowed in a PNG datastream");
    *(undefined4 *)(param_1 + 0x2ac) = 0;
  }
  FUN_0003a950(param_1,*param_2,param_2[1],*(undefined1 *)(param_2 + 6),
               *(undefined1 *)((int)param_2 + 0x19),*(undefined1 *)((int)param_2 + 0x1a),
               *(undefined1 *)((int)param_2 + 0x1b),*(undefined1 *)(param_2 + 7));
  uVar1 = param_2[2];
  if ((uVar1 & 0x20000) != 0) {
    FUN_0003d240(param_1,param_2[0x46],param_2[0x47]);
    uVar1 = param_2[2];
  }
  uVar2 = *(ushort *)((int)param_2 + 0x72);
  if ((short)uVar2 < 0) {
LAB_00036b30:
    if ((uVar1 & 2) == 0) goto LAB_00036b34;
LAB_00036b9c:
    FUN_0003b620(param_1,param_2 + 0x25,*(undefined1 *)((int)param_2 + 0x19));
LAB_00036ae3:
    uVar2 = *(ushort *)((int)param_2 + 0x72);
    if ((short)uVar2 < 0) goto LAB_00036b34;
  }
  else {
    if (((uVar2 & 8) != 0) && ((uVar1 & 1) != 0)) {
      FUN_0003af90(param_1,param_2[10]);
      uVar2 = *(ushort *)((int)param_2 + 0x72);
      uVar1 = param_2[2];
      if ((short)uVar2 < 0) goto LAB_00036b30;
    }
    if ((uVar1 & 0x1000) != 0) {
      if ((uVar1 & 0x800) != 0) {
        FUN_0001ae70(param_1,"profile matches sRGB but writing iCCP instead");
      }
      FUN_0003b150(param_1,param_2[0x1d],param_2[0x1e]);
LAB_00036ad9:
      if ((*(byte *)(param_2 + 2) & 2) != 0) goto LAB_00036b9c;
      goto LAB_00036ae3;
    }
    if ((uVar1 & 0x800) != 0) {
      FUN_0003b060(param_1,*(undefined2 *)(param_2 + 0x1c));
      goto LAB_00036ad9;
    }
    if ((uVar1 & 2) != 0) goto LAB_00036b9c;
  }
  if (((uVar2 & 0x10) != 0) && ((*(byte *)(param_2 + 2) & 4) != 0)) {
    FUN_0003b7f0(param_1,param_2 + 0xb);
  }
LAB_00036b34:
  if (param_2[0x3f] != 0) {
    FUN_00036220(1);
  }
  *(uint *)(param_1 + 0xd0) = *(uint *)(param_1 + 0xd0) | 0x400;
  return;
}

