
/* 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 "ExceptionType": Some values do not have unique names */

Image * GetImageCache(ImageInfo *image_info,char *path,ExceptionInfo *exception)

{
  long lVar1;
  undefined8 uVar2;
  Image *pIVar3;
  long lVar4;
  long in_FS_OFFSET;
  char key [4096];
  
  lVar1 = *(long *)(in_FS_OFFSET + 0x28);
  FormatLocaleString(key,0x1000,"cache:%s",path);
  uVar2 = AcquireExceptionInfo();
  pIVar3 = (Image *)GetImageRegistry(1,key,uVar2);
  DestroyExceptionInfo(uVar2);
  if (pIVar3 == (Image *)0x0) {
    lVar4 = CloneImageInfo(image_info);
    if (path != (char *)0x0) {
      CopyMagickString(lVar4 + 0x2270,path,0x1000);
    }
    pIVar3 = (Image *)ReadImage(lVar4,exception);
    DestroyImageInfo(lVar4);
    if (pIVar3 != (Image *)0x0) {
      SetImageRegistry(1,key,pIVar3,exception);
    }
  }
  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {
    return pIVar3;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}



long FUN_001eefcc(undefined8 param_1,long param_2,undefined8 param_3)

{
  undefined8 uVar1;
  long lVar2;
  long lVar3;
  long in_FS_OFFSET;
  undefined1 auStack_1038 [4104];
  long local_30;
  
  local_30 = *(long *)(in_FS_OFFSET + 0x28);
  FormatLocaleString(auStack_1038,0x1000,"cache:%s",param_2);
  uVar1 = AcquireExceptionInfo();
  lVar2 = GetImageRegistry(1,auStack_1038,uVar1);
  DestroyExceptionInfo(uVar1);
  if (lVar2 == 0) {
    lVar3 = CloneImageInfo(param_1);
    if (param_2 != 0) {
      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);
    }
    lVar2 = ReadImage(lVar3,param_3);
    DestroyImageInfo(lVar3);
    if (lVar2 != 0) {
      SetImageRegistry(1,auStack_1038,lVar2,param_3);
    }
  }
  if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {
    return lVar2;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}


PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x1010
MOV R14,RDI
MOV R12,RSI
MOV R13,RDX
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x1008],RAX
XOR EAX,EAX
MOV RBX,RSP
MOV RCX,RSI
LEA RDX,[0x22272b]
MOV ESI,0x1000
MOV RDI,RBX
CALL 0x001132d0
CALL 0x00112e20
MOV RBP,RAX
MOV RDX,RAX
MOV RSI,RBX
MOV EDI,0x1
CALL 0x00111a40
MOV RBX,RAX
MOV RDI,RBP
CALL 0x00113380
TEST RBX,RBX
JZ 0x001ef05f
MOV RAX,RBX
MOV RCX,qword ptr [RSP + 0x1008]
XOR RCX,qword ptr FS:[0x28]
JNZ 0x001ef0b3
ADD RSP,0x1010
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
MOV RDI,R14
CALL 0x00112720
MOV RBP,RAX
TEST R12,R12
JZ 0x001ef083
LEA RDI,[RAX + 0x2270]
MOV EDX,0x1000
MOV RSI,R12
CALL 0x001116e0
MOV RSI,R13
MOV RDI,RBP
CALL 0x00112dc0
MOV RBX,RAX
MOV RDI,RBP
CALL 0x00111c60
TEST RBX,RBX
JZ 0x001ef039
MOV RSI,RSP
MOV RCX,R13
MOV RDX,RBX
MOV EDI,0x1
CALL 0x00112f10
JMP 0x001ef039
CALL 0x00112a70
(translation_unit "long FUN_001eefcc(undefined8 param_1,long param_2,undefined8 param_3)\n\n{\n  undefined8 uVar1;\n  long lVar2;\n  long lVar3;\n  long in_FS_OFFSET;\n  undefined1 auStack_1038 [4104];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  FormatLocaleString(auStack_1038,0x1000,"cache:%s",param_2);\n  uVar1 = AcquireExceptionInfo();\n  lVar2 = GetImageRegistry(1,auStack_1038,uVar1);\n  DestroyExceptionInfo(uVar1);\n  if (lVar2 == 0) {\n    lVar3 = CloneImageInfo(param_1);\n    if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }\n    lVar2 = ReadImage(lVar3,param_3);\n    DestroyImageInfo(lVar3);\n    if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }\n  }\n  if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return lVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "long FUN_001eefcc(undefined8 param_1,long param_2,undefined8 param_3)\n\n{\n  undefined8 uVar1;\n  long lVar2;\n  long lVar3;\n  long in_FS_OFFSET;\n  undefined1 auStack_1038 [4104];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  FormatLocaleString(auStack_1038,0x1000,"cache:%s",param_2);\n  uVar1 = AcquireExceptionInfo();\n  lVar2 = GetImageRegistry(1,auStack_1038,uVar1);\n  DestroyExceptionInfo(uVar1);\n  if (lVar2 == 0) {\n    lVar3 = CloneImageInfo(param_1);\n    if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }\n    lVar2 = ReadImage(lVar3,param_3);\n    DestroyImageInfo(lVar3);\n    if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }\n  }\n  if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return lVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" (sized_type_specifier "long" long) (function_declarator "FUN_001eefcc(undefined8 param_1,long param_2,undefined8 param_3)" identifier (parameter_list "(undefined8 param_1,long param_2,undefined8 param_3)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  long lVar2;\n  long lVar3;\n  long in_FS_OFFSET;\n  undefined1 auStack_1038 [4104];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  FormatLocaleString(auStack_1038,0x1000,"cache:%s",param_2);\n  uVar1 = AcquireExceptionInfo();\n  lVar2 = GetImageRegistry(1,auStack_1038,uVar1);\n  DestroyExceptionInfo(uVar1);\n  if (lVar2 == 0) {\n    lVar3 = CloneImageInfo(param_1);\n    if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }\n    lVar2 = ReadImage(lVar3,param_3);\n    DestroyImageInfo(lVar3);\n    if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }\n  }\n  if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return lVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auStack_1038 [4104];" type_identifier (array_declarator "auStack_1038 [4104]" identifier [ number_literal ]) ;) (declaration "long local_30;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "FormatLocaleString(auStack_1038,0x1000,"cache:%s",param_2);" (call_expression "FormatLocaleString(auStack_1038,0x1000,"cache:%s",param_2)" identifier (argument_list "(auStack_1038,0x1000,"cache:%s",param_2)" ( identifier , number_literal , (string_literal ""cache:%s"" " string_content ") , identifier ))) ;) (expression_statement "uVar1 = AcquireExceptionInfo();" (assignment_expression "uVar1 = AcquireExceptionInfo()" identifier = (call_expression "AcquireExceptionInfo()" identifier (argument_list "()" ( )))) ;) (expression_statement "lVar2 = GetImageRegistry(1,auStack_1038,uVar1);" (assignment_expression "lVar2 = GetImageRegistry(1,auStack_1038,uVar1)" identifier = (call_expression "GetImageRegistry(1,auStack_1038,uVar1)" identifier (argument_list "(1,auStack_1038,uVar1)" ( number_literal , identifier , identifier )))) ;) (expression_statement "DestroyExceptionInfo(uVar1);" (call_expression "DestroyExceptionInfo(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))) ;) (if_statement "if (lVar2 == 0) {\n    lVar3 = CloneImageInfo(param_1);\n    if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }\n    lVar2 = ReadImage(lVar3,param_3);\n    DestroyImageInfo(lVar3);\n    if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }\n  }" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    lVar3 = CloneImageInfo(param_1);\n    if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }\n    lVar2 = ReadImage(lVar3,param_3);\n    DestroyImageInfo(lVar3);\n    if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }\n  }" { (expression_statement "lVar3 = CloneImageInfo(param_1);" (assignment_expression "lVar3 = CloneImageInfo(param_1)" identifier = (call_expression "CloneImageInfo(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }" { (expression_statement "CopyMagickString(lVar3 + 0x2270,param_2,0x1000);" (call_expression "CopyMagickString(lVar3 + 0x2270,param_2,0x1000)" identifier (argument_list "(lVar3 + 0x2270,param_2,0x1000)" ( (binary_expression "lVar3 + 0x2270" identifier + number_literal) , identifier , number_literal ))) ;) })) (expression_statement "lVar2 = ReadImage(lVar3,param_3);" (assignment_expression "lVar2 = ReadImage(lVar3,param_3)" identifier = (call_expression "ReadImage(lVar3,param_3)" identifier (argument_list "(lVar3,param_3)" ( identifier , identifier )))) ;) (expression_statement "DestroyImageInfo(lVar3);" (call_expression "DestroyImageInfo(lVar3)" identifier (argument_list "(lVar3)" ( identifier ))) ;) (if_statement "if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }" { (expression_statement "SetImageRegistry(1,auStack_1038,lVar2,param_3);" (call_expression "SetImageRegistry(1,auStack_1038,lVar2,param_3)" identifier (argument_list "(1,auStack_1038,lVar2,param_3)" ( number_literal , identifier , identifier , identifier ))) ;) })) })) (if_statement "if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return lVar2;\n  }" if (parenthesized_expression "(local_30 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_30 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return lVar2;\n  }" { (return_statement "return lVar2;" return identifier ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* 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 "ExceptionType": Some values do not have unique names */\n\nImage * GetImageCache(ImageInfo *image_info,char *path,ExceptionInfo *exception)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  Image *pIVar3;\n  long lVar4;\n  long in_FS_OFFSET;\n  char key [4096];\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  FormatLocaleString(key,0x1000,"cache:%s",path);\n  uVar2 = AcquireExceptionInfo();\n  pIVar3 = (Image *)GetImageRegistry(1,key,uVar2);\n  DestroyExceptionInfo(uVar2);\n  if (pIVar3 == (Image *)0x0) {\n    lVar4 = CloneImageInfo(image_info);\n    if (path != (char *)0x0) {\n      CopyMagickString(lVar4 + 0x2270,path,0x1000);\n    }\n    pIVar3 = (Image *)ReadImage(lVar4,exception);\n    DestroyImageInfo(lVar4);\n    if (pIVar3 != (Image *)0x0) {\n      SetImageRegistry(1,key,pIVar3,exception);\n    }\n  }\n  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pIVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" comment comment comment comment comment (function_definition "Image * GetImageCache(ImageInfo *image_info,char *path,ExceptionInfo *exception)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  Image *pIVar3;\n  long lVar4;\n  long in_FS_OFFSET;\n  char key [4096];\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  FormatLocaleString(key,0x1000,"cache:%s",path);\n  uVar2 = AcquireExceptionInfo();\n  pIVar3 = (Image *)GetImageRegistry(1,key,uVar2);\n  DestroyExceptionInfo(uVar2);\n  if (pIVar3 == (Image *)0x0) {\n    lVar4 = CloneImageInfo(image_info);\n    if (path != (char *)0x0) {\n      CopyMagickString(lVar4 + 0x2270,path,0x1000);\n    }\n    pIVar3 = (Image *)ReadImage(lVar4,exception);\n    DestroyImageInfo(lVar4);\n    if (pIVar3 != (Image *)0x0) {\n      SetImageRegistry(1,key,pIVar3,exception);\n    }\n  }\n  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pIVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" type_identifier (pointer_declarator "* GetImageCache(ImageInfo *image_info,char *path,ExceptionInfo *exception)" * (function_declarator "GetImageCache(ImageInfo *image_info,char *path,ExceptionInfo *exception)" identifier (parameter_list "(ImageInfo *image_info,char *path,ExceptionInfo *exception)" ( (parameter_declaration "ImageInfo *image_info" type_identifier (pointer_declarator "*image_info" * identifier)) , (parameter_declaration "char *path" primitive_type (pointer_declarator "*path" * identifier)) , (parameter_declaration "ExceptionInfo *exception" type_identifier (pointer_declarator "*exception" * identifier)) )))) (compound_statement "{\n  long lVar1;\n  undefined8 uVar2;\n  Image *pIVar3;\n  long lVar4;\n  long in_FS_OFFSET;\n  char key [4096];\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  FormatLocaleString(key,0x1000,"cache:%s",path);\n  uVar2 = AcquireExceptionInfo();\n  pIVar3 = (Image *)GetImageRegistry(1,key,uVar2);\n  DestroyExceptionInfo(uVar2);\n  if (pIVar3 == (Image *)0x0) {\n    lVar4 = CloneImageInfo(image_info);\n    if (path != (char *)0x0) {\n      CopyMagickString(lVar4 + 0x2270,path,0x1000);\n    }\n    pIVar3 = (Image *)ReadImage(lVar4,exception);\n    DestroyImageInfo(lVar4);\n    if (pIVar3 != (Image *)0x0) {\n      SetImageRegistry(1,key,pIVar3,exception);\n    }\n  }\n  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pIVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "Image *pIVar3;" type_identifier (pointer_declarator "*pIVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "char key [4096];" primitive_type (array_declarator "key [4096]" identifier [ number_literal ]) ;) (expression_statement "lVar1 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar1 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "FormatLocaleString(key,0x1000,"cache:%s",path);" (call_expression "FormatLocaleString(key,0x1000,"cache:%s",path)" identifier (argument_list "(key,0x1000,"cache:%s",path)" ( identifier , number_literal , (string_literal ""cache:%s"" " string_content ") , identifier ))) ;) (expression_statement "uVar2 = AcquireExceptionInfo();" (assignment_expression "uVar2 = AcquireExceptionInfo()" identifier = (call_expression "AcquireExceptionInfo()" identifier (argument_list "()" ( )))) ;) (expression_statement "pIVar3 = (Image *)GetImageRegistry(1,key,uVar2);" (assignment_expression "pIVar3 = (Image *)GetImageRegistry(1,key,uVar2)" identifier = (cast_expression "(Image *)GetImageRegistry(1,key,uVar2)" ( (type_descriptor "Image *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "GetImageRegistry(1,key,uVar2)" identifier (argument_list "(1,key,uVar2)" ( number_literal , identifier , identifier ))))) ;) (expression_statement "DestroyExceptionInfo(uVar2);" (call_expression "DestroyExceptionInfo(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (if_statement "if (pIVar3 == (Image *)0x0) {\n    lVar4 = CloneImageInfo(image_info);\n    if (path != (char *)0x0) {\n      CopyMagickString(lVar4 + 0x2270,path,0x1000);\n    }\n    pIVar3 = (Image *)ReadImage(lVar4,exception);\n    DestroyImageInfo(lVar4);\n    if (pIVar3 != (Image *)0x0) {\n      SetImageRegistry(1,key,pIVar3,exception);\n    }\n  }" 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)) )) (compound_statement "{\n    lVar4 = CloneImageInfo(image_info);\n    if (path != (char *)0x0) {\n      CopyMagickString(lVar4 + 0x2270,path,0x1000);\n    }\n    pIVar3 = (Image *)ReadImage(lVar4,exception);\n    DestroyImageInfo(lVar4);\n    if (pIVar3 != (Image *)0x0) {\n      SetImageRegistry(1,key,pIVar3,exception);\n    }\n  }" { (expression_statement "lVar4 = CloneImageInfo(image_info);" (assignment_expression "lVar4 = CloneImageInfo(image_info)" identifier = (call_expression "CloneImageInfo(image_info)" identifier (argument_list "(image_info)" ( identifier )))) ;) (if_statement "if (path != (char *)0x0) {\n      CopyMagickString(lVar4 + 0x2270,path,0x1000);\n    }" if (parenthesized_expression "(path != (char *)0x0)" ( (binary_expression "path != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      CopyMagickString(lVar4 + 0x2270,path,0x1000);\n    }" { (expression_statement "CopyMagickString(lVar4 + 0x2270,path,0x1000);" (call_expression "CopyMagickString(lVar4 + 0x2270,path,0x1000)" identifier (argument_list "(lVar4 + 0x2270,path,0x1000)" ( (binary_expression "lVar4 + 0x2270" identifier + number_literal) , identifier , number_literal ))) ;) })) (expression_statement "pIVar3 = (Image *)ReadImage(lVar4,exception);" (assignment_expression "pIVar3 = (Image *)ReadImage(lVar4,exception)" identifier = (cast_expression "(Image *)ReadImage(lVar4,exception)" ( (type_descriptor "Image *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "ReadImage(lVar4,exception)" identifier (argument_list "(lVar4,exception)" ( identifier , identifier ))))) ;) (expression_statement "DestroyImageInfo(lVar4);" (call_expression "DestroyImageInfo(lVar4)" identifier (argument_list "(lVar4)" ( identifier ))) ;) (if_statement "if (pIVar3 != (Image *)0x0) {\n      SetImageRegistry(1,key,pIVar3,exception);\n    }" 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)) )) (compound_statement "{\n      SetImageRegistry(1,key,pIVar3,exception);\n    }" { (expression_statement "SetImageRegistry(1,key,pIVar3,exception);" (call_expression "SetImageRegistry(1,key,pIVar3,exception)" identifier (argument_list "(1,key,pIVar3,exception)" ( number_literal , identifier , identifier , identifier ))) ;) })) })) (if_statement "if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pIVar3;\n  }" if (parenthesized_expression "(lVar1 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar1 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return pIVar3;\n  }" { (return_statement "return pIVar3;" return identifier ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "long FUN_001eefcc(undefined8 param_1,long param_2,undefined8 param_3)\n\n{\n  undefined8 uVar1;\n  long lVar2;\n  long lVar3;\n  long in_FS_OFFSET;\n  undefined1 auStack_1038 [4104];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  FormatLocaleString(auStack_1038,0x1000,"cache:%s",param_2);\n  uVar1 = AcquireExceptionInfo();\n  lVar2 = GetImageRegistry(1,auStack_1038,uVar1);\n  DestroyExceptionInfo(uVar1);\n  if (lVar2 == 0) {\n    lVar3 = CloneImageInfo(param_1);\n    if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }\n    lVar2 = ReadImage(lVar3,param_3);\n    DestroyImageInfo(lVar3);\n    if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }\n  }\n  if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return lVar2;\n  }\n                    \n  __stack_chk_fail();\n}\n\n" (function_definition "long FUN_001eefcc(undefined8 param_1,long param_2,undefined8 param_3)\n\n{\n  undefined8 uVar1;\n  long lVar2;\n  long lVar3;\n  long in_FS_OFFSET;\n  undefined1 auStack_1038 [4104];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  FormatLocaleString(auStack_1038,0x1000,"cache:%s",param_2);\n  uVar1 = AcquireExceptionInfo();\n  lVar2 = GetImageRegistry(1,auStack_1038,uVar1);\n  DestroyExceptionInfo(uVar1);\n  if (lVar2 == 0) {\n    lVar3 = CloneImageInfo(param_1);\n    if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }\n    lVar2 = ReadImage(lVar3,param_3);\n    DestroyImageInfo(lVar3);\n    if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }\n  }\n  if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return lVar2;\n  }\n                    \n  __stack_chk_fail();\n}" (sized_type_specifier "long" long) (function_declarator "FUN_001eefcc(undefined8 param_1,long param_2,undefined8 param_3)" identifier (parameter_list "(undefined8 param_1,long param_2,undefined8 param_3)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  long lVar2;\n  long lVar3;\n  long in_FS_OFFSET;\n  undefined1 auStack_1038 [4104];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  FormatLocaleString(auStack_1038,0x1000,"cache:%s",param_2);\n  uVar1 = AcquireExceptionInfo();\n  lVar2 = GetImageRegistry(1,auStack_1038,uVar1);\n  DestroyExceptionInfo(uVar1);\n  if (lVar2 == 0) {\n    lVar3 = CloneImageInfo(param_1);\n    if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }\n    lVar2 = ReadImage(lVar3,param_3);\n    DestroyImageInfo(lVar3);\n    if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }\n  }\n  if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return lVar2;\n  }\n                    \n  __stack_chk_fail();\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auStack_1038 [4104];" type_identifier (array_declarator "auStack_1038 [4104]" identifier [ number_literal ]) ;) (declaration "long local_30;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "FormatLocaleString(auStack_1038,0x1000,"cache:%s",param_2);" (call_expression "FormatLocaleString(auStack_1038,0x1000,"cache:%s",param_2)" identifier (argument_list "(auStack_1038,0x1000,"cache:%s",param_2)" ( identifier , number_literal , (string_literal ""cache:%s"" " string_content ") , identifier ))) ;) (expression_statement "uVar1 = AcquireExceptionInfo();" (assignment_expression "uVar1 = AcquireExceptionInfo()" identifier = (call_expression "AcquireExceptionInfo()" identifier (argument_list "()" ( )))) ;) (expression_statement "lVar2 = GetImageRegistry(1,auStack_1038,uVar1);" (assignment_expression "lVar2 = GetImageRegistry(1,auStack_1038,uVar1)" identifier = (call_expression "GetImageRegistry(1,auStack_1038,uVar1)" identifier (argument_list "(1,auStack_1038,uVar1)" ( number_literal , identifier , identifier )))) ;) (expression_statement "DestroyExceptionInfo(uVar1);" (call_expression "DestroyExceptionInfo(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))) ;) (if_statement "if (lVar2 == 0) {\n    lVar3 = CloneImageInfo(param_1);\n    if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }\n    lVar2 = ReadImage(lVar3,param_3);\n    DestroyImageInfo(lVar3);\n    if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }\n  }" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    lVar3 = CloneImageInfo(param_1);\n    if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }\n    lVar2 = ReadImage(lVar3,param_3);\n    DestroyImageInfo(lVar3);\n    if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }\n  }" { (expression_statement "lVar3 = CloneImageInfo(param_1);" (assignment_expression "lVar3 = CloneImageInfo(param_1)" identifier = (call_expression "CloneImageInfo(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }" { (expression_statement "CopyMagickString(lVar3 + 0x2270,param_2,0x1000);" (call_expression "CopyMagickString(lVar3 + 0x2270,param_2,0x1000)" identifier (argument_list "(lVar3 + 0x2270,param_2,0x1000)" ( (binary_expression "lVar3 + 0x2270" identifier + number_literal) , identifier , number_literal ))) ;) })) (expression_statement "lVar2 = ReadImage(lVar3,param_3);" (assignment_expression "lVar2 = ReadImage(lVar3,param_3)" identifier = (call_expression "ReadImage(lVar3,param_3)" identifier (argument_list "(lVar3,param_3)" ( identifier , identifier )))) ;) (expression_statement "DestroyImageInfo(lVar3);" (call_expression "DestroyImageInfo(lVar3)" identifier (argument_list "(lVar3)" ( identifier ))) ;) (if_statement "if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }" { (expression_statement "SetImageRegistry(1,auStack_1038,lVar2,param_3);" (call_expression "SetImageRegistry(1,auStack_1038,lVar2,param_3)" identifier (argument_list "(1,auStack_1038,lVar2,param_3)" ( number_literal , identifier , identifier , identifier ))) ;) })) })) (if_statement "if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return lVar2;\n  }" if (parenthesized_expression "(local_30 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_30 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return lVar2;\n  }" { (return_statement "return lVar2;" return identifier ;) })) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (string_literal " string_content ") , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT , IDENT , IDENT ))) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "long FUN_001eefcc(undefined8 param_1,long param_2,undefined8 param_3)\n\n{\n  undefined8 uVar1;\n  long lVar2;\n  long lVar3;\n  long in_FS_OFFSET;\n  undefined1 auStack_1038 [4104];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  FormatLocaleString(auStack_1038,0x1000,"cache:%s",param_2);\n  uVar1 = AcquireExceptionInfo();\n  lVar2 = GetImageRegistry(1,auStack_1038,uVar1);\n  DestroyExceptionInfo(uVar1);\n  if (lVar2 == 0) {\n    lVar3 = CloneImageInfo(param_1);\n    if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }\n    lVar2 = ReadImage(lVar3,param_3);\n    DestroyImageInfo(lVar3);\n    if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }\n  }\n  if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return lVar2;\n  }\n                    \n  __stack_chk_fail();\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_001eefcc(undefined8 param_1,long param_2,undefined8 param_3)" (identifier "FUN_001eefcc") (parameter_list "(undefined8 param_1,long param_2,undefined8 param_3)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  long lVar2;\n  long lVar3;\n  long in_FS_OFFSET;\n  undefined1 auStack_1038 [4104];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  FormatLocaleString(auStack_1038,0x1000,"cache:%s",param_2);\n  uVar1 = AcquireExceptionInfo();\n  lVar2 = GetImageRegistry(1,auStack_1038,uVar1);\n  DestroyExceptionInfo(uVar1);\n  if (lVar2 == 0) {\n    lVar3 = CloneImageInfo(param_1);\n    if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }\n    lVar2 = ReadImage(lVar3,param_3);\n    DestroyImageInfo(lVar3);\n    if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }\n  }\n  if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return lVar2;\n  }\n                    \n  __stack_chk_fail();\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "undefined1 auStack_1038 [4104];" (type_identifier "undefined1") (array_declarator "auStack_1038 [4104]" (identifier "auStack_1038") ([ "[") (number_literal "4104") (] "]")) (; ";")) (declaration "long local_30;" (sized_type_specifier "long" (long "long")) (identifier "local_30") (; ";")) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_30") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "FormatLocaleString(auStack_1038,0x1000,"cache:%s",param_2);" (call_expression "FormatLocaleString(auStack_1038,0x1000,"cache:%s",param_2)" (identifier "FormatLocaleString") (argument_list "(auStack_1038,0x1000,"cache:%s",param_2)" (( "(") (identifier "auStack_1038") (, ",") (number_literal "0x1000") (, ",") (string_literal ""cache:%s"" (" """) (string_content "cache:%s") (" """)) (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "uVar1 = AcquireExceptionInfo();" (assignment_expression "uVar1 = AcquireExceptionInfo()" (identifier "uVar1") (= "=") (call_expression "AcquireExceptionInfo()" (identifier "AcquireExceptionInfo") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "lVar2 = GetImageRegistry(1,auStack_1038,uVar1);" (assignment_expression "lVar2 = GetImageRegistry(1,auStack_1038,uVar1)" (identifier "lVar2") (= "=") (call_expression "GetImageRegistry(1,auStack_1038,uVar1)" (identifier "GetImageRegistry") (argument_list "(1,auStack_1038,uVar1)" (( "(") (number_literal "1") (, ",") (identifier "auStack_1038") (, ",") (identifier "uVar1") () ")")))) (; ";")) (expression_statement "DestroyExceptionInfo(uVar1);" (call_expression "DestroyExceptionInfo(uVar1)" (identifier "DestroyExceptionInfo") (argument_list "(uVar1)" (( "(") (identifier "uVar1") () ")"))) (; ";")) (if_statement "if (lVar2 == 0) {\n    lVar3 = CloneImageInfo(param_1);\n    if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }\n    lVar2 = ReadImage(lVar3,param_3);\n    DestroyImageInfo(lVar3);\n    if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }\n  }" (if "if") (parenthesized_expression "(lVar2 == 0)" (( "(") (binary_expression "lVar2 == 0" (identifier "lVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    lVar3 = CloneImageInfo(param_1);\n    if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }\n    lVar2 = ReadImage(lVar3,param_3);\n    DestroyImageInfo(lVar3);\n    if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }\n  }" ({ "{") (expression_statement "lVar3 = CloneImageInfo(param_1);" (assignment_expression "lVar3 = CloneImageInfo(param_1)" (identifier "lVar3") (= "=") (call_expression "CloneImageInfo(param_1)" (identifier "CloneImageInfo") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (param_2 != 0) {\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);\n    }" ({ "{") (expression_statement "CopyMagickString(lVar3 + 0x2270,param_2,0x1000);" (call_expression "CopyMagickString(lVar3 + 0x2270,param_2,0x1000)" (identifier "CopyMagickString") (argument_list "(lVar3 + 0x2270,param_2,0x1000)" (( "(") (binary_expression "lVar3 + 0x2270" (identifier "lVar3") (+ "+") (number_literal "0x2270")) (, ",") (identifier "param_2") (, ",") (number_literal "0x1000") () ")"))) (; ";")) (} "}"))) (expression_statement "lVar2 = ReadImage(lVar3,param_3);" (assignment_expression "lVar2 = ReadImage(lVar3,param_3)" (identifier "lVar2") (= "=") (call_expression "ReadImage(lVar3,param_3)" (identifier "ReadImage") (argument_list "(lVar3,param_3)" (( "(") (identifier "lVar3") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "DestroyImageInfo(lVar3);" (call_expression "DestroyImageInfo(lVar3)" (identifier "DestroyImageInfo") (argument_list "(lVar3)" (( "(") (identifier "lVar3") () ")"))) (; ";")) (if_statement "if (lVar2 != 0) {\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }" (if "if") (parenthesized_expression "(lVar2 != 0)" (( "(") (binary_expression "lVar2 != 0" (identifier "lVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      SetImageRegistry(1,auStack_1038,lVar2,param_3);\n    }" ({ "{") (expression_statement "SetImageRegistry(1,auStack_1038,lVar2,param_3);" (call_expression "SetImageRegistry(1,auStack_1038,lVar2,param_3)" (identifier "SetImageRegistry") (argument_list "(1,auStack_1038,lVar2,param_3)" (( "(") (number_literal "1") (, ",") (identifier "auStack_1038") (, ",") (identifier "lVar2") (, ",") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return lVar2;\n  }" (if "if") (parenthesized_expression "(local_30 == *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_30 == *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_30") (== "==") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n    return lVar2;\n  }" ({ "{") (return_statement "return lVar2;" (return "return") (identifier "lVar2") (; ";")) (} "}"))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* 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 "ExceptionType": Some values do not have unique names */

type_1 * function_1(type_2 *image_info,char *var_8,type_3 *exception)

{
  long var_14;
  type_4 uVar2;
  type_1 *var_6;
  long var_10;
  long var_1;
  char key [4096];
  
  var_14 = *(long *)(var_1 + 0x28);
  var_2(key,0x1000,"cache:%s",var_8);
  uVar2 = var_3();
  var_6 = (type_1 *)var_4(1,key,uVar2);
  var_5(uVar2);
  if (var_6 == (type_1 *)0x0) {
    var_10 = var_7(image_info);
    if (var_8 != (char *)0x0) {
      var_9(var_10 + 0x2270,var_8,0x1000);
    }
    var_6 = (type_1 *)var_11(var_10,exception);
    var_12(var_10);
    if (var_6 != (type_1 *)0x0) {
      var_13(1,key,var_6,exception);
    }
  }
  if (var_14 == *(long *)(var_1 + 0x28)) {
    return var_6;
  }
                    /* WARNING: Subroutine does not return */
  var_15();
}


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

long MASKED(undefined8 param_1,long param_2,undefined8 param_3)

{
  undefined8 uVar1;
  long lVar2;
  long lVar3;
  long in_FS_OFFSET;
  undefined1 auStack_1038 [4104];
  long local_30;
  
  local_30 = *(long *)(in_FS_OFFSET + 0x28);
  FormatLocaleString(auStack_1038,0x1000,"cache:%s",param_2);
  uVar1 = AcquireExceptionInfo();
  lVar2 = GetImageRegistry(1,auStack_1038,uVar1);
  DestroyExceptionInfo(uVar1);
  if (lVar2 == 0) {
    lVar3 = CloneImageInfo(param_1);
    if (param_2 != 0) {
      CopyMagickString(lVar3 + 0x2270,param_2,0x1000);
    }
    lVar2 = ReadImage(lVar3,param_3);
    DestroyImageInfo(lVar3);
    if (lVar2 != 0) {
      SetImageRegistry(1,auStack_1038,lVar2,param_3);
    }
  }
  if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {
    return lVar2;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

