
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "ExceptionType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */
/* WARNING: Enum "LogEventType": Some values do not have unique names */

MagickBooleanType WriteFAXImage(ImageInfo *image_info,Image *image,ExceptionInfo *exception)

{
  MagickBooleanType MVar1;
  ImageInfo *image_info_00;
  size_t sVar2;
  Image *pIVar3;
  int iVar4;
  uint uVar5;
  
  if (image_info == (ImageInfo *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");
  }
  if (image_info->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,
                  "WriteFAXImage");
  }
  if (image == (Image *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");
  }
  if (image->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");
  }
  if (image->debug != MagickFalse) {
    LogMagickEvent(TraceEvent,"coders/fax.c","WriteFAXImage",0x178,"%s",image->filename);
  }
  if (exception == (ExceptionInfo *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");
  }
  if (exception->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"
                 );
  }
  MVar1 = OpenBlob(image_info,image,WriteBinaryBlobMode,exception);
  if (MVar1 == MagickFalse) {
    return MagickFalse;
  }
  image_info_00 = CloneImageInfo(image_info);
  CopyMagickString(image_info_00->magick,"FAX",0x1000);
  sVar2 = GetImageListLength(image);
  iVar4 = 0;
  uVar5 = 0;
  while( true ) {
    TransformImageColorspace(image,sRGBColorspace,exception);
    MVar1 = HuffmanEncodeImage(image_info_00,image,image,exception);
    pIVar3 = GetNextImageInList(image);
    if (pIVar3 == (Image *)0x0) break;
    image = SyncNextImageInList(image);
    MVar1 = SetImageProgress(image,"Save/Images",CONCAT44(iVar4,uVar5),(ulonglong)sVar2);
    if ((MVar1 == MagickFalse) ||
       (iVar4 = iVar4 + (uint)(0xfffffffe < uVar5), uVar5 = uVar5 + 1,
       image_info_00->adjoin == MagickFalse)) break;
  }
  DestroyImageInfo(image_info_00);
  CloseBlob(image);
  return MVar1;
}



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

int FUN_001f8640(int param_1,int param_2,int param_3)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  
  if (param_1 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");
  }
  if (*(int *)(param_1 + 0x31f4) != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,
                  "WriteFAXImage");
  }
  if (param_2 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");
  }
  if (*(int *)(param_2 + 0x3344) != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");
  }
  if (*(int *)(param_2 + 0x3328) != 0) {
    LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);
  }
  if (param_3 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");
  }
  if (*(int *)(param_3 + 0x1c) != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"
                 );
  }
  iVar1 = OpenBlob(param_1,param_2,4,param_3);
  if (iVar1 == 0) {
    return 0;
  }
  iVar2 = CloneImageInfo(param_1);
  CopyMagickString(iVar2 + 0x1f0,"FAX",0x1000);
  uVar3 = GetImageListLength(param_2);
  iVar1 = 0;
  uVar6 = 0;
  while( true ) {
    TransformImageColorspace(param_2,0x17,param_3);
    iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);
    iVar5 = GetNextImageInList(param_2);
    if (iVar5 == 0) break;
    param_2 = SyncNextImageInList(param_2);
    iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);
    if ((iVar4 == 0) ||
       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))
    break;
  }
  DestroyImageInfo(iVar2);
  CloseBlob(param_2);
  return iVar4;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00038830
