
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": 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 */
/* WARNING: Enum "LogEventType": Some values do not have unique names */

MagickBooleanType
LevelImageColors(Image *image,PixelInfo *black_color,PixelInfo *white_color,MagickBooleanType invert
                ,ExceptionInfo *exception)

{
  undefined1 uVar1;
  PixelChannelMap *pPVar2;
  MagickBooleanType MVar3;
  ChannelType CVar4;
  PixelTrait PVar5;
  MagickBooleanType MVar6;
  ChannelType local_20;
  
  if (image == (Image *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");
  }
  if (image->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,
                  "LevelImageColors");
  }
  if (image->debug != MagickFalse) {
    LogMagickEvent(TraceEvent,"MagickCore/enhance.c","LevelImageColors",0xc95,"%s",image->filename);
  }
  if (((image->colorspace == GRAYColorspace) || (image->colorspace == LinearGRAYColorspace)) &&
     (((black_color->colorspace != LinearGRAYColorspace &&
       (black_color->colorspace != GRAYColorspace)) ||
      ((white_color->colorspace != GRAYColorspace &&
       (white_color->colorspace != LinearGRAYColorspace)))))) {
    SetImageColorspace(image,sRGBColorspace,exception);
  }
  pPVar2 = image->channel_map;
  MVar6 = MagickTrue;
  PVar5 = pPVar2->traits & UpdatePixelTrait;
  if (invert != MagickFalse) {
    if (PVar5 != UndefinedPixelTrait) {
      CVar4 = SetImageChannelMask(image,CyanChannel);
      MVar6 = LevelizeImage(image,black_color->red,white_color->red,1.0,exception);
      MVar6 = MVar6 & MagickTrue;
      SetImageChannelMask(image,CVar4);
      pPVar2 = image->channel_map;
    }
    if ((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) {
      CVar4 = SetImageChannelMask(image,GreenChannel);
      MVar3 = LevelizeImage(image,black_color->green,white_color->green,1.0,exception);
      MVar6 = MVar6 & MVar3;
      SetImageChannelMask(image,CVar4);
      pPVar2 = image->channel_map;
    }
    if ((pPVar2[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) {
      CVar4 = SetImageChannelMask(image,BlueChannel);
      MVar3 = LevelizeImage(image,black_color->blue,white_color->blue,1.0,exception);
      MVar6 = MVar6 & MVar3;
      SetImageChannelMask(image,CVar4);
      pPVar2 = image->channel_map;
    }
    if (((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait) &&
       (image->colorspace == CMYKColorspace)) {
      CVar4 = SetImageChannelMask(image,BlackChannel);
      MVar3 = LevelizeImage(image,black_color->black,white_color->black,1.0,exception);
      MVar6 = MVar6 & MVar3;
      SetImageChannelMask(image,CVar4);
      pPVar2 = image->channel_map;
    }
    if ((pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) {
      return MVar6;
    }
    if (image->alpha_trait == UndefinedPixelTrait) {
      return MVar6;
    }
    local_20 = SetImageChannelMask(image,AlphaChannel);
    MVar3 = LevelizeImage(image,black_color->alpha,white_color->alpha,1.0,exception);
    goto LAB_000ca7ff;
  }
  if (PVar5 == UndefinedPixelTrait) {
    if ((pPVar2[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_000ca750;
LAB_000ca9e9:
    CVar4 = SetImageChannelMask(image,GreenChannel);
    MVar3 = LevelImage(image,black_color->green,white_color->green,1.0,exception);
    MVar6 = MVar6 & MVar3;
    SetImageChannelMask(image,CVar4);
    pPVar2 = image->channel_map;
    uVar1 = (undefined1)pPVar2[2].traits;
  }
  else {
    CVar4 = SetImageChannelMask(image,CyanChannel);
    MVar6 = LevelImage(image,black_color->red,white_color->red,1.0,exception);
    MVar6 = MVar6 & MagickTrue;
    SetImageChannelMask(image,CVar4);
    pPVar2 = image->channel_map;
    if ((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_000ca9e9;
LAB_000ca750:
    uVar1 = (undefined1)pPVar2[2].traits;
  }
  if ((uVar1 & UpdatePixelTrait) != UndefinedPixelTrait) {
    CVar4 = SetImageChannelMask(image,BlueChannel);
    MVar3 = LevelImage(image,black_color->blue,white_color->blue,1.0,exception);
    MVar6 = MVar6 & MVar3;
    SetImageChannelMask(image,CVar4);
    pPVar2 = image->channel_map;
  }
  if (((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait) &&
     (image->colorspace == CMYKColorspace)) {
    CVar4 = SetImageChannelMask(image,BlackChannel);
    MVar3 = LevelImage(image,black_color->black,white_color->black,1.0,exception);
    MVar6 = MVar6 & MVar3;
    SetImageChannelMask(image,CVar4);
    pPVar2 = image->channel_map;
  }
  if (((pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) ||
     (image->alpha_trait == UndefinedPixelTrait)) {
    return MVar6;
  }
  local_20 = SetImageChannelMask(image,AlphaChannel);
  MVar3 = LevelImage(image,black_color->alpha,white_color->alpha,1.0,exception);
LAB_000ca7ff:
  SetImageChannelMask(image,local_20);
  return MVar6 & MVar3;
}



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

uint LevelImageColors(int param_1,int param_2,int param_3,int param_4,undefined4 param_5)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  uint uVar5;
  undefined4 local_20;
  
  if (param_1 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");
  }
  if (*(int *)(param_1 + 0x3344) != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,
                  "LevelImageColors");
  }
  if (*(int *)(param_1 + 0x3328) != 0) {
    LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,
                   param_1 + 0x318);
  }
  if (((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&
     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||
      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))) {
    SetImageColorspace(param_1,0x17,param_5);
  }
  iVar2 = *(int *)(param_1 + 0x2a8);
  uVar5 = 1;
  uVar4 = *(uint *)(iVar2 + 4) & 2;
  if (param_4 != 0) {
    if (uVar4 != 0) {
      uVar3 = SetImageChannelMask(param_1,1);
      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),
                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,
                            0x3ff00000,param_5);
      uVar5 = uVar5 & 1;
      SetImageChannelMask(param_1,uVar3);
      iVar2 = *(int *)(param_1 + 0x2a8);
    }
    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {
      uVar3 = SetImageChannelMask(param_1,2);
      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),
                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,
                            0x3ff00000,param_5);
      uVar5 = uVar5 & uVar4;
      SetImageChannelMask(param_1,uVar3);
      iVar2 = *(int *)(param_1 + 0x2a8);
    }
    if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {
      uVar3 = SetImageChannelMask(param_1,4);
      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),
                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,
                            0x3ff00000,param_5);
      uVar5 = uVar5 & uVar4;
      SetImageChannelMask(param_1,uVar3);
      iVar2 = *(int *)(param_1 + 0x2a8);
    }
    if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {
      uVar3 = SetImageChannelMask(param_1,8);
      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),
                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,
                            0x3ff00000,param_5);
      uVar5 = uVar5 & uVar4;
      SetImageChannelMask(param_1,uVar3);
      iVar2 = *(int *)(param_1 + 0x2a8);
    }
    if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {
      return uVar5;
    }
    if (*(int *)(param_1 + 0x294) == 0) {
      return uVar5;
    }
    local_20 = SetImageChannelMask(param_1,0x10);
    uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),
                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,
                          0x3ff00000,param_5);
    goto LAB_000ca7ff;
  }
  if (uVar4 == 0) {
    if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;
LAB_000ca9e9:
    uVar3 = SetImageChannelMask(param_1,2);
    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),
                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,
                       param_5);
    uVar5 = uVar5 & uVar4;
    SetImageChannelMask(param_1,uVar3);
    iVar2 = *(int *)(param_1 + 0x2a8);
    bVar1 = *(byte *)(iVar2 + 0x1c);
  }
  else {
    uVar3 = SetImageChannelMask(param_1,1);
    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),
                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,
                       param_5);
    uVar5 = uVar5 & 1;
    SetImageChannelMask(param_1,uVar3);
    iVar2 = *(int *)(param_1 + 0x2a8);
    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;
LAB_000ca750:
    bVar1 = *(byte *)(iVar2 + 0x1c);
  }
  if ((bVar1 & 2) != 0) {
    uVar3 = SetImageChannelMask(param_1,4);
    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),
                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,
                       param_5);
    uVar5 = uVar5 & uVar4;
    SetImageChannelMask(param_1,uVar3);
    iVar2 = *(int *)(param_1 + 0x2a8);
  }
  if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {
    uVar3 = SetImageChannelMask(param_1,8);
    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),
                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,
                       param_5);
    uVar5 = uVar5 & uVar4;
    SetImageChannelMask(param_1,uVar3);
    iVar2 = *(int *)(param_1 + 0x2a8);
  }
  if (((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0)) {
    return uVar5;
  }
  local_20 = SetImageChannelMask(param_1,0x10);
  uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),
                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,
                     param_5);
LAB_000ca7ff:
  SetImageChannelMask(param_1,local_20);
  return uVar5 & uVar4;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00039d70
ADD EBX,0x353927
SUB ESP,0x1c
MOV EBP,dword ptr [ESP + 0x30]
MOV EDI,dword ptr [ESP + 0x34]
TEST EBP,EBP
JZ 0x000cabb3
CMP dword ptr [EBP + 0x3344],0xabacadab
JNZ 0x000cab94
MOV ECX,dword ptr [EBP + 0x3328]
TEST ECX,ECX
JNZ 0x000ca860
MOV EAX,dword ptr [EBP + 0x4]
CMP EAX,0x3
JZ 0x000ca820
CMP EAX,0x21
JZ 0x000ca820
MOV EAX,dword ptr [EBP + 0x2a8]
MOV ESI,0x1
MOV EDX,dword ptr [ESP + 0x3c]
MOV ECX,dword ptr [EAX + 0x4]
AND ECX,0x2
TEST EDX,EDX
JNZ 0x000ca790
TEST ECX,ECX
JNZ 0x000ca990
TEST byte ptr [EAX + 0x10],0x2
JNZ 0x000ca9e9
TEST byte ptr [EAX + 0x1c],0x2
JNZ 0x000caa3f
TEST byte ptr [EAX + 0x28],0x2
JZ 0x000ca76a
CMP dword ptr [EBP + 0x4],0x2
JZ 0x000ca8e0
TEST byte ptr [EAX + 0x34],0x2
JZ 0x000ca77e
MOV EDX,dword ptr [EBP + 0x294]
TEST EDX,EDX
JNZ 0x000ca8a0
ADD ESP,0x1c
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
TEST ECX,ECX
JNZ 0x000cab40
TEST byte ptr [EAX + 0x10],0x2
JNZ 0x000caae8
TEST byte ptr [EAX + 0x1c],0x2
JNZ 0x000caa90
TEST byte ptr [EAX + 0x28],0x2
JZ 0x000ca7bc
CMP dword ptr [EBP + 0x4],0x2
JZ 0x000ca938
TEST byte ptr [EAX + 0x34],0x2
JZ 0x000ca77e
MOV EAX,dword ptr [EBP + 0x294]
TEST EAX,EAX
JZ 0x000ca77e
SUB ESP,0x8
PUSH 0x10
PUSH EBP
CALL 0x000315a0
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
PUSH dword ptr [ESP + 0x40]
PUSH 0x3ff00000
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x44]
PUSH dword ptr [EAX + 0x44]
PUSH dword ptr [EAX + 0x40]
PUSH dword ptr [EDI + 0x44]
PUSH dword ptr [EDI + 0x40]
PUSH EBP
CALL 0x00032880
ADD ESP,0x18
MOV ECX,dword ptr [ESP + 0x14]
AND ESI,EAX
PUSH ECX
PUSH EBP
CALL 0x000315a0
ADD ESP,0x10
MOV EAX,ESI
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EDI + 0x4]
CMP EAX,0x21
JZ 0x000ca82d
CMP EAX,0x3
JNZ 0x000ca846
MOV EAX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [EAX + 0x4]
CMP EAX,0x3
JZ 0x000ca725
CMP EAX,0x21
JZ 0x000ca725
SUB ESP,0x4
PUSH dword ptr [ESP + 0x44]
PUSH 0x17
PUSH EBP
CALL 0x000335f0
ADD ESP,0x10
JMP 0x000ca725
LEA EAX,[EBP + 0x318]
SUB ESP,0x8
PUSH EAX
LEA EAX,[EBX + 0xffed95ae]
PUSH EAX
LEA EAX,[EBX + 0xffed4e78]
PUSH 0xc95
PUSH EAX
LEA EAX,[EBX + 0xffed4c8c]
PUSH EAX
PUSH 0x8000
CALL 0x000323b0
ADD ESP,0x20
JMP 0x000ca710
SUB ESP,0x8
PUSH 0x10
PUSH EBP
CALL 0x000315a0
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
PUSH dword ptr [ESP + 0x40]
PUSH 0x3ff00000
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x44]
PUSH dword ptr [EAX + 0x44]
PUSH dword ptr [EAX + 0x40]
PUSH dword ptr [EDI + 0x44]
PUSH dword ptr [EDI + 0x40]
PUSH EBP
CALL 0x000321a0
JMP 0x000ca7ff
SUB ESP,0x8
PUSH 0x8
PUSH EBP
CALL 0x000315a0
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
PUSH dword ptr [ESP + 0x40]
PUSH 0x3ff00000
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x44]
PUSH dword ptr [EAX + 0x3c]
PUSH dword ptr [EAX + 0x38]
PUSH dword ptr [EDI + 0x3c]
PUSH dword ptr [EDI + 0x38]
PUSH EBP
CALL 0x000321a0
ADD ESP,0x18
MOV ECX,dword ptr [ESP + 0x14]
AND ESI,EAX
PUSH ECX
PUSH EBP
CALL 0x000315a0
MOV EAX,dword ptr [EBP + 0x2a8]
ADD ESP,0x10
JMP 0x000ca76a
SUB ESP,0x8
PUSH 0x8
PUSH EBP
CALL 0x000315a0
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
PUSH dword ptr [ESP + 0x40]
PUSH 0x3ff00000
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x44]
PUSH dword ptr [EAX + 0x3c]
PUSH dword ptr [EAX + 0x38]
PUSH dword ptr [EDI + 0x3c]
PUSH dword ptr [EDI + 0x38]
PUSH EBP
CALL 0x00032880
ADD ESP,0x18
MOV ECX,dword ptr [ESP + 0x14]
AND ESI,EAX
PUSH ECX
PUSH EBP
CALL 0x000315a0
MOV EAX,dword ptr [EBP + 0x2a8]
ADD ESP,0x10
JMP 0x000ca7bc
SUB ESP,0x8
PUSH 0x1
PUSH EBP
CALL 0x000315a0
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
PUSH dword ptr [ESP + 0x40]
PUSH 0x3ff00000
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x44]
PUSH dword ptr [EAX + 0x24]
PUSH dword ptr [EAX + 0x20]
PUSH dword ptr [EDI + 0x24]
PUSH dword ptr [EDI + 0x20]
PUSH EBP
CALL 0x000321a0
ADD ESP,0x18
MOV ECX,dword ptr [ESP + 0x14]
AND EAX,0x1
MOV ESI,EAX
PUSH ECX
PUSH EBP
CALL 0x000315a0
MOV EAX,dword ptr [EBP + 0x2a8]
ADD ESP,0x10
TEST byte ptr [EAX + 0x10],0x2
JZ 0x000ca750
SUB ESP,0x8
PUSH 0x2
PUSH EBP
CALL 0x000315a0
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
PUSH dword ptr [ESP + 0x40]
PUSH 0x3ff00000
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x44]
PUSH dword ptr [EAX + 0x2c]
PUSH dword ptr [EAX + 0x28]
PUSH dword ptr [EDI + 0x2c]
PUSH dword ptr [EDI + 0x28]
PUSH EBP
CALL 0x000321a0
ADD ESP,0x18
MOV ECX,dword ptr [ESP + 0x14]
AND ESI,EAX
PUSH ECX
PUSH EBP
CALL 0x000315a0
MOV EAX,dword ptr [EBP + 0x2a8]
ADD ESP,0x10
TEST byte ptr [EAX + 0x1c],0x2
JZ 0x000ca75a
SUB ESP,0x8
PUSH 0x4
PUSH EBP
CALL 0x000315a0
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
PUSH dword ptr [ESP + 0x40]
PUSH 0x3ff00000
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x44]
PUSH dword ptr [EAX + 0x34]
PUSH dword ptr [EAX + 0x30]
PUSH dword ptr [EDI + 0x34]
PUSH dword ptr [EDI + 0x30]
PUSH EBP
CALL 0x000321a0
ADD ESP,0x18
MOV ECX,dword ptr [ESP + 0x14]
AND ESI,EAX
PUSH ECX
PUSH EBP
CALL 0x000315a0
MOV EAX,dword ptr [EBP + 0x2a8]
ADD ESP,0x10
JMP 0x000ca75a
SUB ESP,0x8
PUSH 0x4
PUSH EBP
CALL 0x000315a0
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
PUSH dword ptr [ESP + 0x40]
PUSH 0x3ff00000
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x44]
PUSH dword ptr [EAX + 0x34]
PUSH dword ptr [EAX + 0x30]
PUSH dword ptr [EDI + 0x34]
PUSH dword ptr [EDI + 0x30]
PUSH EBP
CALL 0x00032880
ADD ESP,0x18
MOV ECX,dword ptr [ESP + 0x14]
AND ESI,EAX
PUSH ECX
PUSH EBP
CALL 0x000315a0
MOV EAX,dword ptr [EBP + 0x2a8]
ADD ESP,0x10
JMP 0x000ca7ac
SUB ESP,0x8
PUSH 0x2
PUSH EBP
CALL 0x000315a0
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
PUSH dword ptr [ESP + 0x40]
PUSH 0x3ff00000
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x44]
PUSH dword ptr [EAX + 0x2c]
PUSH dword ptr [EAX + 0x28]
PUSH dword ptr [EDI + 0x2c]
PUSH dword ptr [EDI + 0x28]
PUSH EBP
CALL 0x00032880
ADD ESP,0x18
MOV ECX,dword ptr [ESP + 0x14]
AND ESI,EAX
PUSH ECX
PUSH EBP
CALL 0x000315a0
MOV EAX,dword ptr [EBP + 0x2a8]
ADD ESP,0x10
JMP 0x000ca7a2
SUB ESP,0x8
PUSH 0x1
PUSH EBP
CALL 0x000315a0
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
PUSH dword ptr [ESP + 0x40]
PUSH 0x3ff00000
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x44]
PUSH dword ptr [EAX + 0x24]
PUSH dword ptr [EAX + 0x20]
PUSH dword ptr [EDI + 0x24]
PUSH dword ptr [EDI + 0x20]
PUSH EBP
CALL 0x00032880
ADD ESP,0x18
MOV ECX,dword ptr [ESP + 0x14]
AND EAX,0x1
MOV ESI,EAX
PUSH ECX
PUSH EBP
CALL 0x000315a0
MOV EAX,dword ptr [EBP + 0x2a8]
ADD ESP,0x10
JMP 0x000ca798
LEA EAX,[EBX + 0xffed4e8c]
PUSH EAX
LEA EAX,[EBX + 0xffed4c8c]
PUSH 0xc93
PUSH EAX
LEA EAX,[EBX + 0xffecc4b8]
PUSH EAX
CALL 0x000313d0
LEA EAX,[EBX + 0xffed4e8c]
PUSH EAX
LEA EAX,[EBX + 0xffed4c8c]
PUSH 0xc92
PUSH EAX
LEA EAX,[EBX + 0xffed9cf4]
PUSH EAX
CALL 0x000313d0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nuint LevelImageColors(int param_1,int param_2,int param_3,int param_4,undefined4 param_5)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  uint uVar5;\n  undefined4 local_20;\n  \n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\n  }\n  if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }\n  if (*(int *)(param_1 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);\n  }\n  if (((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))) {\n    SetImageColorspace(param_1,0x17,param_5);\n  }\n  iVar2 = *(int *)(param_1 + 0x2a8);\n  uVar5 = 1;\n  uVar4 = *(uint *)(iVar2 + 4) & 2;\n  if (param_4 != 0) {\n    if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }\n    if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }\n    local_20 = SetImageChannelMask(param_1,0x10);\n    uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);\n    goto LAB_000ca7ff;\n  }\n  if (uVar4 == 0) {\n    if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;\nLAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  else {\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  if ((bVar1 & 2) != 0) {\n    uVar3 = SetImageChannelMask(param_1,4);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }\n  if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n    uVar3 = SetImageChannelMask(param_1,8);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }\n  if (((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0)) {\n    return uVar5;\n  }\n  local_20 = SetImageChannelMask(param_1,0x10);\n  uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5);\nLAB_000ca7ff:\n  SetImageChannelMask(param_1,local_20);\n  return uVar5 & uVar4;\n}\n\n" comment (function_definition "uint LevelImageColors(int param_1,int param_2,int param_3,int param_4,undefined4 param_5)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  uint uVar5;\n  undefined4 local_20;\n  \n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\n  }\n  if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }\n  if (*(int *)(param_1 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);\n  }\n  if (((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))) {\n    SetImageColorspace(param_1,0x17,param_5);\n  }\n  iVar2 = *(int *)(param_1 + 0x2a8);\n  uVar5 = 1;\n  uVar4 = *(uint *)(iVar2 + 4) & 2;\n  if (param_4 != 0) {\n    if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }\n    if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }\n    local_20 = SetImageChannelMask(param_1,0x10);\n    uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);\n    goto LAB_000ca7ff;\n  }\n  if (uVar4 == 0) {\n    if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;\nLAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  else {\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  if ((bVar1 & 2) != 0) {\n    uVar3 = SetImageChannelMask(param_1,4);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }\n  if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n    uVar3 = SetImageChannelMask(param_1,8);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }\n  if (((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0)) {\n    return uVar5;\n  }\n  local_20 = SetImageChannelMask(param_1,0x10);\n  uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5);\nLAB_000ca7ff:\n  SetImageChannelMask(param_1,local_20);\n  return uVar5 & uVar4;\n}" type_identifier (function_declarator "LevelImageColors(int param_1,int param_2,int param_3,int param_4,undefined4 param_5)" identifier (parameter_list "(int param_1,int param_2,int param_3,int param_4,undefined4 param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  uint uVar5;\n  undefined4 local_20;\n  \n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\n  }\n  if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }\n  if (*(int *)(param_1 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);\n  }\n  if (((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))) {\n    SetImageColorspace(param_1,0x17,param_5);\n  }\n  iVar2 = *(int *)(param_1 + 0x2a8);\n  uVar5 = 1;\n  uVar4 = *(uint *)(iVar2 + 4) & 2;\n  if (param_4 != 0) {\n    if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }\n    if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }\n    local_20 = SetImageChannelMask(param_1,0x10);\n    uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);\n    goto LAB_000ca7ff;\n  }\n  if (uVar4 == 0) {\n    if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;\nLAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  else {\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  if ((bVar1 & 2) != 0) {\n    uVar3 = SetImageChannelMask(param_1,4);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }\n  if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n    uVar3 = SetImageChannelMask(param_1,8);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }\n  if (((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0)) {\n    return uVar5;\n  }\n  local_20 = SetImageChannelMask(param_1,0x10);\n  uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5);\nLAB_000ca7ff:\n  SetImageChannelMask(param_1,local_20);\n  return uVar5 & uVar4;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (if_statement "if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\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 != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\n  }" { comment (expression_statement "__assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");" (call_expression "__assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors")" identifier (argument_list "("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors")" ( (string_literal ""image != (Image *) NULL"" " string_content ") , (string_literal ""MagickCore/enhance.c"" " string_content ") , number_literal , (string_literal ""LevelImageColors"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x3344) != -0x54535255)" ( (binary_expression "*(int *)(param_1 + 0x3344) != -0x54535255" (pointer_expression "*(int *)(param_1 + 0x3344)" * (cast_expression "(int *)(param_1 + 0x3344)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3344)" ( (binary_expression "param_1 + 0x3344" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }" { comment (expression_statement "__assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors")" identifier (argument_list "("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors")" ( (string_literal ""image->signature == MagickCoreSignature"" " string_content ") , (string_literal ""MagickCore/enhance.c"" " string_content ") , number_literal , (string_literal ""LevelImageColors"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x3328) != 0)" ( (binary_expression "*(int *)(param_1 + 0x3328) != 0" (pointer_expression "*(int *)(param_1 + 0x3328)" * (cast_expression "(int *)(param_1 + 0x3328)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3328)" ( (binary_expression "param_1 + 0x3328" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);\n  }" { (expression_statement "LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);" (call_expression "LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318)" identifier (argument_list "(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318)" ( number_literal , (string_literal ""MagickCore/enhance.c"" " string_content ") , (string_literal ""LevelImageColors"" " string_content ") , number_literal , (pointer_expression "&DAT_002f75ae" & identifier) , (binary_expression "param_1 + 0x318" identifier + number_literal) ))) ;) })) (if_statement "if (((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))) {\n    SetImageColorspace(param_1,0x17,param_5);\n  }" if (parenthesized_expression "(((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21))))))" ( (binary_expression "((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))" (parenthesized_expression "((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21))" ( (binary_expression "(*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)" (parenthesized_expression "(*(int *)(param_1 + 4) == 3)" ( (binary_expression "*(int *)(param_1 + 4) == 3" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(int *)(param_1 + 4) == 0x21)" ( (binary_expression "*(int *)(param_1 + 4) == 0x21" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))" ( (parenthesized_expression "((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21))))" ( (binary_expression "(*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))" (parenthesized_expression "(*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3))" ( (binary_expression "*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)" (binary_expression "*(int *)(param_2 + 4) != 0x21" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(*(int *)(param_2 + 4) != 3)" ( (binary_expression "*(int *)(param_2 + 4) != 3" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))" ( (parenthesized_expression "(*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21))" ( (binary_expression "*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)" (binary_expression "*(int *)(param_3 + 4) != 3" (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(*(int *)(param_3 + 4) != 0x21)" ( (binary_expression "*(int *)(param_3 + 4) != 0x21" (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) != number_literal) ))) )) ))) )) ))) )) (compound_statement "{\n    SetImageColorspace(param_1,0x17,param_5);\n  }" { (expression_statement "SetImageColorspace(param_1,0x17,param_5);" (call_expression "SetImageColorspace(param_1,0x17,param_5)" identifier (argument_list "(param_1,0x17,param_5)" ( identifier , number_literal , identifier ))) ;) })) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (expression_statement "uVar4 = *(uint *)(iVar2 + 4) & 2;" (assignment_expression "uVar4 = *(uint *)(iVar2 + 4) & 2" identifier = (binary_expression "*(uint *)(iVar2 + 4) & 2" (pointer_expression "*(uint *)(iVar2 + 4)" * (cast_expression "(uint *)(iVar2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if (param_4 != 0) {\n    if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }\n    if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }\n    local_20 = SetImageChannelMask(param_1,0x10);\n    uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);\n    goto LAB_000ca7ff;\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }\n    if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }\n    local_20 = SetImageChannelMask(param_1,0x10);\n    uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);\n    goto LAB_000ca7ff;\n  }" { (if_statement "if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" { (expression_statement "uVar3 = SetImageChannelMask(param_1,1);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,1)" identifier = (call_expression "SetImageChannelMask(param_1,1)" identifier (argument_list "(param_1,1)" ( identifier , number_literal )))) ;) (expression_statement "uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);" (assignment_expression "uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5)" identifier = (call_expression "LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x20)" * (cast_expression "(undefined4 *)(param_2 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x24)" * (cast_expression "(undefined4 *)(param_2 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x20)" * (cast_expression "(undefined4 *)(param_3 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x24)" * (cast_expression "(undefined4 *)(param_3 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x24)" ( (binary_expression "param_3 + 0x24" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar5 = uVar5 & 1;" (assignment_expression "uVar5 = uVar5 & 1" identifier = (binary_expression "uVar5 & 1" identifier & number_literal)) ;) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (if_statement "if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" if (parenthesized_expression "((*(byte *)(iVar2 + 0x10) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x10) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x10) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x10) & 2" (pointer_expression "*(byte *)(iVar2 + 0x10)" * (cast_expression "(byte *)(iVar2 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" { (expression_statement "uVar3 = SetImageChannelMask(param_1,2);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,2)" identifier = (call_expression "SetImageChannelMask(param_1,2)" identifier (argument_list "(param_1,2)" ( identifier , number_literal )))) ;) (expression_statement "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);" (assignment_expression "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5)" identifier = (call_expression "LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x28)" * (cast_expression "(undefined4 *)(param_2 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x2c)" * (cast_expression "(undefined4 *)(param_2 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x2c)" ( (binary_expression "param_2 + 0x2c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x28)" * (cast_expression "(undefined4 *)(param_3 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x28)" ( (binary_expression "param_3 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x2c)" * (cast_expression "(undefined4 *)(param_3 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2c)" ( (binary_expression "param_3 + 0x2c" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" identifier = (binary_expression "uVar5 & uVar4" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (if_statement "if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" if (parenthesized_expression "((*(byte *)(iVar2 + 0x1c) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x1c) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x1c) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x1c) & 2" (pointer_expression "*(byte *)(iVar2 + 0x1c)" * (cast_expression "(byte *)(iVar2 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" { (expression_statement "uVar3 = SetImageChannelMask(param_1,4);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,4)" identifier = (call_expression "SetImageChannelMask(param_1,4)" identifier (argument_list "(param_1,4)" ( identifier , number_literal )))) ;) (expression_statement "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);" (assignment_expression "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5)" identifier = (call_expression "LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x30)" * (cast_expression "(undefined4 *)(param_2 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x34)" * (cast_expression "(undefined4 *)(param_2 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x30)" * (cast_expression "(undefined4 *)(param_3 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x34)" * (cast_expression "(undefined4 *)(param_3 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x34)" ( (binary_expression "param_3 + 0x34" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" identifier = (binary_expression "uVar5 & uVar4" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (if_statement "if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" if (parenthesized_expression "(((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2))" ( (binary_expression "((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)" (parenthesized_expression "((*(byte *)(iVar2 + 0x28) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x28) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x28) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x28) & 2" (pointer_expression "*(byte *)(iVar2 + 0x28)" * (cast_expression "(byte *)(iVar2 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(*(int *)(param_1 + 4) == 2)" ( (binary_expression "*(int *)(param_1 + 4) == 2" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" { (expression_statement "uVar3 = SetImageChannelMask(param_1,8);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,8)" identifier = (call_expression "SetImageChannelMask(param_1,8)" identifier (argument_list "(param_1,8)" ( identifier , number_literal )))) ;) (expression_statement "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);" (assignment_expression "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5)" identifier = (call_expression "LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x38)" * (cast_expression "(undefined4 *)(param_2 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x38)" * (cast_expression "(undefined4 *)(param_3 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x3c)" * (cast_expression "(undefined4 *)(param_3 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" identifier = (binary_expression "uVar5 & uVar4" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (if_statement "if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }" if (parenthesized_expression "((*(byte *)(iVar2 + 0x34) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x34) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x34) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x34) & 2" (pointer_expression "*(byte *)(iVar2 + 0x34)" * (cast_expression "(byte *)(iVar2 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x34)" ( (binary_expression "iVar2 + 0x34" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      return uVar5;\n    }" { (return_statement "return uVar5;" return identifier ;) })) (if_statement "if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x294) == 0)" ( (binary_expression "*(int *)(param_1 + 0x294) == 0" (pointer_expression "*(int *)(param_1 + 0x294)" * (cast_expression "(int *)(param_1 + 0x294)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x294)" ( (binary_expression "param_1 + 0x294" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      return uVar5;\n    }" { (return_statement "return uVar5;" return identifier ;) })) (expression_statement "local_20 = SetImageChannelMask(param_1,0x10);" (assignment_expression "local_20 = SetImageChannelMask(param_1,0x10)" identifier = (call_expression "SetImageChannelMask(param_1,0x10)" identifier (argument_list "(param_1,0x10)" ( identifier , number_literal )))) ;) (expression_statement "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);" (assignment_expression "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5)" identifier = (call_expression "LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x40)" * (cast_expression "(undefined4 *)(param_2 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x44)" * (cast_expression "(undefined4 *)(param_2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x40)" * (cast_expression "(undefined4 *)(param_3 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x40)" ( (binary_expression "param_3 + 0x40" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x44)" * (cast_expression "(undefined4 *)(param_3 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x44)" ( (binary_expression "param_3 + 0x44" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (goto_statement "goto LAB_000ca7ff;" goto statement_identifier ;) })) (if_statement "if (uVar4 == 0) {\n    if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;\nLAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  else {\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;\nLAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }" { (if_statement "if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;" if (parenthesized_expression "((*(byte *)(iVar2 + 0x10) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x10) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x10) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x10) & 2" (pointer_expression "*(byte *)(iVar2 + 0x10)" * (cast_expression "(byte *)(iVar2 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000ca750;" goto statement_identifier ;)) (labeled_statement "LAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);" statement_identifier : (expression_statement "uVar3 = SetImageChannelMask(param_1,2);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,2)" identifier = (call_expression "SetImageChannelMask(param_1,2)" identifier (argument_list "(param_1,2)" ( identifier , number_literal )))) ;)) (expression_statement "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);" (assignment_expression "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5)" identifier = (call_expression "LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x28)" * (cast_expression "(undefined4 *)(param_2 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x2c)" * (cast_expression "(undefined4 *)(param_2 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x2c)" ( (binary_expression "param_2 + 0x2c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x28)" * (cast_expression "(undefined4 *)(param_3 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x28)" ( (binary_expression "param_3 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x2c)" * (cast_expression "(undefined4 *)(param_3 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2c)" ( (binary_expression "param_3 + 0x2c" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" identifier = (binary_expression "uVar5 & uVar4" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "bVar1 = *(byte *)(iVar2 + 0x1c);" (assignment_expression "bVar1 = *(byte *)(iVar2 + 0x1c)" identifier = (pointer_expression "*(byte *)(iVar2 + 0x1c)" * (cast_expression "(byte *)(iVar2 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }" else (compound_statement "{\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }" { (expression_statement "uVar3 = SetImageChannelMask(param_1,1);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,1)" identifier = (call_expression "SetImageChannelMask(param_1,1)" identifier (argument_list "(param_1,1)" ( identifier , number_literal )))) ;) (expression_statement "uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);" (assignment_expression "uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5)" identifier = (call_expression "LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x20)" * (cast_expression "(undefined4 *)(param_2 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x24)" * (cast_expression "(undefined4 *)(param_2 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x20)" * (cast_expression "(undefined4 *)(param_3 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x24)" * (cast_expression "(undefined4 *)(param_3 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x24)" ( (binary_expression "param_3 + 0x24" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar5 = uVar5 & 1;" (assignment_expression "uVar5 = uVar5 & 1" identifier = (binary_expression "uVar5 & 1" identifier & number_literal)) ;) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;" if (parenthesized_expression "((*(byte *)(iVar2 + 0x10) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x10) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x10) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x10) & 2" (pointer_expression "*(byte *)(iVar2 + 0x10)" * (cast_expression "(byte *)(iVar2 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000ca9e9;" goto statement_identifier ;)) (labeled_statement "LAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);" statement_identifier : (expression_statement "bVar1 = *(byte *)(iVar2 + 0x1c);" (assignment_expression "bVar1 = *(byte *)(iVar2 + 0x1c)" identifier = (pointer_expression "*(byte *)(iVar2 + 0x1c)" * (cast_expression "(byte *)(iVar2 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) ))))) ;)) }))) (if_statement "if ((bVar1 & 2) != 0) {\n    uVar3 = SetImageChannelMask(param_1,4);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }" if (parenthesized_expression "((bVar1 & 2) != 0)" ( (binary_expression "(bVar1 & 2) != 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar3 = SetImageChannelMask(param_1,4);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }" { (expression_statement "uVar3 = SetImageChannelMask(param_1,4);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,4)" identifier = (call_expression "SetImageChannelMask(param_1,4)" identifier (argument_list "(param_1,4)" ( identifier , number_literal )))) ;) (expression_statement "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);" (assignment_expression "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5)" identifier = (call_expression "LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x30)" * (cast_expression "(undefined4 *)(param_2 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x34)" * (cast_expression "(undefined4 *)(param_2 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x30)" * (cast_expression "(undefined4 *)(param_3 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x34)" * (cast_expression "(undefined4 *)(param_3 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x34)" ( (binary_expression "param_3 + 0x34" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" identifier = (binary_expression "uVar5 & uVar4" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (if_statement "if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n    uVar3 = SetImageChannelMask(param_1,8);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }" if (parenthesized_expression "(((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2))" ( (binary_expression "((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)" (parenthesized_expression "((*(byte *)(iVar2 + 0x28) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x28) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x28) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x28) & 2" (pointer_expression "*(byte *)(iVar2 + 0x28)" * (cast_expression "(byte *)(iVar2 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(*(int *)(param_1 + 4) == 2)" ( (binary_expression "*(int *)(param_1 + 4) == 2" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    uVar3 = SetImageChannelMask(param_1,8);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }" { (expression_statement "uVar3 = SetImageChannelMask(param_1,8);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,8)" identifier = (call_expression "SetImageChannelMask(param_1,8)" identifier (argument_list "(param_1,8)" ( identifier , number_literal )))) ;) (expression_statement "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);" (assignment_expression "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5)" identifier = (call_expression "LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x38)" * (cast_expression "(undefined4 *)(param_2 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x38)" * (cast_expression "(undefined4 *)(param_3 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x3c)" * (cast_expression "(undefined4 *)(param_3 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" identifier = (binary_expression "uVar5 & uVar4" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (if_statement "if (((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0)) {\n    return uVar5;\n  }" if (parenthesized_expression "(((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0))" ( (binary_expression "((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0)" (parenthesized_expression "((*(byte *)(iVar2 + 0x34) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x34) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x34) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x34) & 2" (pointer_expression "*(byte *)(iVar2 + 0x34)" * (cast_expression "(byte *)(iVar2 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x34)" ( (binary_expression "iVar2 + 0x34" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(*(int *)(param_1 + 0x294) == 0)" ( (binary_expression "*(int *)(param_1 + 0x294) == 0" (pointer_expression "*(int *)(param_1 + 0x294)" * (cast_expression "(int *)(param_1 + 0x294)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x294)" ( (binary_expression "param_1 + 0x294" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    return uVar5;\n  }" { (return_statement "return uVar5;" return identifier ;) })) (expression_statement "local_20 = SetImageChannelMask(param_1,0x10);" (assignment_expression "local_20 = SetImageChannelMask(param_1,0x10)" identifier = (call_expression "SetImageChannelMask(param_1,0x10)" identifier (argument_list "(param_1,0x10)" ( identifier , number_literal )))) ;) (expression_statement "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5);" (assignment_expression "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5)" identifier = (call_expression "LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x40)" * (cast_expression "(undefined4 *)(param_2 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x44)" * (cast_expression "(undefined4 *)(param_2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x40)" * (cast_expression "(undefined4 *)(param_3 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x40)" ( (binary_expression "param_3 + 0x40" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x44)" * (cast_expression "(undefined4 *)(param_3 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x44)" ( (binary_expression "param_3 + 0x44" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (labeled_statement "LAB_000ca7ff:\n  SetImageChannelMask(param_1,local_20);" statement_identifier : (expression_statement "SetImageChannelMask(param_1,local_20);" (call_expression "SetImageChannelMask(param_1,local_20)" identifier (argument_list "(param_1,local_20)" ( identifier , identifier ))) ;)) (return_statement "return uVar5 & uVar4;" return (binary_expression "uVar5 & uVar4" identifier & identifier) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\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 "ChannelType": 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/* WARNING: Enum "LogEventType": Some values do not have unique names */\n\nMagickBooleanType\nLevelImageColors(Image *image,PixelInfo *black_color,PixelInfo *white_color,MagickBooleanType invert\n                ,ExceptionInfo *exception)\n\n{\n  undefined1 uVar1;\n  PixelChannelMap *pPVar2;\n  MagickBooleanType MVar3;\n  ChannelType CVar4;\n  PixelTrait PVar5;\n  MagickBooleanType MVar6;\n  ChannelType local_20;\n  \n  if (image == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\n  }\n  if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }\n  if (image->debug != MagickFalse) {\n    LogMagickEvent(TraceEvent,"MagickCore/enhance.c","LevelImageColors",0xc95,"%s",image->filename);\n  }\n  if (((image->colorspace == GRAYColorspace) || (image->colorspace == LinearGRAYColorspace)) &&\n     (((black_color->colorspace != LinearGRAYColorspace &&\n       (black_color->colorspace != GRAYColorspace)) ||\n      ((white_color->colorspace != GRAYColorspace &&\n       (white_color->colorspace != LinearGRAYColorspace)))))) {\n    SetImageColorspace(image,sRGBColorspace,exception);\n  }\n  pPVar2 = image->channel_map;\n  MVar6 = MagickTrue;\n  PVar5 = pPVar2->traits & UpdatePixelTrait;\n  if (invert != MagickFalse) {\n    if (PVar5 != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,CyanChannel);\n      MVar6 = LevelizeImage(image,black_color->red,white_color->red,1.0,exception);\n      MVar6 = MVar6 & MagickTrue;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if ((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,GreenChannel);\n      MVar3 = LevelizeImage(image,black_color->green,white_color->green,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if ((pPVar2[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,BlueChannel);\n      MVar3 = LevelizeImage(image,black_color->blue,white_color->blue,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if (((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait) &&\n       (image->colorspace == CMYKColorspace)) {\n      CVar4 = SetImageChannelMask(image,BlackChannel);\n      MVar3 = LevelizeImage(image,black_color->black,white_color->black,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if ((pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) {\n      return MVar6;\n    }\n    if (image->alpha_trait == UndefinedPixelTrait) {\n      return MVar6;\n    }\n    local_20 = SetImageChannelMask(image,AlphaChannel);\n    MVar3 = LevelizeImage(image,black_color->alpha,white_color->alpha,1.0,exception);\n    goto LAB_000ca7ff;\n  }\n  if (PVar5 == UndefinedPixelTrait) {\n    if ((pPVar2[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_000ca750;\nLAB_000ca9e9:\n    CVar4 = SetImageChannelMask(image,GreenChannel);\n    MVar3 = LevelImage(image,black_color->green,white_color->green,1.0,exception);\n    MVar6 = MVar6 & MVar3;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n    uVar1 = (undefined1)pPVar2[2].traits;\n  }\n  else {\n    CVar4 = SetImageChannelMask(image,CyanChannel);\n    MVar6 = LevelImage(image,black_color->red,white_color->red,1.0,exception);\n    MVar6 = MVar6 & MagickTrue;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n    if ((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_000ca9e9;\nLAB_000ca750:\n    uVar1 = (undefined1)pPVar2[2].traits;\n  }\n  if ((uVar1 & UpdatePixelTrait) != UndefinedPixelTrait) {\n    CVar4 = SetImageChannelMask(image,BlueChannel);\n    MVar3 = LevelImage(image,black_color->blue,white_color->blue,1.0,exception);\n    MVar6 = MVar6 & MVar3;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n  }\n  if (((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait) &&\n     (image->colorspace == CMYKColorspace)) {\n    CVar4 = SetImageChannelMask(image,BlackChannel);\n    MVar3 = LevelImage(image,black_color->black,white_color->black,1.0,exception);\n    MVar6 = MVar6 & MVar3;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n  }\n  if (((pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) ||\n     (image->alpha_trait == UndefinedPixelTrait)) {\n    return MVar6;\n  }\n  local_20 = SetImageChannelMask(image,AlphaChannel);\n  MVar3 = LevelImage(image,black_color->alpha,white_color->alpha,1.0,exception);\nLAB_000ca7ff:\n  SetImageChannelMask(image,local_20);\n  return MVar6 & MVar3;\n}\n\n" comment comment comment comment comment comment comment comment (function_definition "MagickBooleanType\nLevelImageColors(Image *image,PixelInfo *black_color,PixelInfo *white_color,MagickBooleanType invert\n                ,ExceptionInfo *exception)\n\n{\n  undefined1 uVar1;\n  PixelChannelMap *pPVar2;\n  MagickBooleanType MVar3;\n  ChannelType CVar4;\n  PixelTrait PVar5;\n  MagickBooleanType MVar6;\n  ChannelType local_20;\n  \n  if (image == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\n  }\n  if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }\n  if (image->debug != MagickFalse) {\n    LogMagickEvent(TraceEvent,"MagickCore/enhance.c","LevelImageColors",0xc95,"%s",image->filename);\n  }\n  if (((image->colorspace == GRAYColorspace) || (image->colorspace == LinearGRAYColorspace)) &&\n     (((black_color->colorspace != LinearGRAYColorspace &&\n       (black_color->colorspace != GRAYColorspace)) ||\n      ((white_color->colorspace != GRAYColorspace &&\n       (white_color->colorspace != LinearGRAYColorspace)))))) {\n    SetImageColorspace(image,sRGBColorspace,exception);\n  }\n  pPVar2 = image->channel_map;\n  MVar6 = MagickTrue;\n  PVar5 = pPVar2->traits & UpdatePixelTrait;\n  if (invert != MagickFalse) {\n    if (PVar5 != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,CyanChannel);\n      MVar6 = LevelizeImage(image,black_color->red,white_color->red,1.0,exception);\n      MVar6 = MVar6 & MagickTrue;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if ((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,GreenChannel);\n      MVar3 = LevelizeImage(image,black_color->green,white_color->green,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if ((pPVar2[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,BlueChannel);\n      MVar3 = LevelizeImage(image,black_color->blue,white_color->blue,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if (((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait) &&\n       (image->colorspace == CMYKColorspace)) {\n      CVar4 = SetImageChannelMask(image,BlackChannel);\n      MVar3 = LevelizeImage(image,black_color->black,white_color->black,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if ((pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) {\n      return MVar6;\n    }\n    if (image->alpha_trait == UndefinedPixelTrait) {\n      return MVar6;\n    }\n    local_20 = SetImageChannelMask(image,AlphaChannel);\n    MVar3 = LevelizeImage(image,black_color->alpha,white_color->alpha,1.0,exception);\n    goto LAB_000ca7ff;\n  }\n  if (PVar5 == UndefinedPixelTrait) {\n    if ((pPVar2[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_000ca750;\nLAB_000ca9e9:\n    CVar4 = SetImageChannelMask(image,GreenChannel);\n    MVar3 = LevelImage(image,black_color->green,white_color->green,1.0,exception);\n    MVar6 = MVar6 & MVar3;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n    uVar1 = (undefined1)pPVar2[2].traits;\n  }\n  else {\n    CVar4 = SetImageChannelMask(image,CyanChannel);\n    MVar6 = LevelImage(image,black_color->red,white_color->red,1.0,exception);\n    MVar6 = MVar6 & MagickTrue;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n    if ((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_000ca9e9;\nLAB_000ca750:\n    uVar1 = (undefined1)pPVar2[2].traits;\n  }\n  if ((uVar1 & UpdatePixelTrait) != UndefinedPixelTrait) {\n    CVar4 = SetImageChannelMask(image,BlueChannel);\n    MVar3 = LevelImage(image,black_color->blue,white_color->blue,1.0,exception);\n    MVar6 = MVar6 & MVar3;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n  }\n  if (((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait) &&\n     (image->colorspace == CMYKColorspace)) {\n    CVar4 = SetImageChannelMask(image,BlackChannel);\n    MVar3 = LevelImage(image,black_color->black,white_color->black,1.0,exception);\n    MVar6 = MVar6 & MVar3;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n  }\n  if (((pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) ||\n     (image->alpha_trait == UndefinedPixelTrait)) {\n    return MVar6;\n  }\n  local_20 = SetImageChannelMask(image,AlphaChannel);\n  MVar3 = LevelImage(image,black_color->alpha,white_color->alpha,1.0,exception);\nLAB_000ca7ff:\n  SetImageChannelMask(image,local_20);\n  return MVar6 & MVar3;\n}" type_identifier (function_declarator "LevelImageColors(Image *image,PixelInfo *black_color,PixelInfo *white_color,MagickBooleanType invert\n                ,ExceptionInfo *exception)" identifier (parameter_list "(Image *image,PixelInfo *black_color,PixelInfo *white_color,MagickBooleanType invert\n                ,ExceptionInfo *exception)" ( (parameter_declaration "Image *image" type_identifier (pointer_declarator "*image" * identifier)) , (parameter_declaration "PixelInfo *black_color" type_identifier (pointer_declarator "*black_color" * identifier)) , (parameter_declaration "PixelInfo *white_color" type_identifier (pointer_declarator "*white_color" * identifier)) , (parameter_declaration "MagickBooleanType invert" type_identifier identifier) , (parameter_declaration "ExceptionInfo *exception" type_identifier (pointer_declarator "*exception" * identifier)) ))) (compound_statement "{\n  undefined1 uVar1;\n  PixelChannelMap *pPVar2;\n  MagickBooleanType MVar3;\n  ChannelType CVar4;\n  PixelTrait PVar5;\n  MagickBooleanType MVar6;\n  ChannelType local_20;\n  \n  if (image == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\n  }\n  if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }\n  if (image->debug != MagickFalse) {\n    LogMagickEvent(TraceEvent,"MagickCore/enhance.c","LevelImageColors",0xc95,"%s",image->filename);\n  }\n  if (((image->colorspace == GRAYColorspace) || (image->colorspace == LinearGRAYColorspace)) &&\n     (((black_color->colorspace != LinearGRAYColorspace &&\n       (black_color->colorspace != GRAYColorspace)) ||\n      ((white_color->colorspace != GRAYColorspace &&\n       (white_color->colorspace != LinearGRAYColorspace)))))) {\n    SetImageColorspace(image,sRGBColorspace,exception);\n  }\n  pPVar2 = image->channel_map;\n  MVar6 = MagickTrue;\n  PVar5 = pPVar2->traits & UpdatePixelTrait;\n  if (invert != MagickFalse) {\n    if (PVar5 != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,CyanChannel);\n      MVar6 = LevelizeImage(image,black_color->red,white_color->red,1.0,exception);\n      MVar6 = MVar6 & MagickTrue;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if ((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,GreenChannel);\n      MVar3 = LevelizeImage(image,black_color->green,white_color->green,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if ((pPVar2[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,BlueChannel);\n      MVar3 = LevelizeImage(image,black_color->blue,white_color->blue,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if (((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait) &&\n       (image->colorspace == CMYKColorspace)) {\n      CVar4 = SetImageChannelMask(image,BlackChannel);\n      MVar3 = LevelizeImage(image,black_color->black,white_color->black,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if ((pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) {\n      return MVar6;\n    }\n    if (image->alpha_trait == UndefinedPixelTrait) {\n      return MVar6;\n    }\n    local_20 = SetImageChannelMask(image,AlphaChannel);\n    MVar3 = LevelizeImage(image,black_color->alpha,white_color->alpha,1.0,exception);\n    goto LAB_000ca7ff;\n  }\n  if (PVar5 == UndefinedPixelTrait) {\n    if ((pPVar2[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_000ca750;\nLAB_000ca9e9:\n    CVar4 = SetImageChannelMask(image,GreenChannel);\n    MVar3 = LevelImage(image,black_color->green,white_color->green,1.0,exception);\n    MVar6 = MVar6 & MVar3;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n    uVar1 = (undefined1)pPVar2[2].traits;\n  }\n  else {\n    CVar4 = SetImageChannelMask(image,CyanChannel);\n    MVar6 = LevelImage(image,black_color->red,white_color->red,1.0,exception);\n    MVar6 = MVar6 & MagickTrue;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n    if ((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_000ca9e9;\nLAB_000ca750:\n    uVar1 = (undefined1)pPVar2[2].traits;\n  }\n  if ((uVar1 & UpdatePixelTrait) != UndefinedPixelTrait) {\n    CVar4 = SetImageChannelMask(image,BlueChannel);\n    MVar3 = LevelImage(image,black_color->blue,white_color->blue,1.0,exception);\n    MVar6 = MVar6 & MVar3;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n  }\n  if (((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait) &&\n     (image->colorspace == CMYKColorspace)) {\n    CVar4 = SetImageChannelMask(image,BlackChannel);\n    MVar3 = LevelImage(image,black_color->black,white_color->black,1.0,exception);\n    MVar6 = MVar6 & MVar3;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n  }\n  if (((pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) ||\n     (image->alpha_trait == UndefinedPixelTrait)) {\n    return MVar6;\n  }\n  local_20 = SetImageChannelMask(image,AlphaChannel);\n  MVar3 = LevelImage(image,black_color->alpha,white_color->alpha,1.0,exception);\nLAB_000ca7ff:\n  SetImageChannelMask(image,local_20);\n  return MVar6 & MVar3;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "PixelChannelMap *pPVar2;" type_identifier (pointer_declarator "*pPVar2" * identifier) ;) (declaration "MagickBooleanType MVar3;" type_identifier identifier ;) (declaration "ChannelType CVar4;" type_identifier identifier ;) (declaration "PixelTrait PVar5;" type_identifier identifier ;) (declaration "MagickBooleanType MVar6;" type_identifier identifier ;) (declaration "ChannelType local_20;" type_identifier identifier ;) (if_statement "if (image == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\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","MagickCore/enhance.c",0xc92,"LevelImageColors");\n  }" { comment (expression_statement "__assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");" (call_expression "__assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors")" identifier (argument_list "("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors")" ( (string_literal ""image != (Image *) NULL"" " string_content ") , (string_literal ""MagickCore/enhance.c"" " string_content ") , number_literal , (string_literal ""LevelImageColors"" " string_content ") ))) ;) })) (if_statement "if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\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","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }" { comment (expression_statement "__assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors")" identifier (argument_list "("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors")" ( (string_literal ""image->signature == MagickCoreSignature"" " string_content ") , (string_literal ""MagickCore/enhance.c"" " string_content ") , number_literal , (string_literal ""LevelImageColors"" " string_content ") ))) ;) })) (if_statement "if (image->debug != MagickFalse) {\n    LogMagickEvent(TraceEvent,"MagickCore/enhance.c","LevelImageColors",0xc95,"%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,"MagickCore/enhance.c","LevelImageColors",0xc95,"%s",image->filename);\n  }" { (expression_statement "LogMagickEvent(TraceEvent,"MagickCore/enhance.c","LevelImageColors",0xc95,"%s",image->filename);" (call_expression "LogMagickEvent(TraceEvent,"MagickCore/enhance.c","LevelImageColors",0xc95,"%s",image->filename)" identifier (argument_list "(TraceEvent,"MagickCore/enhance.c","LevelImageColors",0xc95,"%s",image->filename)" ( identifier , (string_literal ""MagickCore/enhance.c"" " string_content ") , (string_literal ""LevelImageColors"" " string_content ") , number_literal , (string_literal ""%s"" " string_content ") , (field_expression "image->filename" identifier -> field_identifier) ))) ;) })) (if_statement "if (((image->colorspace == GRAYColorspace) || (image->colorspace == LinearGRAYColorspace)) &&\n     (((black_color->colorspace != LinearGRAYColorspace &&\n       (black_color->colorspace != GRAYColorspace)) ||\n      ((white_color->colorspace != GRAYColorspace &&\n       (white_color->colorspace != LinearGRAYColorspace)))))) {\n    SetImageColorspace(image,sRGBColorspace,exception);\n  }" if (parenthesized_expression "(((image->colorspace == GRAYColorspace) || (image->colorspace == LinearGRAYColorspace)) &&\n     (((black_color->colorspace != LinearGRAYColorspace &&\n       (black_color->colorspace != GRAYColorspace)) ||\n      ((white_color->colorspace != GRAYColorspace &&\n       (white_color->colorspace != LinearGRAYColorspace))))))" ( (binary_expression "((image->colorspace == GRAYColorspace) || (image->colorspace == LinearGRAYColorspace)) &&\n     (((black_color->colorspace != LinearGRAYColorspace &&\n       (black_color->colorspace != GRAYColorspace)) ||\n      ((white_color->colorspace != GRAYColorspace &&\n       (white_color->colorspace != LinearGRAYColorspace)))))" (parenthesized_expression "((image->colorspace == GRAYColorspace) || (image->colorspace == LinearGRAYColorspace))" ( (binary_expression "(image->colorspace == GRAYColorspace) || (image->colorspace == LinearGRAYColorspace)" (parenthesized_expression "(image->colorspace == GRAYColorspace)" ( (binary_expression "image->colorspace == GRAYColorspace" (field_expression "image->colorspace" identifier -> field_identifier) == identifier) )) || (parenthesized_expression "(image->colorspace == LinearGRAYColorspace)" ( (binary_expression "image->colorspace == LinearGRAYColorspace" (field_expression "image->colorspace" identifier -> field_identifier) == identifier) ))) )) && (parenthesized_expression "(((black_color->colorspace != LinearGRAYColorspace &&\n       (black_color->colorspace != GRAYColorspace)) ||\n      ((white_color->colorspace != GRAYColorspace &&\n       (white_color->colorspace != LinearGRAYColorspace)))))" ( (parenthesized_expression "((black_color->colorspace != LinearGRAYColorspace &&\n       (black_color->colorspace != GRAYColorspace)) ||\n      ((white_color->colorspace != GRAYColorspace &&\n       (white_color->colorspace != LinearGRAYColorspace))))" ( (binary_expression "(black_color->colorspace != LinearGRAYColorspace &&\n       (black_color->colorspace != GRAYColorspace)) ||\n      ((white_color->colorspace != GRAYColorspace &&\n       (white_color->colorspace != LinearGRAYColorspace)))" (parenthesized_expression "(black_color->colorspace != LinearGRAYColorspace &&\n       (black_color->colorspace != GRAYColorspace))" ( (binary_expression "black_color->colorspace != LinearGRAYColorspace &&\n       (black_color->colorspace != GRAYColorspace)" (binary_expression "black_color->colorspace != LinearGRAYColorspace" (field_expression "black_color->colorspace" identifier -> field_identifier) != identifier) && (parenthesized_expression "(black_color->colorspace != GRAYColorspace)" ( (binary_expression "black_color->colorspace != GRAYColorspace" (field_expression "black_color->colorspace" identifier -> field_identifier) != identifier) ))) )) || (parenthesized_expression "((white_color->colorspace != GRAYColorspace &&\n       (white_color->colorspace != LinearGRAYColorspace)))" ( (parenthesized_expression "(white_color->colorspace != GRAYColorspace &&\n       (white_color->colorspace != LinearGRAYColorspace))" ( (binary_expression "white_color->colorspace != GRAYColorspace &&\n       (white_color->colorspace != LinearGRAYColorspace)" (binary_expression "white_color->colorspace != GRAYColorspace" (field_expression "white_color->colorspace" identifier -> field_identifier) != identifier) && (parenthesized_expression "(white_color->colorspace != LinearGRAYColorspace)" ( (binary_expression "white_color->colorspace != LinearGRAYColorspace" (field_expression "white_color->colorspace" identifier -> field_identifier) != identifier) ))) )) ))) )) ))) )) (compound_statement "{\n    SetImageColorspace(image,sRGBColorspace,exception);\n  }" { (expression_statement "SetImageColorspace(image,sRGBColorspace,exception);" (call_expression "SetImageColorspace(image,sRGBColorspace,exception)" identifier (argument_list "(image,sRGBColorspace,exception)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "pPVar2 = image->channel_map;" (assignment_expression "pPVar2 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "MVar6 = MagickTrue;" (assignment_expression "MVar6 = MagickTrue" identifier = identifier) ;) (expression_statement "PVar5 = pPVar2->traits & UpdatePixelTrait;" (assignment_expression "PVar5 = pPVar2->traits & UpdatePixelTrait" identifier = (binary_expression "pPVar2->traits & UpdatePixelTrait" (field_expression "pPVar2->traits" identifier -> field_identifier) & identifier)) ;) (if_statement "if (invert != MagickFalse) {\n    if (PVar5 != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,CyanChannel);\n      MVar6 = LevelizeImage(image,black_color->red,white_color->red,1.0,exception);\n      MVar6 = MVar6 & MagickTrue;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if ((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,GreenChannel);\n      MVar3 = LevelizeImage(image,black_color->green,white_color->green,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if ((pPVar2[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,BlueChannel);\n      MVar3 = LevelizeImage(image,black_color->blue,white_color->blue,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if (((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait) &&\n       (image->colorspace == CMYKColorspace)) {\n      CVar4 = SetImageChannelMask(image,BlackChannel);\n      MVar3 = LevelizeImage(image,black_color->black,white_color->black,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if ((pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) {\n      return MVar6;\n    }\n    if (image->alpha_trait == UndefinedPixelTrait) {\n      return MVar6;\n    }\n    local_20 = SetImageChannelMask(image,AlphaChannel);\n    MVar3 = LevelizeImage(image,black_color->alpha,white_color->alpha,1.0,exception);\n    goto LAB_000ca7ff;\n  }" if (parenthesized_expression "(invert != MagickFalse)" ( (binary_expression "invert != MagickFalse" identifier != identifier) )) (compound_statement "{\n    if (PVar5 != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,CyanChannel);\n      MVar6 = LevelizeImage(image,black_color->red,white_color->red,1.0,exception);\n      MVar6 = MVar6 & MagickTrue;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if ((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,GreenChannel);\n      MVar3 = LevelizeImage(image,black_color->green,white_color->green,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if ((pPVar2[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,BlueChannel);\n      MVar3 = LevelizeImage(image,black_color->blue,white_color->blue,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if (((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait) &&\n       (image->colorspace == CMYKColorspace)) {\n      CVar4 = SetImageChannelMask(image,BlackChannel);\n      MVar3 = LevelizeImage(image,black_color->black,white_color->black,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }\n    if ((pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) {\n      return MVar6;\n    }\n    if (image->alpha_trait == UndefinedPixelTrait) {\n      return MVar6;\n    }\n    local_20 = SetImageChannelMask(image,AlphaChannel);\n    MVar3 = LevelizeImage(image,black_color->alpha,white_color->alpha,1.0,exception);\n    goto LAB_000ca7ff;\n  }" { (if_statement "if (PVar5 != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,CyanChannel);\n      MVar6 = LevelizeImage(image,black_color->red,white_color->red,1.0,exception);\n      MVar6 = MVar6 & MagickTrue;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }" if (parenthesized_expression "(PVar5 != UndefinedPixelTrait)" ( (binary_expression "PVar5 != UndefinedPixelTrait" identifier != identifier) )) (compound_statement "{\n      CVar4 = SetImageChannelMask(image,CyanChannel);\n      MVar6 = LevelizeImage(image,black_color->red,white_color->red,1.0,exception);\n      MVar6 = MVar6 & MagickTrue;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }" { (expression_statement "CVar4 = SetImageChannelMask(image,CyanChannel);" (assignment_expression "CVar4 = SetImageChannelMask(image,CyanChannel)" identifier = (call_expression "SetImageChannelMask(image,CyanChannel)" identifier (argument_list "(image,CyanChannel)" ( identifier , identifier )))) ;) (expression_statement "MVar6 = LevelizeImage(image,black_color->red,white_color->red,1.0,exception);" (assignment_expression "MVar6 = LevelizeImage(image,black_color->red,white_color->red,1.0,exception)" identifier = (call_expression "LevelizeImage(image,black_color->red,white_color->red,1.0,exception)" identifier (argument_list "(image,black_color->red,white_color->red,1.0,exception)" ( identifier , (field_expression "black_color->red" identifier -> field_identifier) , (field_expression "white_color->red" identifier -> field_identifier) , number_literal , identifier )))) ;) (expression_statement "MVar6 = MVar6 & MagickTrue;" (assignment_expression "MVar6 = MVar6 & MagickTrue" identifier = (binary_expression "MVar6 & MagickTrue" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(image,CVar4);" (call_expression "SetImageChannelMask(image,CVar4)" identifier (argument_list "(image,CVar4)" ( identifier , identifier ))) ;) (expression_statement "pPVar2 = image->channel_map;" (assignment_expression "pPVar2 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) })) (if_statement "if ((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,GreenChannel);\n      MVar3 = LevelizeImage(image,black_color->green,white_color->green,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }" if (parenthesized_expression "((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait)" ( (binary_expression "(pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait" (parenthesized_expression "(pPVar2[1].traits & UpdatePixelTrait)" ( (binary_expression "pPVar2[1].traits & UpdatePixelTrait" (field_expression "pPVar2[1].traits" (subscript_expression "pPVar2[1]" identifier [ number_literal ]) . field_identifier) & identifier) )) != identifier) )) (compound_statement "{\n      CVar4 = SetImageChannelMask(image,GreenChannel);\n      MVar3 = LevelizeImage(image,black_color->green,white_color->green,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }" { (expression_statement "CVar4 = SetImageChannelMask(image,GreenChannel);" (assignment_expression "CVar4 = SetImageChannelMask(image,GreenChannel)" identifier = (call_expression "SetImageChannelMask(image,GreenChannel)" identifier (argument_list "(image,GreenChannel)" ( identifier , identifier )))) ;) (expression_statement "MVar3 = LevelizeImage(image,black_color->green,white_color->green,1.0,exception);" (assignment_expression "MVar3 = LevelizeImage(image,black_color->green,white_color->green,1.0,exception)" identifier = (call_expression "LevelizeImage(image,black_color->green,white_color->green,1.0,exception)" identifier (argument_list "(image,black_color->green,white_color->green,1.0,exception)" ( identifier , (field_expression "black_color->green" identifier -> field_identifier) , (field_expression "white_color->green" identifier -> field_identifier) , number_literal , identifier )))) ;) (expression_statement "MVar6 = MVar6 & MVar3;" (assignment_expression "MVar6 = MVar6 & MVar3" identifier = (binary_expression "MVar6 & MVar3" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(image,CVar4);" (call_expression "SetImageChannelMask(image,CVar4)" identifier (argument_list "(image,CVar4)" ( identifier , identifier ))) ;) (expression_statement "pPVar2 = image->channel_map;" (assignment_expression "pPVar2 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) })) (if_statement "if ((pPVar2[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) {\n      CVar4 = SetImageChannelMask(image,BlueChannel);\n      MVar3 = LevelizeImage(image,black_color->blue,white_color->blue,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }" if (parenthesized_expression "((pPVar2[2].traits & UpdatePixelTrait) != UndefinedPixelTrait)" ( (binary_expression "(pPVar2[2].traits & UpdatePixelTrait) != UndefinedPixelTrait" (parenthesized_expression "(pPVar2[2].traits & UpdatePixelTrait)" ( (binary_expression "pPVar2[2].traits & UpdatePixelTrait" (field_expression "pPVar2[2].traits" (subscript_expression "pPVar2[2]" identifier [ number_literal ]) . field_identifier) & identifier) )) != identifier) )) (compound_statement "{\n      CVar4 = SetImageChannelMask(image,BlueChannel);\n      MVar3 = LevelizeImage(image,black_color->blue,white_color->blue,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }" { (expression_statement "CVar4 = SetImageChannelMask(image,BlueChannel);" (assignment_expression "CVar4 = SetImageChannelMask(image,BlueChannel)" identifier = (call_expression "SetImageChannelMask(image,BlueChannel)" identifier (argument_list "(image,BlueChannel)" ( identifier , identifier )))) ;) (expression_statement "MVar3 = LevelizeImage(image,black_color->blue,white_color->blue,1.0,exception);" (assignment_expression "MVar3 = LevelizeImage(image,black_color->blue,white_color->blue,1.0,exception)" identifier = (call_expression "LevelizeImage(image,black_color->blue,white_color->blue,1.0,exception)" identifier (argument_list "(image,black_color->blue,white_color->blue,1.0,exception)" ( identifier , (field_expression "black_color->blue" identifier -> field_identifier) , (field_expression "white_color->blue" identifier -> field_identifier) , number_literal , identifier )))) ;) (expression_statement "MVar6 = MVar6 & MVar3;" (assignment_expression "MVar6 = MVar6 & MVar3" identifier = (binary_expression "MVar6 & MVar3" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(image,CVar4);" (call_expression "SetImageChannelMask(image,CVar4)" identifier (argument_list "(image,CVar4)" ( identifier , identifier ))) ;) (expression_statement "pPVar2 = image->channel_map;" (assignment_expression "pPVar2 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) })) (if_statement "if (((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait) &&\n       (image->colorspace == CMYKColorspace)) {\n      CVar4 = SetImageChannelMask(image,BlackChannel);\n      MVar3 = LevelizeImage(image,black_color->black,white_color->black,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }" if (parenthesized_expression "(((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait) &&\n       (image->colorspace == CMYKColorspace))" ( (binary_expression "((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait) &&\n       (image->colorspace == CMYKColorspace)" (parenthesized_expression "((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait)" ( (binary_expression "(pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait" (parenthesized_expression "(pPVar2[3].traits & UpdatePixelTrait)" ( (binary_expression "pPVar2[3].traits & UpdatePixelTrait" (field_expression "pPVar2[3].traits" (subscript_expression "pPVar2[3]" identifier [ number_literal ]) . field_identifier) & identifier) )) != identifier) )) && (parenthesized_expression "(image->colorspace == CMYKColorspace)" ( (binary_expression "image->colorspace == CMYKColorspace" (field_expression "image->colorspace" identifier -> field_identifier) == identifier) ))) )) (compound_statement "{\n      CVar4 = SetImageChannelMask(image,BlackChannel);\n      MVar3 = LevelizeImage(image,black_color->black,white_color->black,1.0,exception);\n      MVar6 = MVar6 & MVar3;\n      SetImageChannelMask(image,CVar4);\n      pPVar2 = image->channel_map;\n    }" { (expression_statement "CVar4 = SetImageChannelMask(image,BlackChannel);" (assignment_expression "CVar4 = SetImageChannelMask(image,BlackChannel)" identifier = (call_expression "SetImageChannelMask(image,BlackChannel)" identifier (argument_list "(image,BlackChannel)" ( identifier , identifier )))) ;) (expression_statement "MVar3 = LevelizeImage(image,black_color->black,white_color->black,1.0,exception);" (assignment_expression "MVar3 = LevelizeImage(image,black_color->black,white_color->black,1.0,exception)" identifier = (call_expression "LevelizeImage(image,black_color->black,white_color->black,1.0,exception)" identifier (argument_list "(image,black_color->black,white_color->black,1.0,exception)" ( identifier , (field_expression "black_color->black" identifier -> field_identifier) , (field_expression "white_color->black" identifier -> field_identifier) , number_literal , identifier )))) ;) (expression_statement "MVar6 = MVar6 & MVar3;" (assignment_expression "MVar6 = MVar6 & MVar3" identifier = (binary_expression "MVar6 & MVar3" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(image,CVar4);" (call_expression "SetImageChannelMask(image,CVar4)" identifier (argument_list "(image,CVar4)" ( identifier , identifier ))) ;) (expression_statement "pPVar2 = image->channel_map;" (assignment_expression "pPVar2 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) })) (if_statement "if ((pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) {\n      return MVar6;\n    }" if (parenthesized_expression "((pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait)" ( (binary_expression "(pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait" (parenthesized_expression "(pPVar2[4].traits & UpdatePixelTrait)" ( (binary_expression "pPVar2[4].traits & UpdatePixelTrait" (field_expression "pPVar2[4].traits" (subscript_expression "pPVar2[4]" identifier [ number_literal ]) . field_identifier) & identifier) )) == identifier) )) (compound_statement "{\n      return MVar6;\n    }" { (return_statement "return MVar6;" return identifier ;) })) (if_statement "if (image->alpha_trait == UndefinedPixelTrait) {\n      return MVar6;\n    }" if (parenthesized_expression "(image->alpha_trait == UndefinedPixelTrait)" ( (binary_expression "image->alpha_trait == UndefinedPixelTrait" (field_expression "image->alpha_trait" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      return MVar6;\n    }" { (return_statement "return MVar6;" return identifier ;) })) (expression_statement "local_20 = SetImageChannelMask(image,AlphaChannel);" (assignment_expression "local_20 = SetImageChannelMask(image,AlphaChannel)" identifier = (call_expression "SetImageChannelMask(image,AlphaChannel)" identifier (argument_list "(image,AlphaChannel)" ( identifier , identifier )))) ;) (expression_statement "MVar3 = LevelizeImage(image,black_color->alpha,white_color->alpha,1.0,exception);" (assignment_expression "MVar3 = LevelizeImage(image,black_color->alpha,white_color->alpha,1.0,exception)" identifier = (call_expression "LevelizeImage(image,black_color->alpha,white_color->alpha,1.0,exception)" identifier (argument_list "(image,black_color->alpha,white_color->alpha,1.0,exception)" ( identifier , (field_expression "black_color->alpha" identifier -> field_identifier) , (field_expression "white_color->alpha" identifier -> field_identifier) , number_literal , identifier )))) ;) (goto_statement "goto LAB_000ca7ff;" goto statement_identifier ;) })) (if_statement "if (PVar5 == UndefinedPixelTrait) {\n    if ((pPVar2[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_000ca750;\nLAB_000ca9e9:\n    CVar4 = SetImageChannelMask(image,GreenChannel);\n    MVar3 = LevelImage(image,black_color->green,white_color->green,1.0,exception);\n    MVar6 = MVar6 & MVar3;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n    uVar1 = (undefined1)pPVar2[2].traits;\n  }\n  else {\n    CVar4 = SetImageChannelMask(image,CyanChannel);\n    MVar6 = LevelImage(image,black_color->red,white_color->red,1.0,exception);\n    MVar6 = MVar6 & MagickTrue;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n    if ((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_000ca9e9;\nLAB_000ca750:\n    uVar1 = (undefined1)pPVar2[2].traits;\n  }" if (parenthesized_expression "(PVar5 == UndefinedPixelTrait)" ( (binary_expression "PVar5 == UndefinedPixelTrait" identifier == identifier) )) (compound_statement "{\n    if ((pPVar2[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_000ca750;\nLAB_000ca9e9:\n    CVar4 = SetImageChannelMask(image,GreenChannel);\n    MVar3 = LevelImage(image,black_color->green,white_color->green,1.0,exception);\n    MVar6 = MVar6 & MVar3;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n    uVar1 = (undefined1)pPVar2[2].traits;\n  }" { (if_statement "if ((pPVar2[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_000ca750;" if (parenthesized_expression "((pPVar2[1].traits & UpdatePixelTrait) == UndefinedPixelTrait)" ( (binary_expression "(pPVar2[1].traits & UpdatePixelTrait) == UndefinedPixelTrait" (parenthesized_expression "(pPVar2[1].traits & UpdatePixelTrait)" ( (binary_expression "pPVar2[1].traits & UpdatePixelTrait" (field_expression "pPVar2[1].traits" (subscript_expression "pPVar2[1]" identifier [ number_literal ]) . field_identifier) & identifier) )) == identifier) )) (goto_statement "goto LAB_000ca750;" goto statement_identifier ;)) (labeled_statement "LAB_000ca9e9:\n    CVar4 = SetImageChannelMask(image,GreenChannel);" statement_identifier : (expression_statement "CVar4 = SetImageChannelMask(image,GreenChannel);" (assignment_expression "CVar4 = SetImageChannelMask(image,GreenChannel)" identifier = (call_expression "SetImageChannelMask(image,GreenChannel)" identifier (argument_list "(image,GreenChannel)" ( identifier , identifier )))) ;)) (expression_statement "MVar3 = LevelImage(image,black_color->green,white_color->green,1.0,exception);" (assignment_expression "MVar3 = LevelImage(image,black_color->green,white_color->green,1.0,exception)" identifier = (call_expression "LevelImage(image,black_color->green,white_color->green,1.0,exception)" identifier (argument_list "(image,black_color->green,white_color->green,1.0,exception)" ( identifier , (field_expression "black_color->green" identifier -> field_identifier) , (field_expression "white_color->green" identifier -> field_identifier) , number_literal , identifier )))) ;) (expression_statement "MVar6 = MVar6 & MVar3;" (assignment_expression "MVar6 = MVar6 & MVar3" identifier = (binary_expression "MVar6 & MVar3" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(image,CVar4);" (call_expression "SetImageChannelMask(image,CVar4)" identifier (argument_list "(image,CVar4)" ( identifier , identifier ))) ;) (expression_statement "pPVar2 = image->channel_map;" (assignment_expression "pPVar2 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "uVar1 = (undefined1)pPVar2[2].traits;" (assignment_expression "uVar1 = (undefined1)pPVar2[2].traits" identifier = (cast_expression "(undefined1)pPVar2[2].traits" ( (type_descriptor "undefined1" type_identifier) ) (field_expression "pPVar2[2].traits" (subscript_expression "pPVar2[2]" identifier [ number_literal ]) . field_identifier))) ;) }) (else_clause "else {\n    CVar4 = SetImageChannelMask(image,CyanChannel);\n    MVar6 = LevelImage(image,black_color->red,white_color->red,1.0,exception);\n    MVar6 = MVar6 & MagickTrue;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n    if ((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_000ca9e9;\nLAB_000ca750:\n    uVar1 = (undefined1)pPVar2[2].traits;\n  }" else (compound_statement "{\n    CVar4 = SetImageChannelMask(image,CyanChannel);\n    MVar6 = LevelImage(image,black_color->red,white_color->red,1.0,exception);\n    MVar6 = MVar6 & MagickTrue;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n    if ((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_000ca9e9;\nLAB_000ca750:\n    uVar1 = (undefined1)pPVar2[2].traits;\n  }" { (expression_statement "CVar4 = SetImageChannelMask(image,CyanChannel);" (assignment_expression "CVar4 = SetImageChannelMask(image,CyanChannel)" identifier = (call_expression "SetImageChannelMask(image,CyanChannel)" identifier (argument_list "(image,CyanChannel)" ( identifier , identifier )))) ;) (expression_statement "MVar6 = LevelImage(image,black_color->red,white_color->red,1.0,exception);" (assignment_expression "MVar6 = LevelImage(image,black_color->red,white_color->red,1.0,exception)" identifier = (call_expression "LevelImage(image,black_color->red,white_color->red,1.0,exception)" identifier (argument_list "(image,black_color->red,white_color->red,1.0,exception)" ( identifier , (field_expression "black_color->red" identifier -> field_identifier) , (field_expression "white_color->red" identifier -> field_identifier) , number_literal , identifier )))) ;) (expression_statement "MVar6 = MVar6 & MagickTrue;" (assignment_expression "MVar6 = MVar6 & MagickTrue" identifier = (binary_expression "MVar6 & MagickTrue" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(image,CVar4);" (call_expression "SetImageChannelMask(image,CVar4)" identifier (argument_list "(image,CVar4)" ( identifier , identifier ))) ;) (expression_statement "pPVar2 = image->channel_map;" (assignment_expression "pPVar2 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (if_statement "if ((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_000ca9e9;" if (parenthesized_expression "((pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait)" ( (binary_expression "(pPVar2[1].traits & UpdatePixelTrait) != UndefinedPixelTrait" (parenthesized_expression "(pPVar2[1].traits & UpdatePixelTrait)" ( (binary_expression "pPVar2[1].traits & UpdatePixelTrait" (field_expression "pPVar2[1].traits" (subscript_expression "pPVar2[1]" identifier [ number_literal ]) . field_identifier) & identifier) )) != identifier) )) (goto_statement "goto LAB_000ca9e9;" goto statement_identifier ;)) (labeled_statement "LAB_000ca750:\n    uVar1 = (undefined1)pPVar2[2].traits;" statement_identifier : (expression_statement "uVar1 = (undefined1)pPVar2[2].traits;" (assignment_expression "uVar1 = (undefined1)pPVar2[2].traits" identifier = (cast_expression "(undefined1)pPVar2[2].traits" ( (type_descriptor "undefined1" type_identifier) ) (field_expression "pPVar2[2].traits" (subscript_expression "pPVar2[2]" identifier [ number_literal ]) . field_identifier))) ;)) }))) (if_statement "if ((uVar1 & UpdatePixelTrait) != UndefinedPixelTrait) {\n    CVar4 = SetImageChannelMask(image,BlueChannel);\n    MVar3 = LevelImage(image,black_color->blue,white_color->blue,1.0,exception);\n    MVar6 = MVar6 & MVar3;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n  }" if (parenthesized_expression "((uVar1 & UpdatePixelTrait) != UndefinedPixelTrait)" ( (binary_expression "(uVar1 & UpdatePixelTrait) != UndefinedPixelTrait" (parenthesized_expression "(uVar1 & UpdatePixelTrait)" ( (binary_expression "uVar1 & UpdatePixelTrait" identifier & identifier) )) != identifier) )) (compound_statement "{\n    CVar4 = SetImageChannelMask(image,BlueChannel);\n    MVar3 = LevelImage(image,black_color->blue,white_color->blue,1.0,exception);\n    MVar6 = MVar6 & MVar3;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n  }" { (expression_statement "CVar4 = SetImageChannelMask(image,BlueChannel);" (assignment_expression "CVar4 = SetImageChannelMask(image,BlueChannel)" identifier = (call_expression "SetImageChannelMask(image,BlueChannel)" identifier (argument_list "(image,BlueChannel)" ( identifier , identifier )))) ;) (expression_statement "MVar3 = LevelImage(image,black_color->blue,white_color->blue,1.0,exception);" (assignment_expression "MVar3 = LevelImage(image,black_color->blue,white_color->blue,1.0,exception)" identifier = (call_expression "LevelImage(image,black_color->blue,white_color->blue,1.0,exception)" identifier (argument_list "(image,black_color->blue,white_color->blue,1.0,exception)" ( identifier , (field_expression "black_color->blue" identifier -> field_identifier) , (field_expression "white_color->blue" identifier -> field_identifier) , number_literal , identifier )))) ;) (expression_statement "MVar6 = MVar6 & MVar3;" (assignment_expression "MVar6 = MVar6 & MVar3" identifier = (binary_expression "MVar6 & MVar3" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(image,CVar4);" (call_expression "SetImageChannelMask(image,CVar4)" identifier (argument_list "(image,CVar4)" ( identifier , identifier ))) ;) (expression_statement "pPVar2 = image->channel_map;" (assignment_expression "pPVar2 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) })) (if_statement "if (((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait) &&\n     (image->colorspace == CMYKColorspace)) {\n    CVar4 = SetImageChannelMask(image,BlackChannel);\n    MVar3 = LevelImage(image,black_color->black,white_color->black,1.0,exception);\n    MVar6 = MVar6 & MVar3;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n  }" if (parenthesized_expression "(((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait) &&\n     (image->colorspace == CMYKColorspace))" ( (binary_expression "((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait) &&\n     (image->colorspace == CMYKColorspace)" (parenthesized_expression "((pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait)" ( (binary_expression "(pPVar2[3].traits & UpdatePixelTrait) != UndefinedPixelTrait" (parenthesized_expression "(pPVar2[3].traits & UpdatePixelTrait)" ( (binary_expression "pPVar2[3].traits & UpdatePixelTrait" (field_expression "pPVar2[3].traits" (subscript_expression "pPVar2[3]" identifier [ number_literal ]) . field_identifier) & identifier) )) != identifier) )) && (parenthesized_expression "(image->colorspace == CMYKColorspace)" ( (binary_expression "image->colorspace == CMYKColorspace" (field_expression "image->colorspace" identifier -> field_identifier) == identifier) ))) )) (compound_statement "{\n    CVar4 = SetImageChannelMask(image,BlackChannel);\n    MVar3 = LevelImage(image,black_color->black,white_color->black,1.0,exception);\n    MVar6 = MVar6 & MVar3;\n    SetImageChannelMask(image,CVar4);\n    pPVar2 = image->channel_map;\n  }" { (expression_statement "CVar4 = SetImageChannelMask(image,BlackChannel);" (assignment_expression "CVar4 = SetImageChannelMask(image,BlackChannel)" identifier = (call_expression "SetImageChannelMask(image,BlackChannel)" identifier (argument_list "(image,BlackChannel)" ( identifier , identifier )))) ;) (expression_statement "MVar3 = LevelImage(image,black_color->black,white_color->black,1.0,exception);" (assignment_expression "MVar3 = LevelImage(image,black_color->black,white_color->black,1.0,exception)" identifier = (call_expression "LevelImage(image,black_color->black,white_color->black,1.0,exception)" identifier (argument_list "(image,black_color->black,white_color->black,1.0,exception)" ( identifier , (field_expression "black_color->black" identifier -> field_identifier) , (field_expression "white_color->black" identifier -> field_identifier) , number_literal , identifier )))) ;) (expression_statement "MVar6 = MVar6 & MVar3;" (assignment_expression "MVar6 = MVar6 & MVar3" identifier = (binary_expression "MVar6 & MVar3" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(image,CVar4);" (call_expression "SetImageChannelMask(image,CVar4)" identifier (argument_list "(image,CVar4)" ( identifier , identifier ))) ;) (expression_statement "pPVar2 = image->channel_map;" (assignment_expression "pPVar2 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) })) (if_statement "if (((pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) ||\n     (image->alpha_trait == UndefinedPixelTrait)) {\n    return MVar6;\n  }" if (parenthesized_expression "(((pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) ||\n     (image->alpha_trait == UndefinedPixelTrait))" ( (binary_expression "((pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) ||\n     (image->alpha_trait == UndefinedPixelTrait)" (parenthesized_expression "((pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait)" ( (binary_expression "(pPVar2[4].traits & UpdatePixelTrait) == UndefinedPixelTrait" (parenthesized_expression "(pPVar2[4].traits & UpdatePixelTrait)" ( (binary_expression "pPVar2[4].traits & UpdatePixelTrait" (field_expression "pPVar2[4].traits" (subscript_expression "pPVar2[4]" identifier [ number_literal ]) . field_identifier) & identifier) )) == identifier) )) || (parenthesized_expression "(image->alpha_trait == UndefinedPixelTrait)" ( (binary_expression "image->alpha_trait == UndefinedPixelTrait" (field_expression "image->alpha_trait" identifier -> field_identifier) == identifier) ))) )) (compound_statement "{\n    return MVar6;\n  }" { (return_statement "return MVar6;" return identifier ;) })) (expression_statement "local_20 = SetImageChannelMask(image,AlphaChannel);" (assignment_expression "local_20 = SetImageChannelMask(image,AlphaChannel)" identifier = (call_expression "SetImageChannelMask(image,AlphaChannel)" identifier (argument_list "(image,AlphaChannel)" ( identifier , identifier )))) ;) (expression_statement "MVar3 = LevelImage(image,black_color->alpha,white_color->alpha,1.0,exception);" (assignment_expression "MVar3 = LevelImage(image,black_color->alpha,white_color->alpha,1.0,exception)" identifier = (call_expression "LevelImage(image,black_color->alpha,white_color->alpha,1.0,exception)" identifier (argument_list "(image,black_color->alpha,white_color->alpha,1.0,exception)" ( identifier , (field_expression "black_color->alpha" identifier -> field_identifier) , (field_expression "white_color->alpha" identifier -> field_identifier) , number_literal , identifier )))) ;) (labeled_statement "LAB_000ca7ff:\n  SetImageChannelMask(image,local_20);" statement_identifier : (expression_statement "SetImageChannelMask(image,local_20);" (call_expression "SetImageChannelMask(image,local_20)" identifier (argument_list "(image,local_20)" ( identifier , identifier ))) ;)) (return_statement "return MVar6 & MVar3;" return (binary_expression "MVar6 & MVar3" identifier & identifier) ;) })))
(translation_unit "uint LevelImageColors(int param_1,int param_2,int param_3,int param_4,undefined4 param_5)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  uint uVar5;\n  undefined4 local_20;\n  \n  if (param_1 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\n  }\n  if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }\n  if (*(int *)(param_1 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);\n  }\n  if (((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))) {\n    SetImageColorspace(param_1,0x17,param_5);\n  }\n  iVar2 = *(int *)(param_1 + 0x2a8);\n  uVar5 = 1;\n  uVar4 = *(uint *)(iVar2 + 4) & 2;\n  if (param_4 != 0) {\n    if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }\n    if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }\n    local_20 = SetImageChannelMask(param_1,0x10);\n    uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);\n    goto LAB_000ca7ff;\n  }\n  if (uVar4 == 0) {\n    if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;\nLAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  else {\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  if ((bVar1 & 2) != 0) {\n    uVar3 = SetImageChannelMask(param_1,4);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }\n  if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n    uVar3 = SetImageChannelMask(param_1,8);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }\n  if (((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0)) {\n    return uVar5;\n  }\n  local_20 = SetImageChannelMask(param_1,0x10);\n  uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5);\nLAB_000ca7ff:\n  SetImageChannelMask(param_1,local_20);\n  return uVar5 & uVar4;\n}\n\n" (function_definition "uint LevelImageColors(int param_1,int param_2,int param_3,int param_4,undefined4 param_5)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  uint uVar5;\n  undefined4 local_20;\n  \n  if (param_1 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\n  }\n  if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }\n  if (*(int *)(param_1 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);\n  }\n  if (((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))) {\n    SetImageColorspace(param_1,0x17,param_5);\n  }\n  iVar2 = *(int *)(param_1 + 0x2a8);\n  uVar5 = 1;\n  uVar4 = *(uint *)(iVar2 + 4) & 2;\n  if (param_4 != 0) {\n    if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }\n    if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }\n    local_20 = SetImageChannelMask(param_1,0x10);\n    uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);\n    goto LAB_000ca7ff;\n  }\n  if (uVar4 == 0) {\n    if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;\nLAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  else {\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  if ((bVar1 & 2) != 0) {\n    uVar3 = SetImageChannelMask(param_1,4);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }\n  if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n    uVar3 = SetImageChannelMask(param_1,8);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }\n  if (((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0)) {\n    return uVar5;\n  }\n  local_20 = SetImageChannelMask(param_1,0x10);\n  uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5);\nLAB_000ca7ff:\n  SetImageChannelMask(param_1,local_20);\n  return uVar5 & uVar4;\n}" type_identifier (function_declarator "LevelImageColors(int param_1,int param_2,int param_3,int param_4,undefined4 param_5)" identifier (parameter_list "(int param_1,int param_2,int param_3,int param_4,undefined4 param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  uint uVar5;\n  undefined4 local_20;\n  \n  if (param_1 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\n  }\n  if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }\n  if (*(int *)(param_1 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);\n  }\n  if (((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))) {\n    SetImageColorspace(param_1,0x17,param_5);\n  }\n  iVar2 = *(int *)(param_1 + 0x2a8);\n  uVar5 = 1;\n  uVar4 = *(uint *)(iVar2 + 4) & 2;\n  if (param_4 != 0) {\n    if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }\n    if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }\n    local_20 = SetImageChannelMask(param_1,0x10);\n    uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);\n    goto LAB_000ca7ff;\n  }\n  if (uVar4 == 0) {\n    if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;\nLAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  else {\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  if ((bVar1 & 2) != 0) {\n    uVar3 = SetImageChannelMask(param_1,4);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }\n  if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n    uVar3 = SetImageChannelMask(param_1,8);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }\n  if (((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0)) {\n    return uVar5;\n  }\n  local_20 = SetImageChannelMask(param_1,0x10);\n  uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5);\nLAB_000ca7ff:\n  SetImageChannelMask(param_1,local_20);\n  return uVar5 & uVar4;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (if_statement "if (param_1 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\n  }" { (expression_statement "__assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");" (call_expression "__assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors")" identifier (argument_list "("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors")" ( (string_literal ""image != (Image *) NULL"" " string_content ") , (string_literal ""MagickCore/enhance.c"" " string_content ") , number_literal , (string_literal ""LevelImageColors"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x3344) != -0x54535255)" ( (binary_expression "*(int *)(param_1 + 0x3344) != -0x54535255" (pointer_expression "*(int *)(param_1 + 0x3344)" * (cast_expression "(int *)(param_1 + 0x3344)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3344)" ( (binary_expression "param_1 + 0x3344" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }" { (expression_statement "__assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors")" identifier (argument_list "("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors")" ( (string_literal ""image->signature == MagickCoreSignature"" " string_content ") , (string_literal ""MagickCore/enhance.c"" " string_content ") , number_literal , (string_literal ""LevelImageColors"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x3328) != 0)" ( (binary_expression "*(int *)(param_1 + 0x3328) != 0" (pointer_expression "*(int *)(param_1 + 0x3328)" * (cast_expression "(int *)(param_1 + 0x3328)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3328)" ( (binary_expression "param_1 + 0x3328" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);\n  }" { (expression_statement "LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);" (call_expression "LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318)" identifier (argument_list "(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318)" ( number_literal , (string_literal ""MagickCore/enhance.c"" " string_content ") , (string_literal ""LevelImageColors"" " string_content ") , number_literal , (pointer_expression "&DAT_002f75ae" & identifier) , (binary_expression "param_1 + 0x318" identifier + number_literal) ))) ;) })) (if_statement "if (((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))) {\n    SetImageColorspace(param_1,0x17,param_5);\n  }" if (parenthesized_expression "(((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21))))))" ( (binary_expression "((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))" (parenthesized_expression "((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21))" ( (binary_expression "(*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)" (parenthesized_expression "(*(int *)(param_1 + 4) == 3)" ( (binary_expression "*(int *)(param_1 + 4) == 3" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(int *)(param_1 + 4) == 0x21)" ( (binary_expression "*(int *)(param_1 + 4) == 0x21" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))" ( (parenthesized_expression "((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21))))" ( (binary_expression "(*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))" (parenthesized_expression "(*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3))" ( (binary_expression "*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)" (binary_expression "*(int *)(param_2 + 4) != 0x21" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(*(int *)(param_2 + 4) != 3)" ( (binary_expression "*(int *)(param_2 + 4) != 3" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))" ( (parenthesized_expression "(*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21))" ( (binary_expression "*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)" (binary_expression "*(int *)(param_3 + 4) != 3" (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(*(int *)(param_3 + 4) != 0x21)" ( (binary_expression "*(int *)(param_3 + 4) != 0x21" (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) != number_literal) ))) )) ))) )) ))) )) (compound_statement "{\n    SetImageColorspace(param_1,0x17,param_5);\n  }" { (expression_statement "SetImageColorspace(param_1,0x17,param_5);" (call_expression "SetImageColorspace(param_1,0x17,param_5)" identifier (argument_list "(param_1,0x17,param_5)" ( identifier , number_literal , identifier ))) ;) })) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (expression_statement "uVar4 = *(uint *)(iVar2 + 4) & 2;" (assignment_expression "uVar4 = *(uint *)(iVar2 + 4) & 2" identifier = (binary_expression "*(uint *)(iVar2 + 4) & 2" (pointer_expression "*(uint *)(iVar2 + 4)" * (cast_expression "(uint *)(iVar2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if (param_4 != 0) {\n    if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }\n    if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }\n    local_20 = SetImageChannelMask(param_1,0x10);\n    uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);\n    goto LAB_000ca7ff;\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }\n    if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }\n    local_20 = SetImageChannelMask(param_1,0x10);\n    uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);\n    goto LAB_000ca7ff;\n  }" { (if_statement "if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" { (expression_statement "uVar3 = SetImageChannelMask(param_1,1);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,1)" identifier = (call_expression "SetImageChannelMask(param_1,1)" identifier (argument_list "(param_1,1)" ( identifier , number_literal )))) ;) (expression_statement "uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);" (assignment_expression "uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5)" identifier = (call_expression "LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x20)" * (cast_expression "(undefined4 *)(param_2 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x24)" * (cast_expression "(undefined4 *)(param_2 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x20)" * (cast_expression "(undefined4 *)(param_3 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x24)" * (cast_expression "(undefined4 *)(param_3 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x24)" ( (binary_expression "param_3 + 0x24" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar5 = uVar5 & 1;" (assignment_expression "uVar5 = uVar5 & 1" identifier = (binary_expression "uVar5 & 1" identifier & number_literal)) ;) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (if_statement "if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" if (parenthesized_expression "((*(byte *)(iVar2 + 0x10) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x10) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x10) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x10) & 2" (pointer_expression "*(byte *)(iVar2 + 0x10)" * (cast_expression "(byte *)(iVar2 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" { (expression_statement "uVar3 = SetImageChannelMask(param_1,2);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,2)" identifier = (call_expression "SetImageChannelMask(param_1,2)" identifier (argument_list "(param_1,2)" ( identifier , number_literal )))) ;) (expression_statement "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);" (assignment_expression "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5)" identifier = (call_expression "LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x28)" * (cast_expression "(undefined4 *)(param_2 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x2c)" * (cast_expression "(undefined4 *)(param_2 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x2c)" ( (binary_expression "param_2 + 0x2c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x28)" * (cast_expression "(undefined4 *)(param_3 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x28)" ( (binary_expression "param_3 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x2c)" * (cast_expression "(undefined4 *)(param_3 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2c)" ( (binary_expression "param_3 + 0x2c" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" identifier = (binary_expression "uVar5 & uVar4" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (if_statement "if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" if (parenthesized_expression "((*(byte *)(iVar2 + 0x1c) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x1c) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x1c) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x1c) & 2" (pointer_expression "*(byte *)(iVar2 + 0x1c)" * (cast_expression "(byte *)(iVar2 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" { (expression_statement "uVar3 = SetImageChannelMask(param_1,4);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,4)" identifier = (call_expression "SetImageChannelMask(param_1,4)" identifier (argument_list "(param_1,4)" ( identifier , number_literal )))) ;) (expression_statement "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);" (assignment_expression "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5)" identifier = (call_expression "LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x30)" * (cast_expression "(undefined4 *)(param_2 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x34)" * (cast_expression "(undefined4 *)(param_2 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x30)" * (cast_expression "(undefined4 *)(param_3 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x34)" * (cast_expression "(undefined4 *)(param_3 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x34)" ( (binary_expression "param_3 + 0x34" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" identifier = (binary_expression "uVar5 & uVar4" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (if_statement "if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" if (parenthesized_expression "(((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2))" ( (binary_expression "((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)" (parenthesized_expression "((*(byte *)(iVar2 + 0x28) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x28) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x28) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x28) & 2" (pointer_expression "*(byte *)(iVar2 + 0x28)" * (cast_expression "(byte *)(iVar2 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(*(int *)(param_1 + 4) == 2)" ( (binary_expression "*(int *)(param_1 + 4) == 2" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" { (expression_statement "uVar3 = SetImageChannelMask(param_1,8);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,8)" identifier = (call_expression "SetImageChannelMask(param_1,8)" identifier (argument_list "(param_1,8)" ( identifier , number_literal )))) ;) (expression_statement "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);" (assignment_expression "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5)" identifier = (call_expression "LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x38)" * (cast_expression "(undefined4 *)(param_2 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x38)" * (cast_expression "(undefined4 *)(param_3 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x3c)" * (cast_expression "(undefined4 *)(param_3 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" identifier = (binary_expression "uVar5 & uVar4" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (if_statement "if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }" if (parenthesized_expression "((*(byte *)(iVar2 + 0x34) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x34) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x34) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x34) & 2" (pointer_expression "*(byte *)(iVar2 + 0x34)" * (cast_expression "(byte *)(iVar2 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x34)" ( (binary_expression "iVar2 + 0x34" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      return uVar5;\n    }" { (return_statement "return uVar5;" return identifier ;) })) (if_statement "if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x294) == 0)" ( (binary_expression "*(int *)(param_1 + 0x294) == 0" (pointer_expression "*(int *)(param_1 + 0x294)" * (cast_expression "(int *)(param_1 + 0x294)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x294)" ( (binary_expression "param_1 + 0x294" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      return uVar5;\n    }" { (return_statement "return uVar5;" return identifier ;) })) (expression_statement "local_20 = SetImageChannelMask(param_1,0x10);" (assignment_expression "local_20 = SetImageChannelMask(param_1,0x10)" identifier = (call_expression "SetImageChannelMask(param_1,0x10)" identifier (argument_list "(param_1,0x10)" ( identifier , number_literal )))) ;) (expression_statement "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);" (assignment_expression "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5)" identifier = (call_expression "LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x40)" * (cast_expression "(undefined4 *)(param_2 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x44)" * (cast_expression "(undefined4 *)(param_2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x40)" * (cast_expression "(undefined4 *)(param_3 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x40)" ( (binary_expression "param_3 + 0x40" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x44)" * (cast_expression "(undefined4 *)(param_3 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x44)" ( (binary_expression "param_3 + 0x44" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (goto_statement "goto LAB_000ca7ff;" goto statement_identifier ;) })) (if_statement "if (uVar4 == 0) {\n    if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;\nLAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  else {\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;\nLAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }" { (if_statement "if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;" if (parenthesized_expression "((*(byte *)(iVar2 + 0x10) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x10) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x10) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x10) & 2" (pointer_expression "*(byte *)(iVar2 + 0x10)" * (cast_expression "(byte *)(iVar2 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000ca750;" goto statement_identifier ;)) (labeled_statement "LAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);" statement_identifier : (expression_statement "uVar3 = SetImageChannelMask(param_1,2);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,2)" identifier = (call_expression "SetImageChannelMask(param_1,2)" identifier (argument_list "(param_1,2)" ( identifier , number_literal )))) ;)) (expression_statement "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);" (assignment_expression "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5)" identifier = (call_expression "LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x28)" * (cast_expression "(undefined4 *)(param_2 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x2c)" * (cast_expression "(undefined4 *)(param_2 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x2c)" ( (binary_expression "param_2 + 0x2c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x28)" * (cast_expression "(undefined4 *)(param_3 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x28)" ( (binary_expression "param_3 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x2c)" * (cast_expression "(undefined4 *)(param_3 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2c)" ( (binary_expression "param_3 + 0x2c" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" identifier = (binary_expression "uVar5 & uVar4" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "bVar1 = *(byte *)(iVar2 + 0x1c);" (assignment_expression "bVar1 = *(byte *)(iVar2 + 0x1c)" identifier = (pointer_expression "*(byte *)(iVar2 + 0x1c)" * (cast_expression "(byte *)(iVar2 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }" else (compound_statement "{\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }" { (expression_statement "uVar3 = SetImageChannelMask(param_1,1);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,1)" identifier = (call_expression "SetImageChannelMask(param_1,1)" identifier (argument_list "(param_1,1)" ( identifier , number_literal )))) ;) (expression_statement "uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);" (assignment_expression "uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5)" identifier = (call_expression "LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x20)" * (cast_expression "(undefined4 *)(param_2 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x24)" * (cast_expression "(undefined4 *)(param_2 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x20)" * (cast_expression "(undefined4 *)(param_3 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x24)" * (cast_expression "(undefined4 *)(param_3 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x24)" ( (binary_expression "param_3 + 0x24" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar5 = uVar5 & 1;" (assignment_expression "uVar5 = uVar5 & 1" identifier = (binary_expression "uVar5 & 1" identifier & number_literal)) ;) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;" if (parenthesized_expression "((*(byte *)(iVar2 + 0x10) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x10) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x10) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x10) & 2" (pointer_expression "*(byte *)(iVar2 + 0x10)" * (cast_expression "(byte *)(iVar2 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000ca9e9;" goto statement_identifier ;)) (labeled_statement "LAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);" statement_identifier : (expression_statement "bVar1 = *(byte *)(iVar2 + 0x1c);" (assignment_expression "bVar1 = *(byte *)(iVar2 + 0x1c)" identifier = (pointer_expression "*(byte *)(iVar2 + 0x1c)" * (cast_expression "(byte *)(iVar2 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) ))))) ;)) }))) (if_statement "if ((bVar1 & 2) != 0) {\n    uVar3 = SetImageChannelMask(param_1,4);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }" if (parenthesized_expression "((bVar1 & 2) != 0)" ( (binary_expression "(bVar1 & 2) != 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar3 = SetImageChannelMask(param_1,4);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }" { (expression_statement "uVar3 = SetImageChannelMask(param_1,4);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,4)" identifier = (call_expression "SetImageChannelMask(param_1,4)" identifier (argument_list "(param_1,4)" ( identifier , number_literal )))) ;) (expression_statement "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);" (assignment_expression "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5)" identifier = (call_expression "LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x30)" * (cast_expression "(undefined4 *)(param_2 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x34)" * (cast_expression "(undefined4 *)(param_2 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x30)" * (cast_expression "(undefined4 *)(param_3 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x34)" * (cast_expression "(undefined4 *)(param_3 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x34)" ( (binary_expression "param_3 + 0x34" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" identifier = (binary_expression "uVar5 & uVar4" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (if_statement "if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n    uVar3 = SetImageChannelMask(param_1,8);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }" if (parenthesized_expression "(((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2))" ( (binary_expression "((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)" (parenthesized_expression "((*(byte *)(iVar2 + 0x28) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x28) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x28) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x28) & 2" (pointer_expression "*(byte *)(iVar2 + 0x28)" * (cast_expression "(byte *)(iVar2 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(*(int *)(param_1 + 4) == 2)" ( (binary_expression "*(int *)(param_1 + 4) == 2" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    uVar3 = SetImageChannelMask(param_1,8);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }" { (expression_statement "uVar3 = SetImageChannelMask(param_1,8);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,8)" identifier = (call_expression "SetImageChannelMask(param_1,8)" identifier (argument_list "(param_1,8)" ( identifier , number_literal )))) ;) (expression_statement "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);" (assignment_expression "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5)" identifier = (call_expression "LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x38)" * (cast_expression "(undefined4 *)(param_2 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x38)" * (cast_expression "(undefined4 *)(param_3 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x3c)" * (cast_expression "(undefined4 *)(param_3 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" identifier = (binary_expression "uVar5 & uVar4" identifier & identifier)) ;) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) })) (if_statement "if (((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0)) {\n    return uVar5;\n  }" if (parenthesized_expression "(((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0))" ( (binary_expression "((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0)" (parenthesized_expression "((*(byte *)(iVar2 + 0x34) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x34) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x34) & 2)" ( (binary_expression "*(byte *)(iVar2 + 0x34) & 2" (pointer_expression "*(byte *)(iVar2 + 0x34)" * (cast_expression "(byte *)(iVar2 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x34)" ( (binary_expression "iVar2 + 0x34" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(*(int *)(param_1 + 0x294) == 0)" ( (binary_expression "*(int *)(param_1 + 0x294) == 0" (pointer_expression "*(int *)(param_1 + 0x294)" * (cast_expression "(int *)(param_1 + 0x294)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x294)" ( (binary_expression "param_1 + 0x294" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    return uVar5;\n  }" { (return_statement "return uVar5;" return identifier ;) })) (expression_statement "local_20 = SetImageChannelMask(param_1,0x10);" (assignment_expression "local_20 = SetImageChannelMask(param_1,0x10)" identifier = (call_expression "SetImageChannelMask(param_1,0x10)" identifier (argument_list "(param_1,0x10)" ( identifier , number_literal )))) ;) (expression_statement "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5);" (assignment_expression "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5)" identifier = (call_expression "LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5)" identifier (argument_list "(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x40)" * (cast_expression "(undefined4 *)(param_2 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x44)" * (cast_expression "(undefined4 *)(param_2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x40)" * (cast_expression "(undefined4 *)(param_3 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x40)" ( (binary_expression "param_3 + 0x40" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_3 + 0x44)" * (cast_expression "(undefined4 *)(param_3 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x44)" ( (binary_expression "param_3 + 0x44" identifier + number_literal) )))) , number_literal , number_literal , identifier )))) ;) (labeled_statement "LAB_000ca7ff:\n  SetImageChannelMask(param_1,local_20);" statement_identifier : (expression_statement "SetImageChannelMask(param_1,local_20);" (call_expression "SetImageChannelMask(param_1,local_20)" identifier (argument_list "(param_1,local_20)" ( identifier , identifier ))) ;)) (return_statement "return uVar5 & uVar4;" return (binary_expression "uVar5 & uVar4" identifier & identifier) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (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 (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 (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) ))) )) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (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 { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT , IDENT )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT , IDENT )))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) (return_statement return (binary_expression IDENT & IDENT) ;) })))
(function_definition "uint LevelImageColors(int param_1,int param_2,int param_3,int param_4,undefined4 param_5)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  uint uVar5;\n  undefined4 local_20;\n  \n  if (param_1 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\n  }\n  if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }\n  if (*(int *)(param_1 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);\n  }\n  if (((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))) {\n    SetImageColorspace(param_1,0x17,param_5);\n  }\n  iVar2 = *(int *)(param_1 + 0x2a8);\n  uVar5 = 1;\n  uVar4 = *(uint *)(iVar2 + 4) & 2;\n  if (param_4 != 0) {\n    if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }\n    if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }\n    local_20 = SetImageChannelMask(param_1,0x10);\n    uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);\n    goto LAB_000ca7ff;\n  }\n  if (uVar4 == 0) {\n    if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;\nLAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  else {\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  if ((bVar1 & 2) != 0) {\n    uVar3 = SetImageChannelMask(param_1,4);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }\n  if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n    uVar3 = SetImageChannelMask(param_1,8);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }\n  if (((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0)) {\n    return uVar5;\n  }\n  local_20 = SetImageChannelMask(param_1,0x10);\n  uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5);\nLAB_000ca7ff:\n  SetImageChannelMask(param_1,local_20);\n  return uVar5 & uVar4;\n}" (type_identifier "uint") (function_declarator "LevelImageColors(int param_1,int param_2,int param_3,int param_4,undefined4 param_5)" (identifier "LevelImageColors") (parameter_list "(int param_1,int param_2,int param_3,int param_4,undefined4 param_5)" (( "(") (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")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  uint uVar5;\n  undefined4 local_20;\n  \n  if (param_1 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\n  }\n  if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }\n  if (*(int *)(param_1 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);\n  }\n  if (((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))) {\n    SetImageColorspace(param_1,0x17,param_5);\n  }\n  iVar2 = *(int *)(param_1 + 0x2a8);\n  uVar5 = 1;\n  uVar4 = *(uint *)(iVar2 + 4) & 2;\n  if (param_4 != 0) {\n    if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }\n    if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }\n    local_20 = SetImageChannelMask(param_1,0x10);\n    uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);\n    goto LAB_000ca7ff;\n  }\n  if (uVar4 == 0) {\n    if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;\nLAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  else {\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  if ((bVar1 & 2) != 0) {\n    uVar3 = SetImageChannelMask(param_1,4);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }\n  if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n    uVar3 = SetImageChannelMask(param_1,8);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }\n  if (((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0)) {\n    return uVar5;\n  }\n  local_20 = SetImageChannelMask(param_1,0x10);\n  uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5);\nLAB_000ca7ff:\n  SetImageChannelMask(param_1,local_20);\n  return uVar5 & uVar4;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (if_statement "if (param_1 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\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 != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");\n  }" ({ "{") (expression_statement "__assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");" (call_expression "__assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors")" (identifier "__assert_fail") (argument_list "("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors")" (( "(") (string_literal ""image != (Image *) NULL"" (" """) (string_content "image != (Image *) NULL") (" """)) (, ",") (string_literal ""MagickCore/enhance.c"" (" """) (string_content "MagickCore/enhance.c") (" """)) (, ",") (number_literal "0xc92") (, ",") (string_literal ""LevelImageColors"" (" """) (string_content "LevelImageColors") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x3344) != -0x54535255)" (( "(") (binary_expression "*(int *)(param_1 + 0x3344) != -0x54535255" (pointer_expression "*(int *)(param_1 + 0x3344)" (* "*") (cast_expression "(int *)(param_1 + 0x3344)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3344)" (( "(") (binary_expression "param_1 + 0x3344" (identifier "param_1") (+ "+") (number_literal "0x3344")) () ")")))) (!= "!=") (number_literal "-0x54535255")) () ")")) (compound_statement "{\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");\n  }" ({ "{") (expression_statement "__assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors")" (identifier "__assert_fail") (argument_list "("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,\n                  "LevelImageColors")" (( "(") (string_literal ""image->signature == MagickCoreSignature"" (" """) (string_content "image->signature == MagickCoreSignature") (" """)) (, ",") (string_literal ""MagickCore/enhance.c"" (" """) (string_content "MagickCore/enhance.c") (" """)) (, ",") (number_literal "0xc93") (, ",") (string_literal ""LevelImageColors"" (" """) (string_content "LevelImageColors") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x3328) != 0) {\n    LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x3328) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x3328) != 0" (pointer_expression "*(int *)(param_1 + 0x3328)" (* "*") (cast_expression "(int *)(param_1 + 0x3328)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3328)" (( "(") (binary_expression "param_1 + 0x3328" (identifier "param_1") (+ "+") (number_literal "0x3328")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);\n  }" ({ "{") (expression_statement "LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318);" (call_expression "LogMagickEvent(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318)" (identifier "LogMagickEvent") (argument_list "(0x8000,"MagickCore/enhance.c","LevelImageColors",0xc95,&DAT_002f75ae,\n                   param_1 + 0x318)" (( "(") (number_literal "0x8000") (, ",") (string_literal ""MagickCore/enhance.c"" (" """) (string_content "MagickCore/enhance.c") (" """)) (, ",") (string_literal ""LevelImageColors"" (" """) (string_content "LevelImageColors") (" """)) (, ",") (number_literal "0xc95") (, ",") (pointer_expression "&DAT_002f75ae" (& "&") (identifier "DAT_002f75ae")) (, ",") (binary_expression "param_1 + 0x318" (identifier "param_1") (+ "+") (number_literal "0x318")) () ")"))) (; ";")) (} "}"))) (if_statement "if (((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))) {\n    SetImageColorspace(param_1,0x17,param_5);\n  }" (if "if") (parenthesized_expression "(((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21))))))" (( "(") (binary_expression "((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&\n     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))" (parenthesized_expression "((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21))" (( "(") (binary_expression "(*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)" (parenthesized_expression "(*(int *)(param_1 + 4) == 3)" (( "(") (binary_expression "*(int *)(param_1 + 4) == 3" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "3")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(param_1 + 4) == 0x21)" (( "(") (binary_expression "*(int *)(param_1 + 4) == 0x21" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "0x21")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))" (( "(") (parenthesized_expression "((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21))))" (( "(") (binary_expression "(*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||\n      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))" (parenthesized_expression "(*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3))" (( "(") (binary_expression "*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)" (binary_expression "*(int *)(param_2 + 4) != 0x21" (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "0x21")) (&& "&&") (parenthesized_expression "(*(int *)(param_2 + 4) != 3)" (( "(") (binary_expression "*(int *)(param_2 + 4) != 3" (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "3")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))" (( "(") (parenthesized_expression "(*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21))" (( "(") (binary_expression "*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)" (binary_expression "*(int *)(param_3 + 4) != 3" (pointer_expression "*(int *)(param_3 + 4)" (* "*") (cast_expression "(int *)(param_3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "3")) (&& "&&") (parenthesized_expression "(*(int *)(param_3 + 4) != 0x21)" (( "(") (binary_expression "*(int *)(param_3 + 4) != 0x21" (pointer_expression "*(int *)(param_3 + 4)" (* "*") (cast_expression "(int *)(param_3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "0x21")) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    SetImageColorspace(param_1,0x17,param_5);\n  }" ({ "{") (expression_statement "SetImageColorspace(param_1,0x17,param_5);" (call_expression "SetImageColorspace(param_1,0x17,param_5)" (identifier "SetImageColorspace") (argument_list "(param_1,0x17,param_5)" (( "(") (identifier "param_1") (, ",") (number_literal "0x17") (, ",") (identifier "param_5") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" (identifier "uVar5") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar4 = *(uint *)(iVar2 + 4) & 2;" (assignment_expression "uVar4 = *(uint *)(iVar2 + 4) & 2" (identifier "uVar4") (= "=") (binary_expression "*(uint *)(iVar2 + 4) & 2" (pointer_expression "*(uint *)(iVar2 + 4)" (* "*") (cast_expression "(uint *)(iVar2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "2"))) (; ";")) (if_statement "if (param_4 != 0) {\n    if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }\n    if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }\n    local_20 = SetImageChannelMask(param_1,0x10);\n    uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);\n    goto LAB_000ca7ff;\n  }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }\n    if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }\n    if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }\n    local_20 = SetImageChannelMask(param_1,0x10);\n    uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);\n    goto LAB_000ca7ff;\n  }" ({ "{") (if_statement "if (uVar4 != 0) {\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" (if "if") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar3 = SetImageChannelMask(param_1,1);\n      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & 1;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" ({ "{") (expression_statement "uVar3 = SetImageChannelMask(param_1,1);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,1)" (identifier "uVar3") (= "=") (call_expression "SetImageChannelMask(param_1,1)" (identifier "SetImageChannelMask") (argument_list "(param_1,1)" (( "(") (identifier "param_1") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5);" (assignment_expression "uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5)" (identifier "uVar5") (= "=") (call_expression "LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5)" (identifier "LevelizeImage") (argument_list "(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,\n                            0x3ff00000,param_5)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x20)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x24)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x24)" (( "(") (binary_expression "param_2 + 0x24" (identifier "param_2") (+ "+") (number_literal "0x24")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x20)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x20)" (( "(") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x24)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x24)" (( "(") (binary_expression "param_3 + 0x24" (identifier "param_3") (+ "+") (number_literal "0x24")) () ")")))) (, ",") (number_literal "0") (, ",") (number_literal "0x3ff00000") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "uVar5 = uVar5 & 1;" (assignment_expression "uVar5 = uVar5 & 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 & 1" (identifier "uVar5") (& "&") (number_literal "1"))) (; ";")) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" (identifier "SetImageChannelMask") (argument_list "(param_1,uVar3)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" (if "if") (parenthesized_expression "((*(byte *)(iVar2 + 0x10) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(iVar2 + 0x10) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x10) & 2)" (( "(") (binary_expression "*(byte *)(iVar2 + 0x10) & 2" (pointer_expression "*(byte *)(iVar2 + 0x10)" (* "*") (cast_expression "(byte *)(iVar2 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar3 = SetImageChannelMask(param_1,2);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" ({ "{") (expression_statement "uVar3 = SetImageChannelMask(param_1,2);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,2)" (identifier "uVar3") (= "=") (call_expression "SetImageChannelMask(param_1,2)" (identifier "SetImageChannelMask") (argument_list "(param_1,2)" (( "(") (identifier "param_1") (, ",") (number_literal "2") () ")")))) (; ";")) (expression_statement "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5);" (assignment_expression "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5)" (identifier "uVar4") (= "=") (call_expression "LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5)" (identifier "LevelizeImage") (argument_list "(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,\n                            0x3ff00000,param_5)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x28)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x2c)" (( "(") (binary_expression "param_2 + 0x2c" (identifier "param_2") (+ "+") (number_literal "0x2c")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x28)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x28)" (( "(") (binary_expression "param_3 + 0x28" (identifier "param_3") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x2c)" (( "(") (binary_expression "param_3 + 0x2c" (identifier "param_3") (+ "+") (number_literal "0x2c")) () ")")))) (, ",") (number_literal "0") (, ",") (number_literal "0x3ff00000") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" (identifier "uVar5") (= "=") (binary_expression "uVar5 & uVar4" (identifier "uVar5") (& "&") (identifier "uVar4"))) (; ";")) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" (identifier "SetImageChannelMask") (argument_list "(param_1,uVar3)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" (if "if") (parenthesized_expression "((*(byte *)(iVar2 + 0x1c) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(iVar2 + 0x1c) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x1c) & 2)" (( "(") (binary_expression "*(byte *)(iVar2 + 0x1c) & 2" (pointer_expression "*(byte *)(iVar2 + 0x1c)" (* "*") (cast_expression "(byte *)(iVar2 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x1c)" (( "(") (binary_expression "iVar2 + 0x1c" (identifier "iVar2") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar3 = SetImageChannelMask(param_1,4);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" ({ "{") (expression_statement "uVar3 = SetImageChannelMask(param_1,4);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,4)" (identifier "uVar3") (= "=") (call_expression "SetImageChannelMask(param_1,4)" (identifier "SetImageChannelMask") (argument_list "(param_1,4)" (( "(") (identifier "param_1") (, ",") (number_literal "4") () ")")))) (; ";")) (expression_statement "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5);" (assignment_expression "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5)" (identifier "uVar4") (= "=") (call_expression "LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5)" (identifier "LevelizeImage") (argument_list "(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,\n                            0x3ff00000,param_5)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x30)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x34)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x30)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x30)" (( "(") (binary_expression "param_3 + 0x30" (identifier "param_3") (+ "+") (number_literal "0x30")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x34)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x34)" (( "(") (binary_expression "param_3 + 0x34" (identifier "param_3") (+ "+") (number_literal "0x34")) () ")")))) (, ",") (number_literal "0") (, ",") (number_literal "0x3ff00000") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" (identifier "uVar5") (= "=") (binary_expression "uVar5 & uVar4" (identifier "uVar5") (& "&") (identifier "uVar4"))) (; ";")) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" (identifier "SetImageChannelMask") (argument_list "(param_1,uVar3)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" (if "if") (parenthesized_expression "(((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2))" (( "(") (binary_expression "((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)" (parenthesized_expression "((*(byte *)(iVar2 + 0x28) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(iVar2 + 0x28) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x28) & 2)" (( "(") (binary_expression "*(byte *)(iVar2 + 0x28) & 2" (pointer_expression "*(byte *)(iVar2 + 0x28)" (* "*") (cast_expression "(byte *)(iVar2 + 0x28)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x28)" (( "(") (binary_expression "iVar2 + 0x28" (identifier "iVar2") (+ "+") (number_literal "0x28")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_1 + 4) == 2)" (( "(") (binary_expression "*(int *)(param_1 + 4) == 2" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "2")) () ")"))) () ")")) (compound_statement "{\n      uVar3 = SetImageChannelMask(param_1,8);\n      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);\n      uVar5 = uVar5 & uVar4;\n      SetImageChannelMask(param_1,uVar3);\n      iVar2 = *(int *)(param_1 + 0x2a8);\n    }" ({ "{") (expression_statement "uVar3 = SetImageChannelMask(param_1,8);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,8)" (identifier "uVar3") (= "=") (call_expression "SetImageChannelMask(param_1,8)" (identifier "SetImageChannelMask") (argument_list "(param_1,8)" (( "(") (identifier "param_1") (, ",") (number_literal "8") () ")")))) (; ";")) (expression_statement "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5);" (assignment_expression "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5)" (identifier "uVar4") (= "=") (call_expression "LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5)" (identifier "LevelizeImage") (argument_list "(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,\n                            0x3ff00000,param_5)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x38)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x38)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x38)" (( "(") (binary_expression "param_3 + 0x38" (identifier "param_3") (+ "+") (number_literal "0x38")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x3c)" (( "(") (binary_expression "param_3 + 0x3c" (identifier "param_3") (+ "+") (number_literal "0x3c")) () ")")))) (, ",") (number_literal "0") (, ",") (number_literal "0x3ff00000") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" (identifier "uVar5") (= "=") (binary_expression "uVar5 & uVar4" (identifier "uVar5") (& "&") (identifier "uVar4"))) (; ";")) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" (identifier "SetImageChannelMask") (argument_list "(param_1,uVar3)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {\n      return uVar5;\n    }" (if "if") (parenthesized_expression "((*(byte *)(iVar2 + 0x34) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(iVar2 + 0x34) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x34) & 2)" (( "(") (binary_expression "*(byte *)(iVar2 + 0x34) & 2" (pointer_expression "*(byte *)(iVar2 + 0x34)" (* "*") (cast_expression "(byte *)(iVar2 + 0x34)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x34)" (( "(") (binary_expression "iVar2 + 0x34" (identifier "iVar2") (+ "+") (number_literal "0x34")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return uVar5;\n    }" ({ "{") (return_statement "return uVar5;" (return "return") (identifier "uVar5") (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x294) == 0) {\n      return uVar5;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x294) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x294) == 0" (pointer_expression "*(int *)(param_1 + 0x294)" (* "*") (cast_expression "(int *)(param_1 + 0x294)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x294)" (( "(") (binary_expression "param_1 + 0x294" (identifier "param_1") (+ "+") (number_literal "0x294")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return uVar5;\n    }" ({ "{") (return_statement "return uVar5;" (return "return") (identifier "uVar5") (; ";")) (} "}"))) (expression_statement "local_20 = SetImageChannelMask(param_1,0x10);" (assignment_expression "local_20 = SetImageChannelMask(param_1,0x10)" (identifier "local_20") (= "=") (call_expression "SetImageChannelMask(param_1,0x10)" (identifier "SetImageChannelMask") (argument_list "(param_1,0x10)" (( "(") (identifier "param_1") (, ",") (number_literal "0x10") () ")")))) (; ";")) (expression_statement "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5);" (assignment_expression "uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5)" (identifier "uVar4") (= "=") (call_expression "LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5)" (identifier "LevelizeImage") (argument_list "(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,\n                          0x3ff00000,param_5)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x40)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x40)" (( "(") (binary_expression "param_2 + 0x40" (identifier "param_2") (+ "+") (number_literal "0x40")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x44)" (( "(") (binary_expression "param_2 + 0x44" (identifier "param_2") (+ "+") (number_literal "0x44")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x40)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x40)" (( "(") (binary_expression "param_3 + 0x40" (identifier "param_3") (+ "+") (number_literal "0x40")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x44)" (( "(") (binary_expression "param_3 + 0x44" (identifier "param_3") (+ "+") (number_literal "0x44")) () ")")))) (, ",") (number_literal "0") (, ",") (number_literal "0x3ff00000") (, ",") (identifier "param_5") () ")")))) (; ";")) (goto_statement "goto LAB_000ca7ff;" (goto "goto") (statement_identifier "LAB_000ca7ff") (; ";")) (} "}"))) (if_statement "if (uVar4 == 0) {\n    if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;\nLAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }\n  else {\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;\nLAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }" ({ "{") (if_statement "if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;" (if "if") (parenthesized_expression "((*(byte *)(iVar2 + 0x10) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(iVar2 + 0x10) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x10) & 2)" (( "(") (binary_expression "*(byte *)(iVar2 + 0x10) & 2" (pointer_expression "*(byte *)(iVar2 + 0x10)" (* "*") (cast_expression "(byte *)(iVar2 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000ca750;" (goto "goto") (statement_identifier "LAB_000ca750") (; ";"))) (labeled_statement "LAB_000ca9e9:\n    uVar3 = SetImageChannelMask(param_1,2);" (statement_identifier "LAB_000ca9e9") (: ":") (expression_statement "uVar3 = SetImageChannelMask(param_1,2);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,2)" (identifier "uVar3") (= "=") (call_expression "SetImageChannelMask(param_1,2)" (identifier "SetImageChannelMask") (argument_list "(param_1,2)" (( "(") (identifier "param_1") (, ",") (number_literal "2") () ")")))) (; ";"))) (expression_statement "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5);" (assignment_expression "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5)" (identifier "uVar4") (= "=") (call_expression "LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5)" (identifier "LevelImage") (argument_list "(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),\n                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,\n                       param_5)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x28)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x2c)" (( "(") (binary_expression "param_2 + 0x2c" (identifier "param_2") (+ "+") (number_literal "0x2c")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x28)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x28)" (( "(") (binary_expression "param_3 + 0x28" (identifier "param_3") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x2c)" (( "(") (binary_expression "param_3 + 0x2c" (identifier "param_3") (+ "+") (number_literal "0x2c")) () ")")))) (, ",") (number_literal "0") (, ",") (number_literal "0x3ff00000") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" (identifier "uVar5") (= "=") (binary_expression "uVar5 & uVar4" (identifier "uVar5") (& "&") (identifier "uVar4"))) (; ";")) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" (identifier "SetImageChannelMask") (argument_list "(param_1,uVar3)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "bVar1 = *(byte *)(iVar2 + 0x1c);" (assignment_expression "bVar1 = *(byte *)(iVar2 + 0x1c)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(iVar2 + 0x1c)" (* "*") (cast_expression "(byte *)(iVar2 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x1c)" (( "(") (binary_expression "iVar2 + 0x1c" (identifier "iVar2") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }" (else "else") (compound_statement "{\n    uVar3 = SetImageChannelMask(param_1,1);\n    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & 1;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;\nLAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);\n  }" ({ "{") (expression_statement "uVar3 = SetImageChannelMask(param_1,1);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,1)" (identifier "uVar3") (= "=") (call_expression "SetImageChannelMask(param_1,1)" (identifier "SetImageChannelMask") (argument_list "(param_1,1)" (( "(") (identifier "param_1") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5);" (assignment_expression "uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5)" (identifier "uVar5") (= "=") (call_expression "LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5)" (identifier "LevelImage") (argument_list "(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),\n                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,\n                       param_5)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x20)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x24)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x24)" (( "(") (binary_expression "param_2 + 0x24" (identifier "param_2") (+ "+") (number_literal "0x24")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x20)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x20)" (( "(") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x24)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x24)" (( "(") (binary_expression "param_3 + 0x24" (identifier "param_3") (+ "+") (number_literal "0x24")) () ")")))) (, ",") (number_literal "0") (, ",") (number_literal "0x3ff00000") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "uVar5 = uVar5 & 1;" (assignment_expression "uVar5 = uVar5 & 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 & 1" (identifier "uVar5") (& "&") (number_literal "1"))) (; ";")) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" (identifier "SetImageChannelMask") (argument_list "(param_1,uVar3)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;" (if "if") (parenthesized_expression "((*(byte *)(iVar2 + 0x10) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(iVar2 + 0x10) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x10) & 2)" (( "(") (binary_expression "*(byte *)(iVar2 + 0x10) & 2" (pointer_expression "*(byte *)(iVar2 + 0x10)" (* "*") (cast_expression "(byte *)(iVar2 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000ca9e9;" (goto "goto") (statement_identifier "LAB_000ca9e9") (; ";"))) (labeled_statement "LAB_000ca750:\n    bVar1 = *(byte *)(iVar2 + 0x1c);" (statement_identifier "LAB_000ca750") (: ":") (expression_statement "bVar1 = *(byte *)(iVar2 + 0x1c);" (assignment_expression "bVar1 = *(byte *)(iVar2 + 0x1c)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(iVar2 + 0x1c)" (* "*") (cast_expression "(byte *)(iVar2 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x1c)" (( "(") (binary_expression "iVar2 + 0x1c" (identifier "iVar2") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";"))) (} "}")))) (if_statement "if ((bVar1 & 2) != 0) {\n    uVar3 = SetImageChannelMask(param_1,4);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }" (if "if") (parenthesized_expression "((bVar1 & 2) != 0)" (( "(") (binary_expression "(bVar1 & 2) != 0" (parenthesized_expression "(bVar1 & 2)" (( "(") (binary_expression "bVar1 & 2" (identifier "bVar1") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar3 = SetImageChannelMask(param_1,4);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }" ({ "{") (expression_statement "uVar3 = SetImageChannelMask(param_1,4);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,4)" (identifier "uVar3") (= "=") (call_expression "SetImageChannelMask(param_1,4)" (identifier "SetImageChannelMask") (argument_list "(param_1,4)" (( "(") (identifier "param_1") (, ",") (number_literal "4") () ")")))) (; ";")) (expression_statement "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5);" (assignment_expression "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5)" (identifier "uVar4") (= "=") (call_expression "LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5)" (identifier "LevelImage") (argument_list "(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),\n                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,\n                       param_5)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x30)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x34)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x30)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x30)" (( "(") (binary_expression "param_3 + 0x30" (identifier "param_3") (+ "+") (number_literal "0x30")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x34)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x34)" (( "(") (binary_expression "param_3 + 0x34" (identifier "param_3") (+ "+") (number_literal "0x34")) () ")")))) (, ",") (number_literal "0") (, ",") (number_literal "0x3ff00000") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" (identifier "uVar5") (= "=") (binary_expression "uVar5 & uVar4" (identifier "uVar5") (& "&") (identifier "uVar4"))) (; ";")) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" (identifier "SetImageChannelMask") (argument_list "(param_1,uVar3)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {\n    uVar3 = SetImageChannelMask(param_1,8);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }" (if "if") (parenthesized_expression "(((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2))" (( "(") (binary_expression "((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)" (parenthesized_expression "((*(byte *)(iVar2 + 0x28) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(iVar2 + 0x28) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x28) & 2)" (( "(") (binary_expression "*(byte *)(iVar2 + 0x28) & 2" (pointer_expression "*(byte *)(iVar2 + 0x28)" (* "*") (cast_expression "(byte *)(iVar2 + 0x28)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x28)" (( "(") (binary_expression "iVar2 + 0x28" (identifier "iVar2") (+ "+") (number_literal "0x28")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_1 + 4) == 2)" (( "(") (binary_expression "*(int *)(param_1 + 4) == 2" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "2")) () ")"))) () ")")) (compound_statement "{\n    uVar3 = SetImageChannelMask(param_1,8);\n    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);\n    uVar5 = uVar5 & uVar4;\n    SetImageChannelMask(param_1,uVar3);\n    iVar2 = *(int *)(param_1 + 0x2a8);\n  }" ({ "{") (expression_statement "uVar3 = SetImageChannelMask(param_1,8);" (assignment_expression "uVar3 = SetImageChannelMask(param_1,8)" (identifier "uVar3") (= "=") (call_expression "SetImageChannelMask(param_1,8)" (identifier "SetImageChannelMask") (argument_list "(param_1,8)" (( "(") (identifier "param_1") (, ",") (number_literal "8") () ")")))) (; ";")) (expression_statement "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5);" (assignment_expression "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5)" (identifier "uVar4") (= "=") (call_expression "LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5)" (identifier "LevelImage") (argument_list "(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),\n                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,\n                       param_5)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x38)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x38)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x38)" (( "(") (binary_expression "param_3 + 0x38" (identifier "param_3") (+ "+") (number_literal "0x38")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x3c)" (( "(") (binary_expression "param_3 + 0x3c" (identifier "param_3") (+ "+") (number_literal "0x3c")) () ")")))) (, ",") (number_literal "0") (, ",") (number_literal "0x3ff00000") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "uVar5 = uVar5 & uVar4;" (assignment_expression "uVar5 = uVar5 & uVar4" (identifier "uVar5") (= "=") (binary_expression "uVar5 & uVar4" (identifier "uVar5") (& "&") (identifier "uVar4"))) (; ";")) (expression_statement "SetImageChannelMask(param_1,uVar3);" (call_expression "SetImageChannelMask(param_1,uVar3)" (identifier "SetImageChannelMask") (argument_list "(param_1,uVar3)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x2a8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0)) {\n    return uVar5;\n  }" (if "if") (parenthesized_expression "(((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0))" (( "(") (binary_expression "((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0)" (parenthesized_expression "((*(byte *)(iVar2 + 0x34) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(iVar2 + 0x34) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x34) & 2)" (( "(") (binary_expression "*(byte *)(iVar2 + 0x34) & 2" (pointer_expression "*(byte *)(iVar2 + 0x34)" (* "*") (cast_expression "(byte *)(iVar2 + 0x34)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x34)" (( "(") (binary_expression "iVar2 + 0x34" (identifier "iVar2") (+ "+") (number_literal "0x34")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(param_1 + 0x294) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x294) == 0" (pointer_expression "*(int *)(param_1 + 0x294)" (* "*") (cast_expression "(int *)(param_1 + 0x294)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x294)" (( "(") (binary_expression "param_1 + 0x294" (identifier "param_1") (+ "+") (number_literal "0x294")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    return uVar5;\n  }" ({ "{") (return_statement "return uVar5;" (return "return") (identifier "uVar5") (; ";")) (} "}"))) (expression_statement "local_20 = SetImageChannelMask(param_1,0x10);" (assignment_expression "local_20 = SetImageChannelMask(param_1,0x10)" (identifier "local_20") (= "=") (call_expression "SetImageChannelMask(param_1,0x10)" (identifier "SetImageChannelMask") (argument_list "(param_1,0x10)" (( "(") (identifier "param_1") (, ",") (number_literal "0x10") () ")")))) (; ";")) (expression_statement "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5);" (assignment_expression "uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5)" (identifier "uVar4") (= "=") (call_expression "LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5)" (identifier "LevelImage") (argument_list "(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),\n                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,\n                     param_5)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x40)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x40)" (( "(") (binary_expression "param_2 + 0x40" (identifier "param_2") (+ "+") (number_literal "0x40")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x44)" (( "(") (binary_expression "param_2 + 0x44" (identifier "param_2") (+ "+") (number_literal "0x44")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x40)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x40)" (( "(") (binary_expression "param_3 + 0x40" (identifier "param_3") (+ "+") (number_literal "0x40")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x44)" (( "(") (binary_expression "param_3 + 0x44" (identifier "param_3") (+ "+") (number_literal "0x44")) () ")")))) (, ",") (number_literal "0") (, ",") (number_literal "0x3ff00000") (, ",") (identifier "param_5") () ")")))) (; ";")) (labeled_statement "LAB_000ca7ff:\n  SetImageChannelMask(param_1,local_20);" (statement_identifier "LAB_000ca7ff") (: ":") (expression_statement "SetImageChannelMask(param_1,local_20);" (call_expression "SetImageChannelMask(param_1,local_20)" (identifier "SetImageChannelMask") (argument_list "(param_1,local_20)" (( "(") (identifier "param_1") (, ",") (identifier "local_20") () ")"))) (; ";"))) (return_statement "return uVar5 & uVar4;" (return "return") (binary_expression "uVar5 & uVar4" (identifier "uVar5") (& "&") (identifier "uVar4")) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": 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 */
/* WARNING: Enum "LogEventType": Some values do not have unique names */

type_1
function_1(type_2 *var_1,type_3 *black_color,type_3 *white_color,type_1 var_9
                ,type_4 *exception)

{
  type_5 var_19;
  type_6 *pPVar2;
  type_1 var_16;
  type_7 CVar4;
  type_8 var_10;
  type_1 var_14;
  type_7 local_20;
  
  if (var_1 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"LevelImageColors");
  }
  if (var_1->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    var_2("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,
                  "LevelImageColors");
  }
  if (var_1->debug != var_3) {
    var_4(TraceEvent,"MagickCore/enhance.c","LevelImageColors",0xc95,"%s",var_1->filename);
  }
  if (((var_1->colorspace == var_5) || (var_1->colorspace == var_6)) &&
     (((black_color->colorspace != var_6 &&
       (black_color->colorspace != var_5)) ||
      ((white_color->colorspace != var_5 &&
       (white_color->colorspace != var_6)))))) {
    var_7(var_1,sRGBColorspace,exception);
  }
  pPVar2 = var_1->channel_map;
  var_14 = var_15;
  var_10 = pPVar2->traits & var_8;
  if (var_9 != var_3) {
    if (var_10 != var_11) {
      CVar4 = var_12(var_1,CyanChannel);
      var_14 = var_13(var_1,black_color->red,white_color->red,1.0,exception);
      var_14 = var_14 & var_15;
      var_12(var_1,CVar4);
      pPVar2 = var_1->channel_map;
    }
    if ((pPVar2[1].traits & var_8) != var_11) {
      CVar4 = var_12(var_1,GreenChannel);
      var_16 = var_13(var_1,black_color->green,white_color->green,1.0,exception);
      var_14 = var_14 & var_16;
      var_12(var_1,CVar4);
      pPVar2 = var_1->channel_map;
    }
    if ((pPVar2[2].traits & var_8) != var_11) {
      CVar4 = var_12(var_1,BlueChannel);
      var_16 = var_13(var_1,black_color->blue,white_color->blue,1.0,exception);
      var_14 = var_14 & var_16;
      var_12(var_1,CVar4);
      pPVar2 = var_1->channel_map;
    }
    if (((pPVar2[3].traits & var_8) != var_11) &&
       (var_1->colorspace == var_17)) {
      CVar4 = var_12(var_1,BlackChannel);
      var_16 = var_13(var_1,black_color->black,white_color->black,1.0,exception);
      var_14 = var_14 & var_16;
      var_12(var_1,CVar4);
      pPVar2 = var_1->channel_map;
    }
    if ((pPVar2[4].traits & var_8) == var_11) {
      return var_14;
    }
    if (var_1->alpha_trait == var_11) {
      return var_14;
    }
    local_20 = var_12(var_1,AlphaChannel);
    var_16 = var_13(var_1,black_color->alpha,white_color->alpha,1.0,exception);
    goto LAB_000ca7ff;
  }
  if (var_10 == var_11) {
    if ((pPVar2[1].traits & var_8) == var_11) goto LAB_000ca750;
LAB_000ca9e9:
    CVar4 = var_12(var_1,GreenChannel);
    var_16 = var_18(var_1,black_color->green,white_color->green,1.0,exception);
    var_14 = var_14 & var_16;
    var_12(var_1,CVar4);
    pPVar2 = var_1->channel_map;
    var_19 = (type_5)pPVar2[2].traits;
  }
  else {
    CVar4 = var_12(var_1,CyanChannel);
    var_14 = var_18(var_1,black_color->red,white_color->red,1.0,exception);
    var_14 = var_14 & var_15;
    var_12(var_1,CVar4);
    pPVar2 = var_1->channel_map;
    if ((pPVar2[1].traits & var_8) != var_11) goto LAB_000ca9e9;
LAB_000ca750:
    var_19 = (type_5)pPVar2[2].traits;
  }
  if ((var_19 & var_8) != var_11) {
    CVar4 = var_12(var_1,BlueChannel);
    var_16 = var_18(var_1,black_color->blue,white_color->blue,1.0,exception);
    var_14 = var_14 & var_16;
    var_12(var_1,CVar4);
    pPVar2 = var_1->channel_map;
  }
  if (((pPVar2[3].traits & var_8) != var_11) &&
     (var_1->colorspace == var_17)) {
    CVar4 = var_12(var_1,BlackChannel);
    var_16 = var_18(var_1,black_color->black,white_color->black,1.0,exception);
    var_14 = var_14 & var_16;
    var_12(var_1,CVar4);
    pPVar2 = var_1->channel_map;
  }
  if (((pPVar2[4].traits & var_8) == var_11) ||
     (var_1->alpha_trait == var_11)) {
    return var_14;
  }
  local_20 = var_12(var_1,AlphaChannel);
  var_16 = var_18(var_1,black_color->alpha,white_color->alpha,1.0,exception);
LAB_000ca7ff:
  var_12(var_1,local_20);
  return var_14 & var_16;
}


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

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

uint MASKED(int param_1,int param_2,int param_3,int param_4,undefined4 param_5)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  uint uVar5;
  undefined4 local_20;
  
  if (param_1 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image != (Image *) NULL","MagickCore/enhance.c",0xc92,"MASKED");
  }
  if (*(int *)(param_1 + 0x3344) != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image->signature == MagickCoreSignature","MagickCore/enhance.c",0xc93,
                  "MASKED");
  }
  if (*(int *)(param_1 + 0x3328) != 0) {
    LogMagickEvent(0x8000,"MagickCore/enhance.c","MASKED",0xc95,&DAT_002f75ae,
                   param_1 + 0x318);
  }
  if (((*(int *)(param_1 + 4) == 3) || (*(int *)(param_1 + 4) == 0x21)) &&
     (((*(int *)(param_2 + 4) != 0x21 && (*(int *)(param_2 + 4) != 3)) ||
      ((*(int *)(param_3 + 4) != 3 && (*(int *)(param_3 + 4) != 0x21)))))) {
    SetImageColorspace(param_1,0x17,param_5);
  }
  iVar2 = *(int *)(param_1 + 0x2a8);
  uVar5 = 1;
  uVar4 = *(uint *)(iVar2 + 4) & 2;
  if (param_4 != 0) {
    if (uVar4 != 0) {
      uVar3 = SetImageChannelMask(param_1,1);
      uVar5 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),
                            *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,
                            0x3ff00000,param_5);
      uVar5 = uVar5 & 1;
      SetImageChannelMask(param_1,uVar3);
      iVar2 = *(int *)(param_1 + 0x2a8);
    }
    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) {
      uVar3 = SetImageChannelMask(param_1,2);
      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),
                            *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,
                            0x3ff00000,param_5);
      uVar5 = uVar5 & uVar4;
      SetImageChannelMask(param_1,uVar3);
      iVar2 = *(int *)(param_1 + 0x2a8);
    }
    if ((*(byte *)(iVar2 + 0x1c) & 2) != 0) {
      uVar3 = SetImageChannelMask(param_1,4);
      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),
                            *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,
                            0x3ff00000,param_5);
      uVar5 = uVar5 & uVar4;
      SetImageChannelMask(param_1,uVar3);
      iVar2 = *(int *)(param_1 + 0x2a8);
    }
    if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {
      uVar3 = SetImageChannelMask(param_1,8);
      uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),
                            *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,
                            0x3ff00000,param_5);
      uVar5 = uVar5 & uVar4;
      SetImageChannelMask(param_1,uVar3);
      iVar2 = *(int *)(param_1 + 0x2a8);
    }
    if ((*(byte *)(iVar2 + 0x34) & 2) == 0) {
      return uVar5;
    }
    if (*(int *)(param_1 + 0x294) == 0) {
      return uVar5;
    }
    local_20 = SetImageChannelMask(param_1,0x10);
    uVar4 = LevelizeImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),
                          *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,
                          0x3ff00000,param_5);
    goto LAB_000ca7ff;
  }
  if (uVar4 == 0) {
    if ((*(byte *)(iVar2 + 0x10) & 2) == 0) goto LAB_000ca750;
LAB_000ca9e9:
    uVar3 = SetImageChannelMask(param_1,2);
    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),
                       *(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),0,0x3ff00000,
                       param_5);
    uVar5 = uVar5 & uVar4;
    SetImageChannelMask(param_1,uVar3);
    iVar2 = *(int *)(param_1 + 0x2a8);
    bVar1 = *(byte *)(iVar2 + 0x1c);
  }
  else {
    uVar3 = SetImageChannelMask(param_1,1);
    uVar5 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),
                       *(undefined4 *)(param_3 + 0x20),*(undefined4 *)(param_3 + 0x24),0,0x3ff00000,
                       param_5);
    uVar5 = uVar5 & 1;
    SetImageChannelMask(param_1,uVar3);
    iVar2 = *(int *)(param_1 + 0x2a8);
    if ((*(byte *)(iVar2 + 0x10) & 2) != 0) goto LAB_000ca9e9;
LAB_000ca750:
    bVar1 = *(byte *)(iVar2 + 0x1c);
  }
  if ((bVar1 & 2) != 0) {
    uVar3 = SetImageChannelMask(param_1,4);
    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34),
                       *(undefined4 *)(param_3 + 0x30),*(undefined4 *)(param_3 + 0x34),0,0x3ff00000,
                       param_5);
    uVar5 = uVar5 & uVar4;
    SetImageChannelMask(param_1,uVar3);
    iVar2 = *(int *)(param_1 + 0x2a8);
  }
  if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && (*(int *)(param_1 + 4) == 2)) {
    uVar3 = SetImageChannelMask(param_1,8);
    uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x38),*(undefined4 *)(param_2 + 0x3c),
                       *(undefined4 *)(param_3 + 0x38),*(undefined4 *)(param_3 + 0x3c),0,0x3ff00000,
                       param_5);
    uVar5 = uVar5 & uVar4;
    SetImageChannelMask(param_1,uVar3);
    iVar2 = *(int *)(param_1 + 0x2a8);
  }
  if (((*(byte *)(iVar2 + 0x34) & 2) == 0) || (*(int *)(param_1 + 0x294) == 0)) {
    return uVar5;
  }
  local_20 = SetImageChannelMask(param_1,0x10);
  uVar4 = LevelImage(param_1,*(undefined4 *)(param_2 + 0x40),*(undefined4 *)(param_2 + 0x44),
                     *(undefined4 *)(param_3 + 0x40),*(undefined4 *)(param_3 + 0x44),0,0x3ff00000,
                     param_5);
LAB_000ca7ff:
  SetImageChannelMask(param_1,local_20);
  return uVar5 & uVar4;
}