ADD EBX,0x1e09b7
SUB ESP,0x2c
MOV EDI,dword ptr [ESP + 0x40]
MOV ESI,dword ptr [ESP + 0x44]
TEST EDI,EDI
JZ 0x001f88b9
CMP dword ptr [EDI + 0x31f4],0xabacadab
JNZ 0x001f889a
TEST ESI,ESI
JZ 0x001f887b
CMP dword ptr [ESI + 0x3344],0xabacadab
JNZ 0x001f885c
MOV EAX,dword ptr [ESI + 0x3328]
TEST EAX,EAX
JNZ 0x001f87e8
MOV EBP,dword ptr [ESP + 0x48]
TEST EBP,EBP
JZ 0x001f883d
MOV EAX,dword ptr [ESP + 0x48]
CMP dword ptr [EAX + 0x1c],0xabacadab
JNZ 0x001f881e
PUSH dword ptr [ESP + 0x48]
PUSH 0x4
PUSH ESI
PUSH EDI
CALL 0x00032230
ADD ESP,0x10
MOV EDX,EAX
TEST EAX,EAX
JNZ 0x001f86d8
ADD ESP,0x2c
MOV EAX,EDX
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
XOR EBP,EBP
PUSH EDI
XOR EDI,EDI
CALL 0x000324c0
MOV ECX,EAX
MOV dword ptr [ESP + 0x28],EAX
ADD ESP,0xc
LEA EAX,[EBX + 0xfff01015]
PUSH 0x1000
PUSH EAX
MOV EAX,ECX
ADD EAX,0x1f0
PUSH EAX
CALL 0x00030b70
MOV dword ptr [ESP],ESI
CALL 0x00032180
ADD ESP,0x10
MOV dword ptr [ESP + 0x10],EAX
LEA EAX,[EBX + 0xffef2e09]
MOV dword ptr [ESP + 0x14],0x0
MOV dword ptr [ESP + 0x1c],EAX
JMP 0x001f877f
SUB ESP,0xc
PUSH ESI
CALL 0x00031b80
MOV EDX,EBP
MOV ESI,EAX
MOV EAX,EDI
ADD EAX,0x1
ADC EDX,0x0
MOV dword ptr [ESP + 0x18],EAX
MOV dword ptr [ESP + 0x1c],EDX
POP EDX
POP ECX
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x1c]
PUSH EBP
PUSH EDI
PUSH dword ptr [ESP + 0x34]
PUSH ESI
CALL 0x00033840
ADD ESP,0x20
MOV EDX,EAX
TEST EAX,EAX
JZ 0x001f87bb
MOV EAX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JZ 0x001f87bb
MOV EDI,dword ptr [ESP + 0x8]
MOV EBP,dword ptr [ESP + 0xc]
SUB ESP,0x4
PUSH dword ptr [ESP + 0x4c]
PUSH 0x17
PUSH ESI
CALL 0x00032530
ADD ESP,0x10
PUSH dword ptr [ESP + 0x48]
PUSH ESI
PUSH ESI
PUSH dword ptr [ESP + 0x24]
CALL 0x000314b0
MOV dword ptr [ESP + 0x18],EAX
MOV dword ptr [ESP],ESI
CALL 0x000319e0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JNZ 0x001f8730
MOV dword ptr [ESP + 0x8],EDX
SUB ESP,0xc
PUSH dword ptr [ESP + 0x24]
CALL 0x00031450
MOV dword ptr [ESP],ESI
CALL 0x000311d0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
ADD ESP,0x2c
POP EBX
POP ESI
MOV EAX,EDX
POP EDI
POP EBP
RET
LEA EAX,[ESI + 0x318]
SUB ESP,0x8
PUSH EAX
LEA EAX,[EBX + 0xffedde4e]
PUSH EAX
LEA EAX,[EBX + 0xfff0114c]
PUSH 0x178
PUSH EAX
LEA EAX,[EBX + 0xfff01000]
PUSH EAX
PUSH 0x8000
CALL 0x000323b0
ADD ESP,0x20
JMP 0x001f8698
LEA EAX,[EBX + 0xfff0115c]
PUSH EAX
LEA EAX,[EBX + 0xfff01000]
PUSH 0x17a
PUSH EAX
LEA EAX,[EBX + 0xffec776c]
PUSH EAX
CALL 0x000313d0
LEA EAX,[EBX + 0xfff0115c]
PUSH EAX
LEA EAX,[EBX + 0xfff01000]
PUSH 0x179
PUSH EAX
LEA EAX,[EBX + 0xffec6a3c]
PUSH EAX
CALL 0x000313d0
LEA EAX,[EBX + 0xfff0115c]
PUSH EAX
LEA EAX,[EBX + 0xfff01000]
PUSH 0x176
PUSH EAX
LEA EAX,[EBX + 0xffed1338]
PUSH EAX
CALL 0x000313d0
LEA EAX,[EBX + 0xfff0115c]
PUSH EAX
LEA EAX,[EBX + 0xfff01000]
PUSH 0x175
PUSH EAX
LEA EAX,[EBX + 0xffede594]
PUSH EAX
CALL 0x000313d0
LEA EAX,[EBX + 0xfff0115c]
PUSH EAX
LEA EAX,[EBX + 0xfff01000]
PUSH 0x174
PUSH EAX
LEA EAX,[EBX + 0xffec5b28]
PUSH EAX
CALL 0x000313d0
LEA EAX,[EBX + 0xfff0115c]
PUSH EAX
LEA EAX,[EBX + 0xfff01000]
PUSH 0x173
PUSH EAX
LEA EAX,[EBX + 0xffec5b00]
PUSH EAX
CALL 0x000313d0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint FUN_001f8640(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }\n  if (*(int *)(param_1 + 0x31f4) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }\n  if (param_2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }\n  if (*(int *)(param_2 + 0x3344) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }\n  if (*(int *)(param_2 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }\n  if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }\n  iVar1 = OpenBlob(param_1,param_2,4,param_3);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  iVar2 = CloneImageInfo(param_1);\n  CopyMagickString(iVar2 + 0x1f0,"FAX",0x1000);\n  uVar3 = GetImageListLength(param_2);\n  iVar1 = 0;\n  uVar6 = 0;\n  while( true ) {\n    TransformImageColorspace(param_2,0x17,param_3);\n    iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);\n    iVar5 = GetNextImageInList(param_2);\n    if (iVar5 == 0) break;\n    param_2 = SyncNextImageInList(param_2);\n    iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);\n    if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;\n  }\n  DestroyImageInfo(iVar2);\n  CloseBlob(param_2);\n  return iVar4;\n}\n\n" comment (function_definition "int FUN_001f8640(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }\n  if (*(int *)(param_1 + 0x31f4) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }\n  if (param_2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }\n  if (*(int *)(param_2 + 0x3344) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }\n  if (*(int *)(param_2 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }\n  if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }\n  iVar1 = OpenBlob(param_1,param_2,4,param_3);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  iVar2 = CloneImageInfo(param_1);\n  CopyMagickString(iVar2 + 0x1f0,"FAX",0x1000);\n  uVar3 = GetImageListLength(param_2);\n  iVar1 = 0;\n  uVar6 = 0;\n  while( true ) {\n    TransformImageColorspace(param_2,0x17,param_3);\n    iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);\n    iVar5 = GetNextImageInList(param_2);\n    if (iVar5 == 0) break;\n    param_2 = SyncNextImageInList(param_2);\n    iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);\n    if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;\n  }\n  DestroyImageInfo(iVar2);\n  CloseBlob(param_2);\n  return iVar4;\n}" primitive_type (function_declarator "FUN_001f8640(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }\n  if (*(int *)(param_1 + 0x31f4) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }\n  if (param_2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }\n  if (*(int *)(param_2 + 0x3344) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }\n  if (*(int *)(param_2 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }\n  if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }\n  iVar1 = OpenBlob(param_1,param_2,4,param_3);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  iVar2 = CloneImageInfo(param_1);\n  CopyMagickString(iVar2 + 0x1f0,"FAX",0x1000);\n  uVar3 = GetImageListLength(param_2);\n  iVar1 = 0;\n  uVar6 = 0;\n  while( true ) {\n    TransformImageColorspace(param_2,0x17,param_3);\n    iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);\n    iVar5 = GetNextImageInList(param_2);\n    if (iVar5 == 0) break;\n    param_2 = SyncNextImageInList(param_2);\n    iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);\n    if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;\n  }\n  DestroyImageInfo(iVar2);\n  CloseBlob(param_2);\n  return iVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (if_statement "if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }" { comment (expression_statement "__assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");" (call_expression "__assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage")" identifier (argument_list "("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage")" ( (string_literal ""image_info != (const ImageInfo *) NULL"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x31f4) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x31f4) != -0x54535255)" ( (binary_expression "*(int *)(param_1 + 0x31f4) != -0x54535255" (pointer_expression "*(int *)(param_1 + 0x31f4)" * (cast_expression "(int *)(param_1 + 0x31f4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x31f4)" ( (binary_expression "param_1 + 0x31f4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }" { comment (expression_statement "__assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");" (call_expression "__assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage")" identifier (argument_list "("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage")" ( (string_literal ""image_info->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (if_statement "if (param_2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }" { comment (expression_statement "__assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");" (call_expression "__assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage")" identifier (argument_list "("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage")" ( (string_literal ""image != (Image *) NULL"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_2 + 0x3344) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }" if (parenthesized_expression "(*(int *)(param_2 + 0x3344) != -0x54535255)" ( (binary_expression "*(int *)(param_2 + 0x3344) != -0x54535255" (pointer_expression "*(int *)(param_2 + 0x3344)" * (cast_expression "(int *)(param_2 + 0x3344)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3344)" ( (binary_expression "param_2 + 0x3344" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }" { comment (expression_statement "__assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage")" identifier (argument_list "("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage")" ( (string_literal ""image->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_2 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);\n  }" if (parenthesized_expression "(*(int *)(param_2 + 0x3328) != 0)" ( (binary_expression "*(int *)(param_2 + 0x3328) != 0" (pointer_expression "*(int *)(param_2 + 0x3328)" * (cast_expression "(int *)(param_2 + 0x3328)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3328)" ( (binary_expression "param_2 + 0x3328" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);\n  }" { (expression_statement "LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);" (call_expression "LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318)" identifier (argument_list "(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318)" ( number_literal , (string_literal ""coders/fax.c"" " string_content ") , (string_literal ""WriteFAXImage"" " string_content ") , number_literal , (pointer_expression "&DAT_002b6e4e" & identifier) , (binary_expression "param_2 + 0x318" identifier + number_literal) ))) ;) })) (if_statement "if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }" { comment (expression_statement "__assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");" (call_expression "__assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage")" identifier (argument_list "("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage")" ( (string_literal ""exception != (ExceptionInfo *) NULL"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }" if (parenthesized_expression "(*(int *)(param_3 + 0x1c) != -0x54535255)" ( (binary_expression "*(int *)(param_3 + 0x1c) != -0x54535255" (pointer_expression "*(int *)(param_3 + 0x1c)" * (cast_expression "(int *)(param_3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }" { comment (expression_statement "__assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );" (call_expression "__assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 )" identifier (argument_list "("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 )" ( (string_literal ""exception->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (expression_statement "iVar1 = OpenBlob(param_1,param_2,4,param_3);" (assignment_expression "iVar1 = OpenBlob(param_1,param_2,4,param_3)" identifier = (call_expression "OpenBlob(param_1,param_2,4,param_3)" identifier (argument_list "(param_1,param_2,4,param_3)" ( identifier , identifier , number_literal , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = CloneImageInfo(param_1);" (assignment_expression "iVar2 = CloneImageInfo(param_1)" identifier = (call_expression "CloneImageInfo(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "CopyMagickString(iVar2 + 0x1f0,"FAX",0x1000);" (call_expression "CopyMagickString(iVar2 + 0x1f0,"FAX",0x1000)" identifier (argument_list "(iVar2 + 0x1f0,"FAX",0x1000)" ( (binary_expression "iVar2 + 0x1f0" identifier + number_literal) , (string_literal ""FAX"" " string_content ") , number_literal ))) ;) (expression_statement "uVar3 = GetImageListLength(param_2);" (assignment_expression "uVar3 = GetImageListLength(param_2)" identifier = (call_expression "GetImageListLength(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n    TransformImageColorspace(param_2,0x17,param_3);\n    iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);\n    iVar5 = GetNextImageInList(param_2);\n    if (iVar5 == 0) break;\n    param_2 = SyncNextImageInList(param_2);\n    iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);\n    if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    TransformImageColorspace(param_2,0x17,param_3);\n    iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);\n    iVar5 = GetNextImageInList(param_2);\n    if (iVar5 == 0) break;\n    param_2 = SyncNextImageInList(param_2);\n    iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);\n    if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;\n  }" { (expression_statement "TransformImageColorspace(param_2,0x17,param_3);" (call_expression "TransformImageColorspace(param_2,0x17,param_3)" identifier (argument_list "(param_2,0x17,param_3)" ( identifier , number_literal , identifier ))) ;) (expression_statement "iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);" (assignment_expression "iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3)" identifier = (call_expression "HuffmanEncodeImage(iVar2,param_2,param_2,param_3)" identifier (argument_list "(iVar2,param_2,param_2,param_3)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar5 = GetNextImageInList(param_2);" (assignment_expression "iVar5 = GetNextImageInList(param_2)" identifier = (call_expression "GetNextImageInList(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_2 = SyncNextImageInList(param_2);" (assignment_expression "param_2 = SyncNextImageInList(param_2)" identifier = (call_expression "SyncNextImageInList(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);" (assignment_expression "iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0)" identifier (argument_list "(param_2,"Save/Images",uVar6,iVar1,uVar3,0)" ( identifier , (string_literal ""Save/Images"" " string_content ") , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;" if (parenthesized_expression "((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))" ( (binary_expression "(iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0)" (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0)" ( (comma_expression "iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0" (assignment_expression "iVar1 = iVar1 + (uint)(0xfffffffe < uVar6)" identifier = (binary_expression "iVar1 + (uint)(0xfffffffe < uVar6)" identifier + (call_expression "(uint)(0xfffffffe < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < uVar6)" ( (binary_expression "0xfffffffe < uVar6" number_literal < identifier) ))))) , (comma_expression "uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) , (binary_expression "*(int *)(iVar2 + 0xc) == 0" (pointer_expression "*(int *)(iVar2 + 0xc)" * (cast_expression "(int *)(iVar2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) == number_literal))) ))) )) (break_statement "break;" break ;)) })) (expression_statement "DestroyImageInfo(iVar2);" (call_expression "DestroyImageInfo(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "CloseBlob(param_2);" (call_expression "CloseBlob(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "ExceptionType": Some values do not have unique names */\n/* WARNING: Enum "ChannelType": Some values do not have unique names */\n/* WARNING: Enum "GravityType": Some values do not have unique names */\n/* WARNING: Enum "DisposeType": Some values do not have unique names */\n/* WARNING: Enum "PixelChannel": Some values do not have unique names */\n/* WARNING: Enum "LogEventType": Some values do not have unique names */\n\nMagickBooleanType WriteFAXImage(ImageInfo *image_info,Image *image,ExceptionInfo *exception)\n\n{\n  MagickBooleanType MVar1;\n  ImageInfo *image_info_00;\n  size_t sVar2;\n  Image *pIVar3;\n  int iVar4;\n  uint uVar5;\n  \n  if (image_info == (ImageInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }\n  if (image_info->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }\n  if (image == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }\n  if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }\n  if (image->debug != MagickFalse) {\n    LogMagickEvent(TraceEvent,"coders/fax.c","WriteFAXImage",0x178,"%s",image->filename);\n  }\n  if (exception == (ExceptionInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }\n  if (exception->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }\n  MVar1 = OpenBlob(image_info,image,WriteBinaryBlobMode,exception);\n  if (MVar1 == MagickFalse) {\n    return MagickFalse;\n  }\n  image_info_00 = CloneImageInfo(image_info);\n  CopyMagickString(image_info_00->magick,"FAX",0x1000);\n  sVar2 = GetImageListLength(image);\n  iVar4 = 0;\n  uVar5 = 0;\n  while( true ) {\n    TransformImageColorspace(image,sRGBColorspace,exception);\n    MVar1 = HuffmanEncodeImage(image_info_00,image,image,exception);\n    pIVar3 = GetNextImageInList(image);\n    if (pIVar3 == (Image *)0x0) break;\n    image = SyncNextImageInList(image);\n    MVar1 = SetImageProgress(image,"Save/Images",CONCAT44(iVar4,uVar5),(ulonglong)sVar2);\n    if ((MVar1 == MagickFalse) ||\n       (iVar4 = iVar4 + (uint)(0xfffffffe < uVar5), uVar5 = uVar5 + 1,\n       image_info_00->adjoin == MagickFalse)) break;\n  }\n  DestroyImageInfo(image_info_00);\n  CloseBlob(image);\n  return MVar1;\n}\n\n" comment comment comment comment comment comment comment (function_definition "MagickBooleanType WriteFAXImage(ImageInfo *image_info,Image *image,ExceptionInfo *exception)\n\n{\n  MagickBooleanType MVar1;\n  ImageInfo *image_info_00;\n  size_t sVar2;\n  Image *pIVar3;\n  int iVar4;\n  uint uVar5;\n  \n  if (image_info == (ImageInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }\n  if (image_info->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }\n  if (image == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }\n  if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }\n  if (image->debug != MagickFalse) {\n    LogMagickEvent(TraceEvent,"coders/fax.c","WriteFAXImage",0x178,"%s",image->filename);\n  }\n  if (exception == (ExceptionInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }\n  if (exception->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }\n  MVar1 = OpenBlob(image_info,image,WriteBinaryBlobMode,exception);\n  if (MVar1 == MagickFalse) {\n    return MagickFalse;\n  }\n  image_info_00 = CloneImageInfo(image_info);\n  CopyMagickString(image_info_00->magick,"FAX",0x1000);\n  sVar2 = GetImageListLength(image);\n  iVar4 = 0;\n  uVar5 = 0;\n  while( true ) {\n    TransformImageColorspace(image,sRGBColorspace,exception);\n    MVar1 = HuffmanEncodeImage(image_info_00,image,image,exception);\n    pIVar3 = GetNextImageInList(image);\n    if (pIVar3 == (Image *)0x0) break;\n    image = SyncNextImageInList(image);\n    MVar1 = SetImageProgress(image,"Save/Images",CONCAT44(iVar4,uVar5),(ulonglong)sVar2);\n    if ((MVar1 == MagickFalse) ||\n       (iVar4 = iVar4 + (uint)(0xfffffffe < uVar5), uVar5 = uVar5 + 1,\n       image_info_00->adjoin == MagickFalse)) break;\n  }\n  DestroyImageInfo(image_info_00);\n  CloseBlob(image);\n  return MVar1;\n}" type_identifier (function_declarator "WriteFAXImage(ImageInfo *image_info,Image *image,ExceptionInfo *exception)" identifier (parameter_list "(ImageInfo *image_info,Image *image,ExceptionInfo *exception)" ( (parameter_declaration "ImageInfo *image_info" type_identifier (pointer_declarator "*image_info" * identifier)) , (parameter_declaration "Image *image" type_identifier (pointer_declarator "*image" * identifier)) , (parameter_declaration "ExceptionInfo *exception" type_identifier (pointer_declarator "*exception" * identifier)) ))) (compound_statement "{\n  MagickBooleanType MVar1;\n  ImageInfo *image_info_00;\n  size_t sVar2;\n  Image *pIVar3;\n  int iVar4;\n  uint uVar5;\n  \n  if (image_info == (ImageInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }\n  if (image_info->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }\n  if (image == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }\n  if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }\n  if (image->debug != MagickFalse) {\n    LogMagickEvent(TraceEvent,"coders/fax.c","WriteFAXImage",0x178,"%s",image->filename);\n  }\n  if (exception == (ExceptionInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }\n  if (exception->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }\n  MVar1 = OpenBlob(image_info,image,WriteBinaryBlobMode,exception);\n  if (MVar1 == MagickFalse) {\n    return MagickFalse;\n  }\n  image_info_00 = CloneImageInfo(image_info);\n  CopyMagickString(image_info_00->magick,"FAX",0x1000);\n  sVar2 = GetImageListLength(image);\n  iVar4 = 0;\n  uVar5 = 0;\n  while( true ) {\n    TransformImageColorspace(image,sRGBColorspace,exception);\n    MVar1 = HuffmanEncodeImage(image_info_00,image,image,exception);\n    pIVar3 = GetNextImageInList(image);\n    if (pIVar3 == (Image *)0x0) break;\n    image = SyncNextImageInList(image);\n    MVar1 = SetImageProgress(image,"Save/Images",CONCAT44(iVar4,uVar5),(ulonglong)sVar2);\n    if ((MVar1 == MagickFalse) ||\n       (iVar4 = iVar4 + (uint)(0xfffffffe < uVar5), uVar5 = uVar5 + 1,\n       image_info_00->adjoin == MagickFalse)) break;\n  }\n  DestroyImageInfo(image_info_00);\n  CloseBlob(image);\n  return MVar1;\n}" { (declaration "MagickBooleanType MVar1;" type_identifier identifier ;) (declaration "ImageInfo *image_info_00;" type_identifier (pointer_declarator "*image_info_00" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "Image *pIVar3;" type_identifier (pointer_declarator "*pIVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (if_statement "if (image_info == (ImageInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }" if (parenthesized_expression "(image_info == (ImageInfo *)0x0)" ( (binary_expression "image_info == (ImageInfo *)0x0" identifier == (cast_expression "(ImageInfo *)0x0" ( (type_descriptor "ImageInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }" { comment (expression_statement "__assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");" (call_expression "__assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage")" identifier (argument_list "("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage")" ( (string_literal ""image_info != (const ImageInfo *) NULL"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (if_statement "if (image_info->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }" if (parenthesized_expression "(image_info->signature != 0xabacadab)" ( (binary_expression "image_info->signature != 0xabacadab" (field_expression "image_info->signature" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }" { comment (expression_statement "__assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");" (call_expression "__assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage")" identifier (argument_list "("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage")" ( (string_literal ""image_info->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (if_statement "if (image == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }" if (parenthesized_expression "(image == (Image *)0x0)" ( (binary_expression "image == (Image *)0x0" identifier == (cast_expression "(Image *)0x0" ( (type_descriptor "Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }" { comment (expression_statement "__assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");" (call_expression "__assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage")" identifier (argument_list "("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage")" ( (string_literal ""image != (Image *) NULL"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (if_statement "if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }" if (parenthesized_expression "(image->signature != 0xabacadab)" ( (binary_expression "image->signature != 0xabacadab" (field_expression "image->signature" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }" { comment (expression_statement "__assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage")" identifier (argument_list "("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage")" ( (string_literal ""image->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (if_statement "if (image->debug != MagickFalse) {\n    LogMagickEvent(TraceEvent,"coders/fax.c","WriteFAXImage",0x178,"%s",image->filename);\n  }" if (parenthesized_expression "(image->debug != MagickFalse)" ( (binary_expression "image->debug != MagickFalse" (field_expression "image->debug" identifier -> field_identifier) != identifier) )) (compound_statement "{\n    LogMagickEvent(TraceEvent,"coders/fax.c","WriteFAXImage",0x178,"%s",image->filename);\n  }" { (expression_statement "LogMagickEvent(TraceEvent,"coders/fax.c","WriteFAXImage",0x178,"%s",image->filename);" (call_expression "LogMagickEvent(TraceEvent,"coders/fax.c","WriteFAXImage",0x178,"%s",image->filename)" identifier (argument_list "(TraceEvent,"coders/fax.c","WriteFAXImage",0x178,"%s",image->filename)" ( identifier , (string_literal ""coders/fax.c"" " string_content ") , (string_literal ""WriteFAXImage"" " string_content ") , number_literal , (string_literal ""%s"" " string_content ") , (field_expression "image->filename" identifier -> field_identifier) ))) ;) })) (if_statement "if (exception == (ExceptionInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }" if (parenthesized_expression "(exception == (ExceptionInfo *)0x0)" ( (binary_expression "exception == (ExceptionInfo *)0x0" identifier == (cast_expression "(ExceptionInfo *)0x0" ( (type_descriptor "ExceptionInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }" { comment (expression_statement "__assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");" (call_expression "__assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage")" identifier (argument_list "("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage")" ( (string_literal ""exception != (ExceptionInfo *) NULL"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (if_statement "if (exception->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }" if (parenthesized_expression "(exception->signature != 0xabacadab)" ( (binary_expression "exception->signature != 0xabacadab" (field_expression "exception->signature" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }" { comment (expression_statement "__assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );" (call_expression "__assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 )" identifier (argument_list "("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 )" ( (string_literal ""exception->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (expression_statement "MVar1 = OpenBlob(image_info,image,WriteBinaryBlobMode,exception);" (assignment_expression "MVar1 = OpenBlob(image_info,image,WriteBinaryBlobMode,exception)" identifier = (call_expression "OpenBlob(image_info,image,WriteBinaryBlobMode,exception)" identifier (argument_list "(image_info,image,WriteBinaryBlobMode,exception)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (MVar1 == MagickFalse) {\n    return MagickFalse;\n  }" if (parenthesized_expression "(MVar1 == MagickFalse)" ( (binary_expression "MVar1 == MagickFalse" identifier == identifier) )) (compound_statement "{\n    return MagickFalse;\n  }" { (return_statement "return MagickFalse;" return identifier ;) })) (expression_statement "image_info_00 = CloneImageInfo(image_info);" (assignment_expression "image_info_00 = CloneImageInfo(image_info)" identifier = (call_expression "CloneImageInfo(image_info)" identifier (argument_list "(image_info)" ( identifier )))) ;) (expression_statement "CopyMagickString(image_info_00->magick,"FAX",0x1000);" (call_expression "CopyMagickString(image_info_00->magick,"FAX",0x1000)" identifier (argument_list "(image_info_00->magick,"FAX",0x1000)" ( (field_expression "image_info_00->magick" identifier -> field_identifier) , (string_literal ""FAX"" " string_content ") , number_literal ))) ;) (expression_statement "sVar2 = GetImageListLength(image);" (assignment_expression "sVar2 = GetImageListLength(image)" identifier = (call_expression "GetImageListLength(image)" identifier (argument_list "(image)" ( identifier )))) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n    TransformImageColorspace(image,sRGBColorspace,exception);\n    MVar1 = HuffmanEncodeImage(image_info_00,image,image,exception);\n    pIVar3 = GetNextImageInList(image);\n    if (pIVar3 == (Image *)0x0) break;\n    image = SyncNextImageInList(image);\n    MVar1 = SetImageProgress(image,"Save/Images",CONCAT44(iVar4,uVar5),(ulonglong)sVar2);\n    if ((MVar1 == MagickFalse) ||\n       (iVar4 = iVar4 + (uint)(0xfffffffe < uVar5), uVar5 = uVar5 + 1,\n       image_info_00->adjoin == MagickFalse)) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    TransformImageColorspace(image,sRGBColorspace,exception);\n    MVar1 = HuffmanEncodeImage(image_info_00,image,image,exception);\n    pIVar3 = GetNextImageInList(image);\n    if (pIVar3 == (Image *)0x0) break;\n    image = SyncNextImageInList(image);\n    MVar1 = SetImageProgress(image,"Save/Images",CONCAT44(iVar4,uVar5),(ulonglong)sVar2);\n    if ((MVar1 == MagickFalse) ||\n       (iVar4 = iVar4 + (uint)(0xfffffffe < uVar5), uVar5 = uVar5 + 1,\n       image_info_00->adjoin == MagickFalse)) break;\n  }" { (expression_statement "TransformImageColorspace(image,sRGBColorspace,exception);" (call_expression "TransformImageColorspace(image,sRGBColorspace,exception)" identifier (argument_list "(image,sRGBColorspace,exception)" ( identifier , identifier , identifier ))) ;) (expression_statement "MVar1 = HuffmanEncodeImage(image_info_00,image,image,exception);" (assignment_expression "MVar1 = HuffmanEncodeImage(image_info_00,image,image,exception)" identifier = (call_expression "HuffmanEncodeImage(image_info_00,image,image,exception)" identifier (argument_list "(image_info_00,image,image,exception)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "pIVar3 = GetNextImageInList(image);" (assignment_expression "pIVar3 = GetNextImageInList(image)" identifier = (call_expression "GetNextImageInList(image)" identifier (argument_list "(image)" ( identifier )))) ;) (if_statement "if (pIVar3 == (Image *)0x0) break;" if (parenthesized_expression "(pIVar3 == (Image *)0x0)" ( (binary_expression "pIVar3 == (Image *)0x0" identifier == (cast_expression "(Image *)0x0" ( (type_descriptor "Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "image = SyncNextImageInList(image);" (assignment_expression "image = SyncNextImageInList(image)" identifier = (call_expression "SyncNextImageInList(image)" identifier (argument_list "(image)" ( identifier )))) ;) (expression_statement "MVar1 = SetImageProgress(image,"Save/Images",CONCAT44(iVar4,uVar5),(ulonglong)sVar2);" (assignment_expression "MVar1 = SetImageProgress(image,"Save/Images",CONCAT44(iVar4,uVar5),(ulonglong)sVar2)" identifier = (call_expression "SetImageProgress(image,"Save/Images",CONCAT44(iVar4,uVar5),(ulonglong)sVar2)" identifier (argument_list "(image,"Save/Images",CONCAT44(iVar4,uVar5),(ulonglong)sVar2)" ( identifier , (string_literal ""Save/Images"" " string_content ") , (call_expression "CONCAT44(iVar4,uVar5)" identifier (argument_list "(iVar4,uVar5)" ( identifier , identifier ))) , (cast_expression "(ulonglong)sVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) )))) ;) (if_statement "if ((MVar1 == MagickFalse) ||\n       (iVar4 = iVar4 + (uint)(0xfffffffe < uVar5), uVar5 = uVar5 + 1,\n       image_info_00->adjoin == MagickFalse)) break;" if (parenthesized_expression "((MVar1 == MagickFalse) ||\n       (iVar4 = iVar4 + (uint)(0xfffffffe < uVar5), uVar5 = uVar5 + 1,\n       image_info_00->adjoin == MagickFalse))" ( (binary_expression "(MVar1 == MagickFalse) ||\n       (iVar4 = iVar4 + (uint)(0xfffffffe < uVar5), uVar5 = uVar5 + 1,\n       image_info_00->adjoin == MagickFalse)" (parenthesized_expression "(MVar1 == MagickFalse)" ( (binary_expression "MVar1 == MagickFalse" identifier == identifier) )) || (parenthesized_expression "(iVar4 = iVar4 + (uint)(0xfffffffe < uVar5), uVar5 = uVar5 + 1,\n       image_info_00->adjoin == MagickFalse)" ( (comma_expression "iVar4 = iVar4 + (uint)(0xfffffffe < uVar5), uVar5 = uVar5 + 1,\n       image_info_00->adjoin == MagickFalse" (assignment_expression "iVar4 = iVar4 + (uint)(0xfffffffe < uVar5)" identifier = (binary_expression "iVar4 + (uint)(0xfffffffe < uVar5)" identifier + (call_expression "(uint)(0xfffffffe < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < uVar5)" ( (binary_expression "0xfffffffe < uVar5" number_literal < identifier) ))))) , (comma_expression "uVar5 = uVar5 + 1,\n       image_info_00->adjoin == MagickFalse" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) , (binary_expression "image_info_00->adjoin == MagickFalse" (field_expression "image_info_00->adjoin" identifier -> field_identifier) == identifier))) ))) )) (break_statement "break;" break ;)) })) (expression_statement "DestroyImageInfo(image_info_00);" (call_expression "DestroyImageInfo(image_info_00)" identifier (argument_list "(image_info_00)" ( identifier ))) ;) (expression_statement "CloseBlob(image);" (call_expression "CloseBlob(image)" identifier (argument_list "(image)" ( identifier ))) ;) (return_statement "return MVar1;" return identifier ;) })))
(translation_unit "int FUN_001f8640(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (param_1 == 0) {\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }\n  if (*(int *)(param_1 + 0x31f4) != -0x54535255) {\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }\n  if (param_2 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }\n  if (*(int *)(param_2 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }\n  if (*(int *)(param_2 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);\n  }\n  if (param_3 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }\n  if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }\n  iVar1 = OpenBlob(param_1,param_2,4,param_3);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  iVar2 = CloneImageInfo(param_1);\n  CopyMagickString(iVar2 + 0x1f0,"FAX",0x1000);\n  uVar3 = GetImageListLength(param_2);\n  iVar1 = 0;\n  uVar6 = 0;\n  while( true ) {\n    TransformImageColorspace(param_2,0x17,param_3);\n    iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);\n    iVar5 = GetNextImageInList(param_2);\n    if (iVar5 == 0) break;\n    param_2 = SyncNextImageInList(param_2);\n    iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);\n    if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;\n  }\n  DestroyImageInfo(iVar2);\n  CloseBlob(param_2);\n  return iVar4;\n}\n\n" (function_definition "int FUN_001f8640(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (param_1 == 0) {\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }\n  if (*(int *)(param_1 + 0x31f4) != -0x54535255) {\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }\n  if (param_2 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }\n  if (*(int *)(param_2 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }\n  if (*(int *)(param_2 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);\n  }\n  if (param_3 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }\n  if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }\n  iVar1 = OpenBlob(param_1,param_2,4,param_3);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  iVar2 = CloneImageInfo(param_1);\n  CopyMagickString(iVar2 + 0x1f0,"FAX",0x1000);\n  uVar3 = GetImageListLength(param_2);\n  iVar1 = 0;\n  uVar6 = 0;\n  while( true ) {\n    TransformImageColorspace(param_2,0x17,param_3);\n    iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);\n    iVar5 = GetNextImageInList(param_2);\n    if (iVar5 == 0) break;\n    param_2 = SyncNextImageInList(param_2);\n    iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);\n    if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;\n  }\n  DestroyImageInfo(iVar2);\n  CloseBlob(param_2);\n  return iVar4;\n}" primitive_type (function_declarator "FUN_001f8640(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (param_1 == 0) {\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }\n  if (*(int *)(param_1 + 0x31f4) != -0x54535255) {\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }\n  if (param_2 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }\n  if (*(int *)(param_2 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }\n  if (*(int *)(param_2 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);\n  }\n  if (param_3 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }\n  if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }\n  iVar1 = OpenBlob(param_1,param_2,4,param_3);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  iVar2 = CloneImageInfo(param_1);\n  CopyMagickString(iVar2 + 0x1f0,"FAX",0x1000);\n  uVar3 = GetImageListLength(param_2);\n  iVar1 = 0;\n  uVar6 = 0;\n  while( true ) {\n    TransformImageColorspace(param_2,0x17,param_3);\n    iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);\n    iVar5 = GetNextImageInList(param_2);\n    if (iVar5 == 0) break;\n    param_2 = SyncNextImageInList(param_2);\n    iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);\n    if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;\n  }\n  DestroyImageInfo(iVar2);\n  CloseBlob(param_2);\n  return iVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (if_statement "if (param_1 == 0) {\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }" { (expression_statement "__assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");" (call_expression "__assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage")" identifier (argument_list "("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage")" ( (string_literal ""image_info != (const ImageInfo *) NULL"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x31f4) != -0x54535255) {\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x31f4) != -0x54535255)" ( (binary_expression "*(int *)(param_1 + 0x31f4) != -0x54535255" (pointer_expression "*(int *)(param_1 + 0x31f4)" * (cast_expression "(int *)(param_1 + 0x31f4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x31f4)" ( (binary_expression "param_1 + 0x31f4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }" { (expression_statement "__assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");" (call_expression "__assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage")" identifier (argument_list "("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage")" ( (string_literal ""image_info->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (if_statement "if (param_2 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }" { (expression_statement "__assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");" (call_expression "__assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage")" identifier (argument_list "("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage")" ( (string_literal ""image != (Image *) NULL"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_2 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }" if (parenthesized_expression "(*(int *)(param_2 + 0x3344) != -0x54535255)" ( (binary_expression "*(int *)(param_2 + 0x3344) != -0x54535255" (pointer_expression "*(int *)(param_2 + 0x3344)" * (cast_expression "(int *)(param_2 + 0x3344)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3344)" ( (binary_expression "param_2 + 0x3344" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }" { (expression_statement "__assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage")" identifier (argument_list "("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage")" ( (string_literal ""image->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_2 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);\n  }" if (parenthesized_expression "(*(int *)(param_2 + 0x3328) != 0)" ( (binary_expression "*(int *)(param_2 + 0x3328) != 0" (pointer_expression "*(int *)(param_2 + 0x3328)" * (cast_expression "(int *)(param_2 + 0x3328)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3328)" ( (binary_expression "param_2 + 0x3328" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);\n  }" { (expression_statement "LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);" (call_expression "LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318)" identifier (argument_list "(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318)" ( number_literal , (string_literal ""coders/fax.c"" " string_content ") , (string_literal ""WriteFAXImage"" " string_content ") , number_literal , (pointer_expression "&DAT_002b6e4e" & identifier) , (binary_expression "param_2 + 0x318" identifier + number_literal) ))) ;) })) (if_statement "if (param_3 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }" { (expression_statement "__assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");" (call_expression "__assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage")" identifier (argument_list "("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage")" ( (string_literal ""exception != (ExceptionInfo *) NULL"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }" if (parenthesized_expression "(*(int *)(param_3 + 0x1c) != -0x54535255)" ( (binary_expression "*(int *)(param_3 + 0x1c) != -0x54535255" (pointer_expression "*(int *)(param_3 + 0x1c)" * (cast_expression "(int *)(param_3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }" { (expression_statement "__assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );" (call_expression "__assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 )" identifier (argument_list "("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 )" ( (string_literal ""exception->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/fax.c"" " string_content ") , number_literal , (string_literal ""WriteFAXImage"" " string_content ") ))) ;) })) (expression_statement "iVar1 = OpenBlob(param_1,param_2,4,param_3);" (assignment_expression "iVar1 = OpenBlob(param_1,param_2,4,param_3)" identifier = (call_expression "OpenBlob(param_1,param_2,4,param_3)" identifier (argument_list "(param_1,param_2,4,param_3)" ( identifier , identifier , number_literal , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = CloneImageInfo(param_1);" (assignment_expression "iVar2 = CloneImageInfo(param_1)" identifier = (call_expression "CloneImageInfo(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "CopyMagickString(iVar2 + 0x1f0,"FAX",0x1000);" (call_expression "CopyMagickString(iVar2 + 0x1f0,"FAX",0x1000)" identifier (argument_list "(iVar2 + 0x1f0,"FAX",0x1000)" ( (binary_expression "iVar2 + 0x1f0" identifier + number_literal) , (string_literal ""FAX"" " string_content ") , number_literal ))) ;) (expression_statement "uVar3 = GetImageListLength(param_2);" (assignment_expression "uVar3 = GetImageListLength(param_2)" identifier = (call_expression "GetImageListLength(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n    TransformImageColorspace(param_2,0x17,param_3);\n    iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);\n    iVar5 = GetNextImageInList(param_2);\n    if (iVar5 == 0) break;\n    param_2 = SyncNextImageInList(param_2);\n    iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);\n    if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    TransformImageColorspace(param_2,0x17,param_3);\n    iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);\n    iVar5 = GetNextImageInList(param_2);\n    if (iVar5 == 0) break;\n    param_2 = SyncNextImageInList(param_2);\n    iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);\n    if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;\n  }" { (expression_statement "TransformImageColorspace(param_2,0x17,param_3);" (call_expression "TransformImageColorspace(param_2,0x17,param_3)" identifier (argument_list "(param_2,0x17,param_3)" ( identifier , number_literal , identifier ))) ;) (expression_statement "iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);" (assignment_expression "iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3)" identifier = (call_expression "HuffmanEncodeImage(iVar2,param_2,param_2,param_3)" identifier (argument_list "(iVar2,param_2,param_2,param_3)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar5 = GetNextImageInList(param_2);" (assignment_expression "iVar5 = GetNextImageInList(param_2)" identifier = (call_expression "GetNextImageInList(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_2 = SyncNextImageInList(param_2);" (assignment_expression "param_2 = SyncNextImageInList(param_2)" identifier = (call_expression "SyncNextImageInList(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);" (assignment_expression "iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0)" identifier (argument_list "(param_2,"Save/Images",uVar6,iVar1,uVar3,0)" ( identifier , (string_literal ""Save/Images"" " string_content ") , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;" if (parenthesized_expression "((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))" ( (binary_expression "(iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0)" (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0)" ( (comma_expression "iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0" (assignment_expression "iVar1 = iVar1 + (uint)(0xfffffffe < uVar6)" identifier = (binary_expression "iVar1 + (uint)(0xfffffffe < uVar6)" identifier + (call_expression "(uint)(0xfffffffe < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < uVar6)" ( (binary_expression "0xfffffffe < uVar6" number_literal < identifier) ))))) , (comma_expression "uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) , (binary_expression "*(int *)(iVar2 + 0xc) == 0" (pointer_expression "*(int *)(iVar2 + 0xc)" * (cast_expression "(int *)(iVar2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) == number_literal))) ))) )) (break_statement "break;" break ;)) })) (expression_statement "DestroyImageInfo(iVar2);" (call_expression "DestroyImageInfo(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "CloseBlob(param_2);" (call_expression "CloseBlob(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (pointer_expression & IDENT) , (binary_expression IDENT + LIT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) , (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT))) ))) )) (break_statement break ;)) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "int FUN_001f8640(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (param_1 == 0) {\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }\n  if (*(int *)(param_1 + 0x31f4) != -0x54535255) {\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }\n  if (param_2 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }\n  if (*(int *)(param_2 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }\n  if (*(int *)(param_2 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);\n  }\n  if (param_3 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }\n  if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }\n  iVar1 = OpenBlob(param_1,param_2,4,param_3);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  iVar2 = CloneImageInfo(param_1);\n  CopyMagickString(iVar2 + 0x1f0,"FAX",0x1000);\n  uVar3 = GetImageListLength(param_2);\n  iVar1 = 0;\n  uVar6 = 0;\n  while( true ) {\n    TransformImageColorspace(param_2,0x17,param_3);\n    iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);\n    iVar5 = GetNextImageInList(param_2);\n    if (iVar5 == 0) break;\n    param_2 = SyncNextImageInList(param_2);\n    iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);\n    if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;\n  }\n  DestroyImageInfo(iVar2);\n  CloseBlob(param_2);\n  return iVar4;\n}" (primitive_type "int") (function_declarator "FUN_001f8640(int param_1,int param_2,int param_3)" (identifier "FUN_001f8640") (parameter_list "(int param_1,int param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  \n  if (param_1 == 0) {\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }\n  if (*(int *)(param_1 + 0x31f4) != -0x54535255) {\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }\n  if (param_2 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }\n  if (*(int *)(param_2 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }\n  if (*(int *)(param_2 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);\n  }\n  if (param_3 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }\n  if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }\n  iVar1 = OpenBlob(param_1,param_2,4,param_3);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  iVar2 = CloneImageInfo(param_1);\n  CopyMagickString(iVar2 + 0x1f0,"FAX",0x1000);\n  uVar3 = GetImageListLength(param_2);\n  iVar1 = 0;\n  uVar6 = 0;\n  while( true ) {\n    TransformImageColorspace(param_2,0x17,param_3);\n    iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);\n    iVar5 = GetNextImageInList(param_2);\n    if (iVar5 == 0) break;\n    param_2 = SyncNextImageInList(param_2);\n    iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);\n    if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;\n  }\n  DestroyImageInfo(iVar2);\n  CloseBlob(param_2);\n  return iVar4;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (if_statement "if (param_1 == 0) {\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");\n  }" ({ "{") (expression_statement "__assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");" (call_expression "__assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage")" (identifier "__assert_fail") (argument_list "("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage")" (( "(") (string_literal ""image_info != (const ImageInfo *) NULL"" (" """) (string_content "image_info != (const ImageInfo *) NULL") (" """)) (, ",") (string_literal ""coders/fax.c"" (" """) (string_content "coders/fax.c") (" """)) (, ",") (number_literal "0x173") (, ",") (string_literal ""WriteFAXImage"" (" """) (string_content "WriteFAXImage") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x31f4) != -0x54535255) {\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x31f4) != -0x54535255)" (( "(") (binary_expression "*(int *)(param_1 + 0x31f4) != -0x54535255" (pointer_expression "*(int *)(param_1 + 0x31f4)" (* "*") (cast_expression "(int *)(param_1 + 0x31f4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x31f4)" (( "(") (binary_expression "param_1 + 0x31f4" (identifier "param_1") (+ "+") (number_literal "0x31f4")) () ")")))) (!= "!=") (number_literal "-0x54535255")) () ")")) (compound_statement "{\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");\n  }" ({ "{") (expression_statement "__assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage");" (call_expression "__assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage")" (identifier "__assert_fail") (argument_list "("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,\n                  "WriteFAXImage")" (( "(") (string_literal ""image_info->signature == MagickCoreSignature"" (" """) (string_content "image_info->signature == MagickCoreSignature") (" """)) (, ",") (string_literal ""coders/fax.c"" (" """) (string_content "coders/fax.c") (" """)) (, ",") (number_literal "0x174") (, ",") (string_literal ""WriteFAXImage"" (" """) (string_content "WriteFAXImage") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (param_2 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");\n  }" ({ "{") (expression_statement "__assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");" (call_expression "__assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage")" (identifier "__assert_fail") (argument_list "("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage")" (( "(") (string_literal ""image != (Image *) NULL"" (" """) (string_content "image != (Image *) NULL") (" """)) (, ",") (string_literal ""coders/fax.c"" (" """) (string_content "coders/fax.c") (" """)) (, ",") (number_literal "0x175") (, ",") (string_literal ""WriteFAXImage"" (" """) (string_content "WriteFAXImage") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_2 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x3344) != -0x54535255)" (( "(") (binary_expression "*(int *)(param_2 + 0x3344) != -0x54535255" (pointer_expression "*(int *)(param_2 + 0x3344)" (* "*") (cast_expression "(int *)(param_2 + 0x3344)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3344)" (( "(") (binary_expression "param_2 + 0x3344" (identifier "param_2") (+ "+") (number_literal "0x3344")) () ")")))) (!= "!=") (number_literal "-0x54535255")) () ")")) (compound_statement "{\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");\n  }" ({ "{") (expression_statement "__assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage")" (identifier "__assert_fail") (argument_list "("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage")" (( "(") (string_literal ""image->signature == MagickCoreSignature"" (" """) (string_content "image->signature == MagickCoreSignature") (" """)) (, ",") (string_literal ""coders/fax.c"" (" """) (string_content "coders/fax.c") (" """)) (, ",") (number_literal "0x176") (, ",") (string_literal ""WriteFAXImage"" (" """) (string_content "WriteFAXImage") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_2 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);\n  }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x3328) != 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x3328) != 0" (pointer_expression "*(int *)(param_2 + 0x3328)" (* "*") (cast_expression "(int *)(param_2 + 0x3328)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3328)" (( "(") (binary_expression "param_2 + 0x3328" (identifier "param_2") (+ "+") (number_literal "0x3328")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);\n  }" ({ "{") (expression_statement "LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);" (call_expression "LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318)" (identifier "LogMagickEvent") (argument_list "(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318)" (( "(") (number_literal "0x8000") (, ",") (string_literal ""coders/fax.c"" (" """) (string_content "coders/fax.c") (" """)) (, ",") (string_literal ""WriteFAXImage"" (" """) (string_content "WriteFAXImage") (" """)) (, ",") (number_literal "0x178") (, ",") (pointer_expression "&DAT_002b6e4e" (& "&") (identifier "DAT_002b6e4e")) (, ",") (binary_expression "param_2 + 0x318" (identifier "param_2") (+ "+") (number_literal "0x318")) () ")"))) (; ";")) (} "}"))) (if_statement "if (param_3 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");\n  }" ({ "{") (expression_statement "__assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");" (call_expression "__assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage")" (identifier "__assert_fail") (argument_list "("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage")" (( "(") (string_literal ""exception != (ExceptionInfo *) NULL"" (" """) (string_content "exception != (ExceptionInfo *) NULL") (" """)) (, ",") (string_literal ""coders/fax.c"" (" """) (string_content "coders/fax.c") (" """)) (, ",") (number_literal "0x179") (, ",") (string_literal ""WriteFAXImage"" (" """) (string_content "WriteFAXImage") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }" (if "if") (parenthesized_expression "(*(int *)(param_3 + 0x1c) != -0x54535255)" (( "(") (binary_expression "*(int *)(param_3 + 0x1c) != -0x54535255" (pointer_expression "*(int *)(param_3 + 0x1c)" (* "*") (cast_expression "(int *)(param_3 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1c)" (( "(") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) () ")")))) (!= "!=") (number_literal "-0x54535255")) () ")")) (compound_statement "{\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );\n  }" ({ "{") (expression_statement "__assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 );" (call_expression "__assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 )" (identifier "__assert_fail") (argument_list "("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"\n                 )" (( "(") (string_literal ""exception->signature == MagickCoreSignature"" (" """) (string_content "exception->signature == MagickCoreSignature") (" """)) (, ",") (string_literal ""coders/fax.c"" (" """) (string_content "coders/fax.c") (" """)) (, ",") (number_literal "0x17a") (, ",") (string_literal ""WriteFAXImage"" (" """) (string_content "WriteFAXImage") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = OpenBlob(param_1,param_2,4,param_3);" (assignment_expression "iVar1 = OpenBlob(param_1,param_2,4,param_3)" (identifier "iVar1") (= "=") (call_expression "OpenBlob(param_1,param_2,4,param_3)" (identifier "OpenBlob") (argument_list "(param_1,param_2,4,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (number_literal "4") (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar2 = CloneImageInfo(param_1);" (assignment_expression "iVar2 = CloneImageInfo(param_1)" (identifier "iVar2") (= "=") (call_expression "CloneImageInfo(param_1)" (identifier "CloneImageInfo") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "CopyMagickString(iVar2 + 0x1f0,"FAX",0x1000);" (call_expression "CopyMagickString(iVar2 + 0x1f0,"FAX",0x1000)" (identifier "CopyMagickString") (argument_list "(iVar2 + 0x1f0,"FAX",0x1000)" (( "(") (binary_expression "iVar2 + 0x1f0" (identifier "iVar2") (+ "+") (number_literal "0x1f0")) (, ",") (string_literal ""FAX"" (" """) (string_content "FAX") (" """)) (, ",") (number_literal "0x1000") () ")"))) (; ";")) (expression_statement "uVar3 = GetImageListLength(param_2);" (assignment_expression "uVar3 = GetImageListLength(param_2)" (identifier "uVar3") (= "=") (call_expression "GetImageListLength(param_2)" (identifier "GetImageListLength") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" (identifier "iVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (while_statement "while( true ) {\n    TransformImageColorspace(param_2,0x17,param_3);\n    iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);\n    iVar5 = GetNextImageInList(param_2);\n    if (iVar5 == 0) break;\n    param_2 = SyncNextImageInList(param_2);\n    iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);\n    if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    TransformImageColorspace(param_2,0x17,param_3);\n    iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);\n    iVar5 = GetNextImageInList(param_2);\n    if (iVar5 == 0) break;\n    param_2 = SyncNextImageInList(param_2);\n    iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);\n    if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;\n  }" ({ "{") (expression_statement "TransformImageColorspace(param_2,0x17,param_3);" (call_expression "TransformImageColorspace(param_2,0x17,param_3)" (identifier "TransformImageColorspace") (argument_list "(param_2,0x17,param_3)" (( "(") (identifier "param_2") (, ",") (number_literal "0x17") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);" (assignment_expression "iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3)" (identifier "iVar4") (= "=") (call_expression "HuffmanEncodeImage(iVar2,param_2,param_2,param_3)" (identifier "HuffmanEncodeImage") (argument_list "(iVar2,param_2,param_2,param_3)" (( "(") (identifier "iVar2") (, ",") (identifier "param_2") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "iVar5 = GetNextImageInList(param_2);" (assignment_expression "iVar5 = GetNextImageInList(param_2)" (identifier "iVar5") (= "=") (call_expression "GetNextImageInList(param_2)" (identifier "GetNextImageInList") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) break;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_2 = SyncNextImageInList(param_2);" (assignment_expression "param_2 = SyncNextImageInList(param_2)" (identifier "param_2") (= "=") (call_expression "SyncNextImageInList(param_2)" (identifier "SyncNextImageInList") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);" (assignment_expression "iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0)" (identifier "iVar4") (= "=") (call_expression "SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0)" (identifier "SetImageProgress") (argument_list "(param_2,"Save/Images",uVar6,iVar1,uVar3,0)" (( "(") (identifier "param_2") (, ",") (string_literal ""Save/Images"" (" """) (string_content "Save/Images") (" """)) (, ",") (identifier "uVar6") (, ",") (identifier "iVar1") (, ",") (identifier "uVar3") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if ((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))\n    break;" (if "if") (parenthesized_expression "((iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))" (( "(") (binary_expression "(iVar4 == 0) ||\n       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0)" (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0)" (( "(") (comma_expression "iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0" (assignment_expression "iVar1 = iVar1 + (uint)(0xfffffffe < uVar6)" (identifier "iVar1") (= "=") (binary_expression "iVar1 + (uint)(0xfffffffe < uVar6)" (identifier "iVar1") (+ "+") (call_expression "(uint)(0xfffffffe < uVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0xfffffffe < uVar6)" (( "(") (binary_expression "0xfffffffe < uVar6" (number_literal "0xfffffffe") (< "<") (identifier "uVar6")) () ")"))))) (, ",") (comma_expression "uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0" (assignment_expression "uVar6 = uVar6 + 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1"))) (, ",") (binary_expression "*(int *)(iVar2 + 0xc) == 0" (pointer_expression "*(int *)(iVar2 + 0xc)" (* "*") (cast_expression "(int *)(iVar2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}"))) (expression_statement "DestroyImageInfo(iVar2);" (call_expression "DestroyImageInfo(iVar2)" (identifier "DestroyImageInfo") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "CloseBlob(param_2);" (call_expression "CloseBlob(param_2)" (identifier "CloseBlob") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "ExceptionType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */
/* WARNING: Enum "LogEventType": Some values do not have unique names */

type_1 function_1(type_2 *var_1,type_3 *var_3,type_4 *var_6)

{
  type_1 var_8;
  type_2 *image_info_00;
  size_t sVar2;
  type_3 *var_15;
  int var_19;
  type_5 var_20;
  
  if (var_1 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");
  }
  if (var_1->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    var_2("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,
                  "WriteFAXImage");
  }
  if (var_3 == (type_3 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");
  }
  if (var_3->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    var_2("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");
  }
  if (var_3->debug != var_4) {
    var_5(TraceEvent,"coders/fax.c","WriteFAXImage",0x178,"%s",var_3->filename);
  }
  if (var_6 == (type_4 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");
  }
  if (var_6->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    var_2("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"
                 );
  }
  var_8 = var_7(var_1,var_3,WriteBinaryBlobMode,var_6);
  if (var_8 == var_4) {
    return var_4;
  }
  image_info_00 = var_9(var_1);
  var_10(image_info_00->magick,"FAX",0x1000);
  sVar2 = var_11(var_3);
  var_19 = 0;
  var_20 = 0;
  while( true ) {
    var_12(var_3,sRGBColorspace,var_6);
    var_8 = var_13(image_info_00,var_3,var_3,var_6);
    var_15 = var_14(var_3);
    if (var_15 == (type_3 *)0x0) break;
    var_3 = var_16(var_3);
    var_8 = var_17(var_3,"Save/Images",var_18(var_19,var_20),(type_6)sVar2);
    if ((var_8 == var_4) ||
       (var_19 = var_19 + (type_5)(0xfffffffe < var_20), var_20 = var_20 + 1,
       image_info_00->adjoin == var_4)) break;
  }
  var_21(image_info_00);
  var_22(var_3);
  return var_8;
}


(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: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (string_literal (string_content)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier) (identifier) (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (identifier)))))) right: (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) consequence: (break_statement)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement (identifier)))))

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

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

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  
  if (param_1 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image_info != (const ImageInfo *) NULL","coders/fax.c",0x173,"WriteFAXImage");
  }
  if (*(int *)(param_1 + 0x31f4) != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image_info->signature == MagickCoreSignature","coders/fax.c",0x174,
                  "WriteFAXImage");
  }
  if (param_2 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image != (Image *) NULL","coders/fax.c",0x175,"WriteFAXImage");
  }
  if (*(int *)(param_2 + 0x3344) != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image->signature == MagickCoreSignature","coders/fax.c",0x176,"WriteFAXImage");
  }
  if (*(int *)(param_2 + 0x3328) != 0) {
    LogMagickEvent(0x8000,"coders/fax.c","WriteFAXImage",0x178,&DAT_002b6e4e,param_2 + 0x318);
  }
  if (param_3 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception != (ExceptionInfo *) NULL","coders/fax.c",0x179,"WriteFAXImage");
  }
  if (*(int *)(param_3 + 0x1c) != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception->signature == MagickCoreSignature","coders/fax.c",0x17a,"WriteFAXImage"
                 );
  }
  iVar1 = OpenBlob(param_1,param_2,4,param_3);
  if (iVar1 == 0) {
    return 0;
  }
  iVar2 = CloneImageInfo(param_1);
  CopyMagickString(iVar2 + 0x1f0,"FAX",0x1000);
  uVar3 = GetImageListLength(param_2);
  iVar1 = 0;
  uVar6 = 0;
  while( true ) {
    TransformImageColorspace(param_2,0x17,param_3);
    iVar4 = HuffmanEncodeImage(iVar2,param_2,param_2,param_3);
    iVar5 = GetNextImageInList(param_2);
    if (iVar5 == 0) break;
    param_2 = SyncNextImageInList(param_2);
    iVar4 = SetImageProgress(param_2,"Save/Images",uVar6,iVar1,uVar3,0);
    if ((iVar4 == 0) ||
       (iVar1 = iVar1 + (uint)(0xfffffffe < uVar6), uVar6 = uVar6 + 1, *(int *)(iVar2 + 0xc) == 0))
    break;
  }
  DestroyImageInfo(iVar2);
  CloseBlob(param_2);
  return iVar4;
}

