
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "ExceptionType": Some values do not have unique names */
/* WARNING: Enum "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 */

MagickBooleanType __regparm3
WritePCDTile(Image *image,char *page_geometry,size_t tile_columns,size_t tile_rows,
            ExceptionInfo *exception)

{
  int iVar1;
  double dVar2;
  uchar uVar3;
  Image *image_00;
  MagickStatusType MVar4;
  Image *pIVar5;
  Quantum *pQVar6;
  size_t columns;
  MagickBooleanType MVar7;
  char *pcVar8;
  int iVar9;
  int in_GS_OFFSET;
  bool bVar10;
  int local_90;
  uint local_8c;
  int local_88;
  char *local_7c;
  RectangleInfo geometry;
  RectangleInfo border_info;
  GeometryInfo geometry_info;
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  SetGeometry(image,&geometry);
  ParseMetaGeometry("768x512>",&geometry.x,&geometry.y,&geometry.width,&geometry.height);
  if ((geometry.width & 1) != 0) {
    geometry.width = geometry.width - 1;
  }
  if ((geometry.height & 1) != 0) {
    geometry.height = geometry.height - 1;
  }
  image_00 = ResizeImage(image,geometry.width,geometry.height,TriangleFilter,
                         (ExceptionInfo *)tile_rows);
  if (image_00 != (Image *)0x0) {
    MVar4 = ParseGeometry("768x512>",&geometry_info);
    local_7c = (char *)(longlong)ROUND(geometry_info.rho);
    pcVar8 = local_7c;
    geometry.height = (size_t)local_7c;
    geometry.width = (size_t)local_7c;
    if ((MVar4 & 8) != 0) {
      local_7c = (char *)(longlong)ROUND(geometry_info.sigma);
      geometry.height = (size_t)local_7c;
    }
    if ((pcVar8 != (char *)image_00->columns) || (geometry.height != image_00->rows)) {
      border_info.width = (uint)(pcVar8 + (1 - (int)image_00->columns)) >> 1;
      border_info.height = (geometry.height - image_00->rows) + 1 >> 1;
      pIVar5 = BorderImage(image_00,&border_info,image->compose,(ExceptionInfo *)tile_rows);
      if (pIVar5 == (Image *)0x0) goto LAB_0022cd38;
      DestroyImage(image_00);
      pcVar8 = (char *)pIVar5->columns;
      image_00 = pIVar5;
    }
    if (((page_geometry != pcVar8) || (image_00->rows != tile_columns)) &&
       (pIVar5 = ResizeImage(image_00,(size_t)page_geometry,tile_columns,image_00->filter,
                             (ExceptionInfo *)tile_rows), pIVar5 != (Image *)0x0)) {
      DestroyImage(image_00);
      image_00 = pIVar5;
    }
    TransformImageColorspace(image_00,YCCColorspace,(ExceptionInfo *)tile_rows);
    pIVar5 = ResizeImage(image_00,image_00->columns >> 1,image_00->rows >> 1,TriangleFilter,
                         (ExceptionInfo *)tile_rows);
    if (pIVar5 != (Image *)0x0) {
      if (0 < (int)image_00->rows) {
        local_8c = 0;
        local_88 = 0;
        local_90 = 0;
        do {
          pQVar6 = GetVirtualPixels(image_00,0,local_90,image_00->columns,2,
                                    (ExceptionInfo *)tile_rows);
          if (pQVar6 == (Quantum *)0x0) break;
          if (0 < (int)(image_00->columns * 2)) {
            iVar9 = 0;
            do {
              uVar3 = '\0';
              if (0.0 < pQVar6[image_00->channel_map->offset]) {
                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;
                uVar3 = 0xff;
                if (dVar2 < (double)DAT_002a7ff4) {
                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);
                }
              }
              iVar9 = iVar9 + 1;
              WriteBlobByte(image,uVar3);
              pQVar6 = pQVar6 + image_00->number_channels;
            } while (SBORROW4(iVar9,image_00->columns * 2) !=
                     (int)(iVar9 + image_00->columns * -2) < 0);
          }
          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,pIVar5->columns,1,
                                    (ExceptionInfo *)tile_rows);
          if (pQVar6 == (Quantum *)0x0) break;
          columns = pIVar5->columns;
          if (0 < (int)columns) {
            iVar9 = 0;
            do {
              uVar3 = '\0';
              if (0.0 < pQVar6[image_00->channel_map[1].offset]) {
                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;
                uVar3 = 0xff;
                if (dVar2 < (double)DAT_002a7ff4) {
                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);
                }
              }
              iVar9 = iVar9 + 1;
              WriteBlobByte(image,uVar3);
              pQVar6 = pQVar6 + image_00->number_channels;
              columns = pIVar5->columns;
            } while (iVar9 < (int)columns);
          }
          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,columns,1,(ExceptionInfo *)tile_rows);
          if (pQVar6 == (Quantum *)0x0) break;
          if (0 < (int)pIVar5->columns) {
            iVar9 = 0;
            do {
              uVar3 = '\0';
              if (0.0 < pQVar6[image_00->channel_map[2].offset]) {
                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;
                uVar3 = 0xff;
                if (dVar2 < (double)DAT_002a7ff4) {
                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);
                }
              }
              iVar9 = iVar9 + 1;
              WriteBlobByte(image,uVar3);
              pQVar6 = pQVar6 + image_00->number_channels;
            } while (iVar9 < (int)pIVar5->columns);
          }
          MVar7 = SetImageProgress(image,"Save/Image",CONCAT44(local_88,local_8c),
                                   (ulonglong)image_00->rows);
          if (MVar7 == MagickFalse) break;
          local_90 = local_90 + 2;
          bVar10 = 0xfffffffd < local_8c;
          local_8c = local_8c + 2;
          local_88 = local_88 + (uint)bVar10;
        } while (local_90 < (int)image_00->rows);
      }
      iVar9 = 0x800;
      do {
        WriteBlobByte(image,'\0');
        iVar9 = iVar9 + -1;
      } while (iVar9 != 0);
      DestroyImage(pIVar5);
      DestroyImage(image_00);
      MVar7 = MagickTrue;
      goto LAB_0022cd3a;
    }
  }
LAB_0022cd38:
  MVar7 = MagickFalse;
LAB_0022cd3a:
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return MVar7;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



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

undefined4 __regparm3 FUN_0022c7f0(int param_1,uint param_2,int param_3,undefined4 param_4)

{
  double dVar1;
  undefined1 uVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  uint uVar8;
  int iVar9;
  int iVar10;
  int in_GS_OFFSET;
  bool bVar11;
  int local_90;
  uint local_8c;
  int local_88;
  uint local_7c;
  uint local_6c;
  uint local_68;
  undefined1 local_64 [4];
  undefined1 local_60 [4];
  uint local_5c;
  uint local_58;
  double local_4c;
  double local_44;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x22c7fb;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  SetGeometry(param_1,&local_6c);
  ParseMetaGeometry("768x512>",local_64,local_60,&local_6c,&local_68);
  if ((local_6c & 1) != 0) {
    local_6c = local_6c - 1;
  }
  if ((local_68 & 1) != 0) {
    local_68 = local_68 - 1;
  }
  iVar3 = ResizeImage(param_1,local_6c,local_68,3,param_4);
  if (iVar3 != 0) {
    uVar4 = ParseGeometry("768x512>",&local_4c);
    local_7c = (uint)(longlong)ROUND(local_4c);
    uVar8 = local_7c;
    local_68 = local_7c;
    local_6c = local_7c;
    if ((uVar4 & 8) != 0) {
      local_7c = (uint)(longlong)ROUND(local_44);
      local_68 = local_7c;
    }
    if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {
      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;
      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;
      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);
      if (iVar5 == 0) goto LAB_0022cd38;
      DestroyImage(iVar3);
      uVar8 = *(uint *)(iVar5 + 0x18);
      iVar3 = iVar5;
    }
    if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&
       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),
       iVar5 != 0)) {
      DestroyImage(iVar3);
      iVar3 = iVar5;
    }
    TransformImageColorspace(iVar3,0x1c,param_4);
    iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);
    if (iVar5 != 0) {
      if (0 < *(int *)(iVar3 + 0x1c)) {
        local_8c = 0;
        local_88 = 0;
        local_90 = 0;
        do {
          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);
          if (iVar6 == 0) break;
          if (0 < *(int *)(iVar3 + 0x18) * 2) {
            iVar10 = 0;
            do {
              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);
              uVar2 = 0;
              if (0.0 < dVar1) {
                dVar1 = dVar1 / (double)DAT_002a7ff0;
                uVar2 = 0xff;
                if (dVar1 < (double)DAT_002a7ff4) {
                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);
                }
              }
              iVar10 = iVar10 + 1;
              WriteBlobByte(param_1,uVar2);
              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;
            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=
                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);
          }
          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);
          if (iVar6 == 0) break;
          iVar10 = *(int *)(iVar5 + 0x18);
          if (0 < iVar10) {
            iVar9 = 0;
            do {
              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);
              uVar2 = 0;
              if (0.0 < dVar1) {
                dVar1 = dVar1 / (double)DAT_002a7ff0;
                uVar2 = 0xff;
                if (dVar1 < (double)DAT_002a7ff4) {
                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);
                }
              }
              iVar9 = iVar9 + 1;
              WriteBlobByte(param_1,uVar2);
              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;
              iVar10 = *(int *)(iVar5 + 0x18);
            } while (iVar9 < iVar10);
          }
          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);
          if (iVar6 == 0) break;
          if (0 < *(int *)(iVar5 + 0x18)) {
            iVar10 = 0;
            do {
              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);
              uVar2 = 0;
              if (0.0 < dVar1) {
                dVar1 = dVar1 / (double)DAT_002a7ff0;
                uVar2 = 0xff;
                if (dVar1 < (double)DAT_002a7ff4) {
                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);
                }
              }
              iVar10 = iVar10 + 1;
              WriteBlobByte(param_1,uVar2);
              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;
            } while (iVar10 < *(int *)(iVar5 + 0x18));
          }
          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,
                                   *(undefined4 *)(iVar3 + 0x1c),0);
          if (iVar6 == 0) break;
          local_90 = local_90 + 2;
          bVar11 = 0xfffffffd < local_8c;
          local_8c = local_8c + 2;
          local_88 = local_88 + (uint)bVar11;
        } while (local_90 < *(int *)(iVar3 + 0x1c));
      }
      iVar6 = 0x800;
      do {
        WriteBlobByte(param_1,0);
        iVar6 = iVar6 + -1;
      } while (iVar6 != 0);
      DestroyImage(iVar5);
      DestroyImage(iVar3);
      uVar7 = 1;
      goto LAB_0022cd3a;
    }
  }
LAB_0022cd38:
  uVar7 = 0;
LAB_0022cd3a:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uVar7;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0029eab0();
}


PUSH EBP
MOV EBP,EDX
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00038830
ADD EBX,0x1ac805
SUB ESP,0x94
MOV EDX,dword ptr [ESP + 0xa8]
LEA ESI,[ESP + 0x38]
MOV dword ptr [ESP + 0xc],EAX
MOV dword ptr [ESP + 0x10],ECX
MOV dword ptr [ESP + 0x20],EDX
MOV EDX,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0x84],EDX
XOR EDX,EDX
PUSH ESI
PUSH EAX
CALL 0x00031350
POP ECX
LEA EAX,[ESP + 0x40]
PUSH EAX
PUSH ESI
LEA ESI,[EBX + 0xfff2c341]
LEA EAX,[ESP + 0x50]
PUSH EAX
LEA EAX,[ESP + 0x50]
PUSH EAX
PUSH ESI
CALL 0x00032930
MOV EAX,dword ptr [ESP + 0x50]
ADD ESP,0x20
TEST AL,0x1
JZ 0x0022c864
SUB EAX,0x1
MOV dword ptr [ESP + 0x30],EAX
MOV EDX,dword ptr [ESP + 0x34]
TEST DL,0x1
JZ 0x0022c874
SUB EDX,0x1
MOV dword ptr [ESP + 0x34],EDX
SUB ESP,0xc
PUSH dword ptr [ESP + 0x24]
PUSH 0x3
PUSH EDX
PUSH EAX
PUSH dword ptr [ESP + 0x20]
CALL 0x00031440
ADD ESP,0x20
MOV EDI,EAX
TEST EAX,EAX
JZ 0x0022cd38
SUB ESP,0x8
LEA EAX,[ESP + 0x58]
PUSH EAX
PUSH ESI
CALL 0x00031a50
FLD qword ptr [ESP + 0x60]
FNSTCW word ptr [ESP + 0x3e]
MOV ESI,EAX
MOVZX EAX,word ptr [ESP + 0x3e]
OR AH,0xc
MOV word ptr [ESP + 0x3c],AX
FLDCW word ptr [ESP + 0x3c]
FISTP qword ptr [ESP + 0x30]
FLDCW word ptr [ESP + 0x3e]
MOV EAX,dword ptr [ESP + 0x30]
MOV dword ptr [ESP + 0x40],EAX
ADD ESP,0x10
AND ESI,0x8
MOV ECX,EAX
JZ 0x0022cd58
FLD qword ptr [ESP + 0x58]
FLDCW word ptr [ESP + 0x2c]
FISTP qword ptr [ESP + 0x20]
FLDCW word ptr [ESP + 0x2e]
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0xc],EAX
MOV dword ptr [ESP + 0x34],EAX
MOV EAX,dword ptr [EDI + 0x18]
MOV ESI,dword ptr [EDI + 0x1c]
CMP ECX,EAX
JNZ 0x0022c90c
CMP dword ptr [ESP + 0xc],ESI
JZ 0x0022cd65
ADD ECX,0x1
SUB ECX,EAX
MOV EAX,dword ptr [ESP + 0xc]
SHR ECX,0x1
MOV dword ptr [ESP + 0x40],ECX
SUB EAX,ESI
ADD EAX,0x1
SHR EAX,0x1
MOV dword ptr [ESP + 0x44],EAX
PUSH dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0x8]
PUSH dword ptr [EAX + 0x23c]
LEA EAX,[ESP + 0x48]
PUSH EAX
PUSH EDI
CALL 0x00032820
ADD ESP,0x10
MOV ESI,EAX
TEST EAX,EAX
JZ 0x0022cd38
SUB ESP,0xc
PUSH EDI
CALL 0x00032dd0
MOV ECX,dword ptr [ESI + 0x18]
ADD ESP,0x10
CMP EBP,ECX
JNZ 0x0022c968
MOV EAX,dword ptr [ESP + 0x8]
CMP dword ptr [ESI + 0x1c],EAX
JZ 0x0022c997
SUB ESP,0xc
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESI + 0x228]
PUSH dword ptr [ESP + 0x1c]
PUSH EBP
PUSH ESI
CALL 0x00031440
ADD ESP,0x20
MOV EDI,EAX
TEST EAX,EAX
JZ 0x0022c997
SUB ESP,0xc
PUSH ESI
MOV ESI,EDI
CALL 0x00032dd0
ADD ESP,0x10
SUB ESP,0x4
MOV EDI,dword ptr [ESP + 0x1c]
PUSH EDI
PUSH 0x1c
PUSH ESI
CALL 0x00032530
MOV EAX,dword ptr [ESI + 0x1c]
MOV dword ptr [ESP],EDI
PUSH 0x3
SHR EAX,0x1
PUSH EAX
MOV EAX,dword ptr [ESI + 0x18]
SHR EAX,0x1
PUSH EAX
PUSH ESI
CALL 0x00031440
MOV dword ptr [ESP + 0x28],EAX
ADD ESP,0x20
TEST EAX,EAX
JZ 0x0022cd38
MOV EDX,dword ptr [ESI + 0x1c]
TEST EDX,EDX
JLE 0x0022ccf0
MOV dword ptr [ESP + 0x10],0x0
MOV dword ptr [ESP + 0x14],0x0
MOV dword ptr [ESP + 0xc],0x0
SUB ESP,0x8
PUSH dword ptr [ESP + 0x20]
PUSH 0x2
PUSH dword ptr [ESI + 0x18]
PUSH dword ptr [ESP + 0x20]
PUSH 0x0
PUSH ESI
CALL 0x00030e70
ADD ESP,0x20
MOV EDX,EAX
TEST EAX,EAX
JZ 0x0022ccf0
MOV EAX,dword ptr [ESI + 0x18]
ADD EAX,EAX
TEST EAX,EAX
JLE 0x0022cad2
XOR ECX,ECX
MOV EBP,EDX
MOV EDI,ECX
NOP
LEA ESI,[ESI]
MOV EAX,dword ptr [ESI + 0x2a8]
MOV EAX,dword ptr [EAX + 0x8]
FLD qword ptr [EBP + EAX*0x8]
XOR EAX,EAX
FUCOMI ST0,ST0
JP 0x0022ca90
FLDZ
FUCOMIP ST0,ST1
JNC 0x0022ca98
FDIV dword ptr [EBX + 0xffeceff0]
MOV EAX,0xff
FLD dword ptr [EBX + 0xffeceff4]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x0022caa0
FNSTCW word ptr [ESP + 0x2e]
FADD dword ptr [EBX + 0xffec6124]
MOVZX EAX,word ptr [ESP + 0x2e]
OR AH,0xc
MOV word ptr [ESP + 0x2c],AX
FLDCW word ptr [ESP + 0x2c]
FISTP word ptr [ESP + 0x2a]
FLDCW word ptr [ESP + 0x2e]
MOVZX EAX,word ptr [ESP + 0x2a]
MOVZX EAX,AL
JMP 0x0022caa8
FSTP ST0
JMP 0x0022caa8
FSTP ST0
JMP 0x0022caa8
FSTP ST0
LEA ESI,[ESI]
SUB ESP,0x8
ADD EDI,0x1
PUSH EAX
PUSH dword ptr [ESP + 0x10]
CALL 0x00032b80
MOV EAX,dword ptr [ESI + 0x298]
ADD ESP,0x10
LEA EBP,[EBP + EAX*0x8]
MOV EAX,dword ptr [ESI + 0x18]
ADD EAX,EAX
CMP EDI,EAX
JL 0x0022ca30
MOV EAX,dword ptr [ESP + 0xc]
SUB ESP,0x8
SAR EAX,0x1
MOV dword ptr [ESP + 0x24],EAX
PUSH dword ptr [ESP + 0x20]
PUSH 0x1
MOV EDI,dword ptr [ESP + 0x18]
PUSH dword ptr [EDI + 0x18]
PUSH EAX
PUSH 0x0
PUSH EDI
CALL 0x00030e70
ADD ESP,0x20
MOV EDX,EAX
TEST EAX,EAX
JZ 0x0022ccf0
MOV EAX,dword ptr [EDI + 0x18]
TEST EAX,EAX
JLE 0x0022cbc5
XOR ECX,ECX
MOV EDI,ESI
MOV ESI,EDX
MOV EBP,ECX
LEA ESI,[ESI]
MOV EAX,dword ptr [EDI + 0x2a8]
MOV EAX,dword ptr [EAX + 0x14]
FLD qword ptr [ESI + EAX*0x8]
XOR EAX,EAX
FUCOMI ST0,ST0
JP 0x0022cb80
FLDZ
FUCOMIP ST0,ST1
JNC 0x0022cb88
FDIV dword ptr [EBX + 0xffeceff0]
MOV EAX,0xff
FLD dword ptr [EBX + 0xffeceff4]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x0022cb90
FNSTCW word ptr [ESP + 0x2e]
FADD dword ptr [EBX + 0xffec6124]
MOVZX EAX,word ptr [ESP + 0x2e]
OR AH,0xc
MOV word ptr [ESP + 0x2c],AX
FLDCW word ptr [ESP + 0x2c]
FISTP word ptr [ESP + 0x2a]
FLDCW word ptr [ESP + 0x2e]
MOVZX EAX,word ptr [ESP + 0x2a]
MOVZX EAX,AL
JMP 0x0022cb98
FSTP ST0
JMP 0x0022cb98
FSTP ST0
JMP 0x0022cb98
FSTP ST0
LEA ESI,[ESI]
SUB ESP,0x8
ADD EBP,0x1
PUSH EAX
PUSH dword ptr [ESP + 0x10]
CALL 0x00032b80
MOV EAX,dword ptr [EDI + 0x298]
LEA ESI,[ESI + EAX*0x8]
MOV EAX,dword ptr [ESP + 0x18]
ADD ESP,0x10
MOV EAX,dword ptr [EAX + 0x18]
CMP EBP,EAX
JL 0x0022cb18
MOV ESI,EDI
SUB ESP,0x8
PUSH dword ptr [ESP + 0x20]
PUSH 0x1
PUSH EAX
PUSH dword ptr [ESP + 0x30]
PUSH 0x0
MOV EDI,dword ptr [ESP + 0x24]
PUSH EDI
CALL 0x00030e70
ADD ESP,0x20
MOV EDX,EAX
TEST EAX,EAX
JZ 0x0022ccf0
MOV EAX,dword ptr [EDI + 0x18]
TEST EAX,EAX
JLE 0x0022cca3
XOR ECX,ECX
MOV EDI,ESI
MOV ESI,EDX
MOV EBP,ECX
NOP
MOV EAX,dword ptr [EDI + 0x2a8]
MOV EAX,dword ptr [EAX + 0x20]
FLD qword ptr [ESI + EAX*0x8]
XOR EAX,EAX
FUCOMI ST0,ST0
JP 0x0022cc60
FLDZ
FUCOMIP ST0,ST1
JNC 0x0022cc68
FDIV dword ptr [EBX + 0xffeceff0]
MOV EAX,0xff
FLD dword ptr [EBX + 0xffeceff4]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x0022cc70
FNSTCW word ptr [ESP + 0x2e]
FADD dword ptr [EBX + 0xffec6124]
MOVZX EAX,word ptr [ESP + 0x2e]
OR AH,0xc
MOV word ptr [ESP + 0x2c],AX
FLDCW word ptr [ESP + 0x2c]
FISTP word ptr [ESP + 0x2a]
FLDCW word ptr [ESP + 0x2e]
MOVZX EAX,word ptr [ESP + 0x2a]
MOVZX EAX,AL
JMP 0x0022cc78
FSTP ST0
JMP 0x0022cc78
FSTP ST0
JMP 0x0022cc78
FSTP ST0
LEA ESI,[ESI]
SUB ESP,0x8
ADD EBP,0x1
PUSH EAX
PUSH dword ptr [ESP + 0x10]
CALL 0x00032b80
MOV EAX,dword ptr [EDI + 0x298]
ADD ESP,0x10
LEA ESI,[ESI + EAX*0x8]
MOV EAX,dword ptr [ESP + 0x8]
CMP EBP,dword ptr [EAX + 0x18]
JL 0x0022cc00
MOV ESI,EDI
MOV EAX,dword ptr [ESI + 0x1c]
SUB ESP,0x8
XOR EDX,EDX
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xffef2dfe]
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x24]
PUSH EAX
PUSH dword ptr [ESP + 0x20]
CALL 0x00033840
ADD ESP,0x20
TEST EAX,EAX
JZ 0x0022ccf0
ADD dword ptr [ESP + 0xc],0x2
ADD dword ptr [ESP + 0x10],0x2
MOV EAX,dword ptr [ESP + 0xc]
ADC dword ptr [ESP + 0x14],0x0
CMP EAX,dword ptr [ESI + 0x1c]
JL 0x0022c9f0
NOP
LEA ESI,[ESI]
MOV EBP,dword ptr [ESP + 0x4]
MOV EDI,0x800
LEA ESI,[ESI]
SUB ESP,0x8
PUSH 0x0
PUSH EBP
CALL 0x00032b80
ADD ESP,0x10
SUB EDI,0x1
JNZ 0x0022cd00
SUB ESP,0xc
PUSH dword ptr [ESP + 0x14]
CALL 0x00032dd0
MOV dword ptr [ESP],ESI
CALL 0x00032dd0
ADD ESP,0x10
MOV EAX,0x1
JMP 0x0022cd3a
XOR EAX,EAX
MOV EDX,dword ptr [ESP + 0x7c]
XOR EDX,dword ptr GS:[0x14]
JNZ 0x0022cd6c
ADD ESP,0x8c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x34],EAX
MOV dword ptr [ESP + 0xc],EAX
JMP 0x0022c8f8
MOV ESI,EDI
JMP 0x0022c95b
CALL 0x0029eab0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 __regparm3 FUN_0022c7f0(int param_1,uint param_2,int param_3,undefined4 param_4)\n\n{\n  double dVar1;\n  undefined1 uVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  int local_90;\n  uint local_8c;\n  int local_88;\n  uint local_7c;\n  uint local_6c;\n  uint local_68;\n  undefined1 local_64 [4];\n  undefined1 local_60 [4];\n  uint local_5c;\n  uint local_58;\n  double local_4c;\n  double local_44;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x22c7fb;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  SetGeometry(param_1,&local_6c);\n  ParseMetaGeometry("768x512>",local_64,local_60,&local_6c,&local_68);\n  if ((local_6c & 1) != 0) {\n    local_6c = local_6c - 1;\n  }\n  if ((local_68 & 1) != 0) {\n    local_68 = local_68 - 1;\n  }\n  iVar3 = ResizeImage(param_1,local_6c,local_68,3,param_4);\n  if (iVar3 != 0) {\n    uVar4 = ParseGeometry("768x512>",&local_4c);\n    local_7c = (uint)(longlong)ROUND(local_4c);\n    uVar8 = local_7c;\n    local_68 = local_7c;\n    local_6c = local_7c;\n    if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }\n    if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }\n    if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }\n    TransformImageColorspace(iVar3,0x1c,param_4);\n    iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);\n    if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }\n  }\nLAB_0022cd38:\n  uVar7 = 0;\nLAB_0022cd3a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0029eab0();\n}\n\n" comment (function_definition "undefined4 __regparm3 FUN_0022c7f0(int param_1,uint param_2,int param_3,undefined4 param_4)\n\n{\n  double dVar1;\n  undefined1 uVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  int local_90;\n  uint local_8c;\n  int local_88;\n  uint local_7c;\n  uint local_6c;\n  uint local_68;\n  undefined1 local_64 [4];\n  undefined1 local_60 [4];\n  uint local_5c;\n  uint local_58;\n  double local_4c;\n  double local_44;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x22c7fb;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  SetGeometry(param_1,&local_6c);\n  ParseMetaGeometry("768x512>",local_64,local_60,&local_6c,&local_68);\n  if ((local_6c & 1) != 0) {\n    local_6c = local_6c - 1;\n  }\n  if ((local_68 & 1) != 0) {\n    local_68 = local_68 - 1;\n  }\n  iVar3 = ResizeImage(param_1,local_6c,local_68,3,param_4);\n  if (iVar3 != 0) {\n    uVar4 = ParseGeometry("768x512>",&local_4c);\n    local_7c = (uint)(longlong)ROUND(local_4c);\n    uVar8 = local_7c;\n    local_68 = local_7c;\n    local_6c = local_7c;\n    if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }\n    if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }\n    if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }\n    TransformImageColorspace(iVar3,0x1c,param_4);\n    iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);\n    if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }\n  }\nLAB_0022cd38:\n  uVar7 = 0;\nLAB_0022cd3a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0029eab0();\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0022c7f0(int param_1,uint param_2,int param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,uint param_2,int param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  double dVar1;\n  undefined1 uVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  int local_90;\n  uint local_8c;\n  int local_88;\n  uint local_7c;\n  uint local_6c;\n  uint local_68;\n  undefined1 local_64 [4];\n  undefined1 local_60 [4];\n  uint local_5c;\n  uint local_58;\n  double local_4c;\n  double local_44;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x22c7fb;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  SetGeometry(param_1,&local_6c);\n  ParseMetaGeometry("768x512>",local_64,local_60,&local_6c,&local_68);\n  if ((local_6c & 1) != 0) {\n    local_6c = local_6c - 1;\n  }\n  if ((local_68 & 1) != 0) {\n    local_68 = local_68 - 1;\n  }\n  iVar3 = ResizeImage(param_1,local_6c,local_68,3,param_4);\n  if (iVar3 != 0) {\n    uVar4 = ParseGeometry("768x512>",&local_4c);\n    local_7c = (uint)(longlong)ROUND(local_4c);\n    uVar8 = local_7c;\n    local_68 = local_7c;\n    local_6c = local_7c;\n    if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }\n    if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }\n    if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }\n    TransformImageColorspace(iVar3,0x1c,param_4);\n    iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);\n    if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }\n  }\nLAB_0022cd38:\n  uVar7 = 0;\nLAB_0022cd3a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0029eab0();\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "uint local_8c;" type_identifier identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "uint local_68;" type_identifier identifier ;) (declaration "undefined1 local_64 [4];" type_identifier (array_declarator "local_64 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 local_60 [4];" type_identifier (array_declarator "local_60 [4]" identifier [ number_literal ]) ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "double local_4c;" primitive_type identifier ;) (declaration "double local_44;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x22c7fb;" (assignment_expression "uStack_14 = 0x22c7fb" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "SetGeometry(param_1,&local_6c);" (call_expression "SetGeometry(param_1,&local_6c)" identifier (argument_list "(param_1,&local_6c)" ( identifier , (pointer_expression "&local_6c" & identifier) ))) ;) (expression_statement "ParseMetaGeometry("768x512>",local_64,local_60,&local_6c,&local_68);" (call_expression "ParseMetaGeometry("768x512>",local_64,local_60,&local_6c,&local_68)" identifier (argument_list "("768x512>",local_64,local_60,&local_6c,&local_68)" ( (string_literal ""768x512>"" " string_content ") , identifier , identifier , (pointer_expression "&local_6c" & identifier) , (pointer_expression "&local_68" & identifier) ))) ;) (if_statement "if ((local_6c & 1) != 0) {\n    local_6c = local_6c - 1;\n  }" if (parenthesized_expression "((local_6c & 1) != 0)" ( (binary_expression "(local_6c & 1) != 0" (parenthesized_expression "(local_6c & 1)" ( (binary_expression "local_6c & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    local_6c = local_6c - 1;\n  }" { (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) })) (if_statement "if ((local_68 & 1) != 0) {\n    local_68 = local_68 - 1;\n  }" if (parenthesized_expression "((local_68 & 1) != 0)" ( (binary_expression "(local_68 & 1) != 0" (parenthesized_expression "(local_68 & 1)" ( (binary_expression "local_68 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    local_68 = local_68 - 1;\n  }" { (expression_statement "local_68 = local_68 - 1;" (assignment_expression "local_68 = local_68 - 1" identifier = (binary_expression "local_68 - 1" identifier - number_literal)) ;) })) (expression_statement "iVar3 = ResizeImage(param_1,local_6c,local_68,3,param_4);" (assignment_expression "iVar3 = ResizeImage(param_1,local_6c,local_68,3,param_4)" identifier = (call_expression "ResizeImage(param_1,local_6c,local_68,3,param_4)" identifier (argument_list "(param_1,local_6c,local_68,3,param_4)" ( identifier , identifier , identifier , number_literal , identifier )))) ;) (if_statement "if (iVar3 != 0) {\n    uVar4 = ParseGeometry("768x512>",&local_4c);\n    local_7c = (uint)(longlong)ROUND(local_4c);\n    uVar8 = local_7c;\n    local_68 = local_7c;\n    local_6c = local_7c;\n    if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }\n    if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }\n    if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }\n    TransformImageColorspace(iVar3,0x1c,param_4);\n    iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);\n    if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar4 = ParseGeometry("768x512>",&local_4c);\n    local_7c = (uint)(longlong)ROUND(local_4c);\n    uVar8 = local_7c;\n    local_68 = local_7c;\n    local_6c = local_7c;\n    if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }\n    if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }\n    if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }\n    TransformImageColorspace(iVar3,0x1c,param_4);\n    iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);\n    if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }\n  }" { (expression_statement "uVar4 = ParseGeometry("768x512>",&local_4c);" (assignment_expression "uVar4 = ParseGeometry("768x512>",&local_4c)" identifier = (call_expression "ParseGeometry("768x512>",&local_4c)" identifier (argument_list "("768x512>",&local_4c)" ( (string_literal ""768x512>"" " string_content ") , (pointer_expression "&local_4c" & identifier) )))) ;) (expression_statement "local_7c = (uint)(longlong)ROUND(local_4c);" (assignment_expression "local_7c = (uint)(longlong)ROUND(local_4c)" identifier = (cast_expression "(uint)(longlong)ROUND(local_4c)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(local_4c)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(local_4c)" identifier (argument_list "(local_4c)" ( identifier )))))) ;) (expression_statement "uVar8 = local_7c;" (assignment_expression "uVar8 = local_7c" identifier = identifier) ;) (expression_statement "local_68 = local_7c;" (assignment_expression "local_68 = local_7c" identifier = identifier) ;) (expression_statement "local_6c = local_7c;" (assignment_expression "local_6c = local_7c" identifier = identifier) ;) (if_statement "if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }" if (parenthesized_expression "((uVar4 & 8) != 0)" ( (binary_expression "(uVar4 & 8) != 0" (parenthesized_expression "(uVar4 & 8)" ( (binary_expression "uVar4 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }" { (expression_statement "local_7c = (uint)(longlong)ROUND(local_44);" (assignment_expression "local_7c = (uint)(longlong)ROUND(local_44)" identifier = (cast_expression "(uint)(longlong)ROUND(local_44)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(local_44)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(local_44)" identifier (argument_list "(local_44)" ( identifier )))))) ;) (expression_statement "local_68 = local_7c;" (assignment_expression "local_68 = local_7c" identifier = identifier) ;) })) (if_statement "if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }" if (parenthesized_expression "((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c)))" ( (binary_expression "(uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))" (parenthesized_expression "(uVar8 != *(uint *)(iVar3 + 0x18))" ( (binary_expression "uVar8 != *(uint *)(iVar3 + 0x18)" identifier != (pointer_expression "*(uint *)(iVar3 + 0x18)" * (cast_expression "(uint *)(iVar3 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) ))))) )) || (parenthesized_expression "(local_68 != *(uint *)(iVar3 + 0x1c))" ( (binary_expression "local_68 != *(uint *)(iVar3 + 0x1c)" identifier != (pointer_expression "*(uint *)(iVar3 + 0x1c)" * (cast_expression "(uint *)(iVar3 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }" { (expression_statement "local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;" (assignment_expression "local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1" identifier = (binary_expression "(uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1" (binary_expression "(uVar8 + 1) - *(uint *)(iVar3 + 0x18)" (parenthesized_expression "(uVar8 + 1)" ( (binary_expression "uVar8 + 1" identifier + number_literal) )) - (pointer_expression "*(uint *)(iVar3 + 0x18)" * (cast_expression "(uint *)(iVar3 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) ))))) >> number_literal)) ;) (expression_statement "local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;" (assignment_expression "local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1" identifier = (binary_expression "(local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1" (binary_expression "(local_68 - *(uint *)(iVar3 + 0x1c)) + 1" (parenthesized_expression "(local_68 - *(uint *)(iVar3 + 0x1c))" ( (binary_expression "local_68 - *(uint *)(iVar3 + 0x1c)" identifier - (pointer_expression "*(uint *)(iVar3 + 0x1c)" * (cast_expression "(uint *)(iVar3 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) ))))) )) + number_literal) >> number_literal)) ;) (expression_statement "iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);" (assignment_expression "iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4)" identifier = (call_expression "BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4)" identifier (argument_list "(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4)" ( identifier , (pointer_expression "&local_5c" & identifier) , (pointer_expression "*(undefined4 *)(param_1 + 0x23c)" * (cast_expression "(undefined4 *)(param_1 + 0x23c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x23c)" ( (binary_expression "param_1 + 0x23c" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (iVar5 == 0) goto LAB_0022cd38;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0022cd38;" goto statement_identifier ;)) (expression_statement "DestroyImage(iVar3);" (call_expression "DestroyImage(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "uVar8 = *(uint *)(iVar5 + 0x18);" (assignment_expression "uVar8 = *(uint *)(iVar5 + 0x18)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x18)" * (cast_expression "(uint *)(iVar5 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = iVar5;" (assignment_expression "iVar3 = iVar5" identifier = identifier) ;) })) (if_statement "if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }" if (parenthesized_expression "(((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0))" ( (binary_expression "((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)" (parenthesized_expression "((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3))" ( (binary_expression "(param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)" (parenthesized_expression "(param_2 != uVar8)" ( (binary_expression "param_2 != uVar8" identifier != identifier) )) || (parenthesized_expression "(*(int *)(iVar3 + 0x1c) != param_3)" ( (binary_expression "*(int *)(iVar3 + 0x1c) != param_3" (pointer_expression "*(int *)(iVar3 + 0x1c)" * (cast_expression "(int *)(iVar3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) )))) != identifier) ))) )) && (parenthesized_expression "(iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)" ( (comma_expression "iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0" (assignment_expression "iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4)" identifier = (call_expression "ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4)" identifier (argument_list "(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4)" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(iVar3 + 0x228)" * (cast_expression "(undefined4 *)(iVar3 + 0x228)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x228)" ( (binary_expression "iVar3 + 0x228" identifier + number_literal) )))) , identifier )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }" { (expression_statement "DestroyImage(iVar3);" (call_expression "DestroyImage(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "iVar3 = iVar5;" (assignment_expression "iVar3 = iVar5" identifier = identifier) ;) })) (expression_statement "TransformImageColorspace(iVar3,0x1c,param_4);" (call_expression "TransformImageColorspace(iVar3,0x1c,param_4)" identifier (argument_list "(iVar3,0x1c,param_4)" ( identifier , number_literal , identifier ))) ;) (expression_statement "iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);" (assignment_expression "iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4)" identifier = (call_expression "ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4)" identifier (argument_list "(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4)" ( identifier , (binary_expression "*(uint *)(iVar3 + 0x18) >> 1" (pointer_expression "*(uint *)(iVar3 + 0x18)" * (cast_expression "(uint *)(iVar3 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) )))) >> number_literal) , (binary_expression "*(uint *)(iVar3 + 0x1c) >> 1" (pointer_expression "*(uint *)(iVar3 + 0x1c)" * (cast_expression "(uint *)(iVar3 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) )))) >> number_literal) , number_literal , identifier )))) ;) (if_statement "if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }" { (if_statement "if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }" if (parenthesized_expression "(0 < *(int *)(iVar3 + 0x1c))" ( (binary_expression "0 < *(int *)(iVar3 + 0x1c)" number_literal < (pointer_expression "*(int *)(iVar3 + 0x1c)" * (cast_expression "(int *)(iVar3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) ))))) )) (compound_statement "{\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }" { (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));" do (compound_statement "{\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        }" { (expression_statement "iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);" (assignment_expression "iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4)" identifier = (call_expression "GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4)" identifier (argument_list "(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4)" ( identifier , number_literal , identifier , (pointer_expression "*(undefined4 *)(iVar3 + 0x18)" * (cast_expression "(undefined4 *)(iVar3 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) )))) , number_literal , identifier )))) ;) (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }" if (parenthesized_expression "(0 < *(int *)(iVar3 + 0x18) * 2)" ( (binary_expression "0 < *(int *)(iVar3 + 0x18) * 2" number_literal < (binary_expression "*(int *)(iVar3 + 0x18) * 2" (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) )))) * number_literal)) )) (compound_statement "{\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);" do (compound_statement "{\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            }" { (expression_statement "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);" (assignment_expression "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8)" identifier = (pointer_expression "*(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8)" * (cast_expression "(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8)" ( (binary_expression "iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(iVar3 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x2a8) + 8)" ( (binary_expression "*(int *)(iVar3 + 0x2a8) + 8" (pointer_expression "*(int *)(iVar3 + 0x2a8)" * (cast_expression "(int *)(iVar3 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2a8)" ( (binary_expression "iVar3 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" if (parenthesized_expression "(0.0 < dVar1)" ( (binary_expression "0.0 < dVar1" number_literal < identifier) )) (compound_statement "{\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" { (expression_statement "dVar1 = dVar1 / (double)DAT_002a7ff0;" (assignment_expression "dVar1 = dVar1 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar1 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar2 = 0xff;" (assignment_expression "uVar2 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" if (parenthesized_expression "(dVar1 < (double)DAT_002a7ff4)" ( (binary_expression "dVar1 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" { (expression_statement "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" identifier = (cast_expression "(undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "undefined1" type_identifier) ) (cast_expression "(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar1 + (double)DAT_0029f124)" identifier (argument_list "(dVar1 + (double)DAT_0029f124)" ( (binary_expression "dVar1 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "WriteBlobByte(param_1,uVar2);" (call_expression "WriteBlobByte(param_1,uVar2)" identifier (argument_list "(param_1,uVar2)" ( identifier , identifier ))) ;) (expression_statement "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;" (assignment_expression "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8" identifier = (binary_expression "iVar6 + *(int *)(iVar3 + 0x298) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x298) * 8" (pointer_expression "*(int *)(iVar3 + 0x298)" * (cast_expression "(int *)(iVar3 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x298)" ( (binary_expression "iVar3 + 0x298" identifier + number_literal) )))) * number_literal))) ;) }) while (parenthesized_expression "(SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0)" ( (binary_expression "SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0" (call_expression "SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2)" identifier (argument_list "(iVar10,*(int *)(iVar3 + 0x18) * 2)" ( identifier , (binary_expression "*(int *)(iVar3 + 0x18) * 2" (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) )))) * number_literal) ))) != (binary_expression "iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0" (binary_expression "iVar10 + *(int *)(iVar3 + 0x18) * -2" identifier + (binary_expression "*(int *)(iVar3 + 0x18) * -2" (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) )))) * number_literal)) < number_literal)) )) ;) })) (expression_statement "iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);" (assignment_expression "iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4)" identifier = (call_expression "GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4)" identifier (argument_list "(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4)" ( identifier , number_literal , (binary_expression "local_90 >> 1" identifier >> number_literal) , (pointer_expression "*(undefined4 *)(iVar5 + 0x18)" * (cast_expression "(undefined4 *)(iVar5 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) )))) , number_literal , identifier )))) ;) (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = *(int *)(iVar5 + 0x18);" (assignment_expression "iVar10 = *(int *)(iVar5 + 0x18)" identifier = (pointer_expression "*(int *)(iVar5 + 0x18)" * (cast_expression "(int *)(iVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);" do (compound_statement "{\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            }" { (expression_statement "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);" (assignment_expression "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8)" identifier = (pointer_expression "*(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8)" * (cast_expression "(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8)" ( (binary_expression "iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(iVar3 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(iVar3 + 0x2a8) + 0x14" (pointer_expression "*(int *)(iVar3 + 0x2a8)" * (cast_expression "(int *)(iVar3 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2a8)" ( (binary_expression "iVar3 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" if (parenthesized_expression "(0.0 < dVar1)" ( (binary_expression "0.0 < dVar1" number_literal < identifier) )) (compound_statement "{\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" { (expression_statement "dVar1 = dVar1 / (double)DAT_002a7ff0;" (assignment_expression "dVar1 = dVar1 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar1 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar2 = 0xff;" (assignment_expression "uVar2 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" if (parenthesized_expression "(dVar1 < (double)DAT_002a7ff4)" ( (binary_expression "dVar1 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" { (expression_statement "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" identifier = (cast_expression "(undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "undefined1" type_identifier) ) (cast_expression "(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar1 + (double)DAT_0029f124)" identifier (argument_list "(dVar1 + (double)DAT_0029f124)" ( (binary_expression "dVar1 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "WriteBlobByte(param_1,uVar2);" (call_expression "WriteBlobByte(param_1,uVar2)" identifier (argument_list "(param_1,uVar2)" ( identifier , identifier ))) ;) (expression_statement "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;" (assignment_expression "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8" identifier = (binary_expression "iVar6 + *(int *)(iVar3 + 0x298) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x298) * 8" (pointer_expression "*(int *)(iVar3 + 0x298)" * (cast_expression "(int *)(iVar3 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x298)" ( (binary_expression "iVar3 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "iVar10 = *(int *)(iVar5 + 0x18);" (assignment_expression "iVar10 = *(int *)(iVar5 + 0x18)" identifier = (pointer_expression "*(int *)(iVar5 + 0x18)" * (cast_expression "(int *)(iVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar9 < iVar10)" ( (binary_expression "iVar9 < iVar10" identifier < identifier) )) ;) })) (expression_statement "iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);" (assignment_expression "iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4)" identifier = (call_expression "GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4)" identifier (argument_list "(iVar5,0,local_90 >> 1,iVar10,1,param_4)" ( identifier , number_literal , (binary_expression "local_90 >> 1" identifier >> number_literal) , identifier , number_literal , identifier )))) ;) (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }" if (parenthesized_expression "(0 < *(int *)(iVar5 + 0x18))" ( (binary_expression "0 < *(int *)(iVar5 + 0x18)" number_literal < (pointer_expression "*(int *)(iVar5 + 0x18)" * (cast_expression "(int *)(iVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));" do (compound_statement "{\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            }" { (expression_statement "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);" (assignment_expression "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8)" identifier = (pointer_expression "*(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8)" * (cast_expression "(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8)" ( (binary_expression "iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(iVar3 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(iVar3 + 0x2a8) + 0x20" (pointer_expression "*(int *)(iVar3 + 0x2a8)" * (cast_expression "(int *)(iVar3 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2a8)" ( (binary_expression "iVar3 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" if (parenthesized_expression "(0.0 < dVar1)" ( (binary_expression "0.0 < dVar1" number_literal < identifier) )) (compound_statement "{\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" { (expression_statement "dVar1 = dVar1 / (double)DAT_002a7ff0;" (assignment_expression "dVar1 = dVar1 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar1 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar2 = 0xff;" (assignment_expression "uVar2 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" if (parenthesized_expression "(dVar1 < (double)DAT_002a7ff4)" ( (binary_expression "dVar1 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" { (expression_statement "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" identifier = (cast_expression "(undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "undefined1" type_identifier) ) (cast_expression "(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar1 + (double)DAT_0029f124)" identifier (argument_list "(dVar1 + (double)DAT_0029f124)" ( (binary_expression "dVar1 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "WriteBlobByte(param_1,uVar2);" (call_expression "WriteBlobByte(param_1,uVar2)" identifier (argument_list "(param_1,uVar2)" ( identifier , identifier ))) ;) (expression_statement "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;" (assignment_expression "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8" identifier = (binary_expression "iVar6 + *(int *)(iVar3 + 0x298) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x298) * 8" (pointer_expression "*(int *)(iVar3 + 0x298)" * (cast_expression "(int *)(iVar3 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x298)" ( (binary_expression "iVar3 + 0x298" identifier + number_literal) )))) * number_literal))) ;) }) while (parenthesized_expression "(iVar10 < *(int *)(iVar5 + 0x18))" ( (binary_expression "iVar10 < *(int *)(iVar5 + 0x18)" identifier < (pointer_expression "*(int *)(iVar5 + 0x18)" * (cast_expression "(int *)(iVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) )) ;) })) (expression_statement "iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);" (assignment_expression "iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0)" identifier = (call_expression "SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0)" identifier (argument_list "(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0)" ( identifier , (string_literal ""Save/Image"" " string_content ") , identifier , identifier , (pointer_expression "*(undefined4 *)(iVar3 + 0x1c)" * (cast_expression "(undefined4 *)(iVar3 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_90 = local_90 + 2;" (assignment_expression "local_90 = local_90 + 2" identifier = (binary_expression "local_90 + 2" identifier + number_literal)) ;) (expression_statement "bVar11 = 0xfffffffd < local_8c;" (assignment_expression "bVar11 = 0xfffffffd < local_8c" identifier = (binary_expression "0xfffffffd < local_8c" number_literal < identifier)) ;) (expression_statement "local_8c = local_8c + 2;" (assignment_expression "local_8c = local_8c + 2" identifier = (binary_expression "local_8c + 2" identifier + number_literal)) ;) (expression_statement "local_88 = local_88 + (uint)bVar11;" (assignment_expression "local_88 = local_88 + (uint)bVar11" identifier = (binary_expression "local_88 + (uint)bVar11" identifier + (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "(local_90 < *(int *)(iVar3 + 0x1c))" ( (binary_expression "local_90 < *(int *)(iVar3 + 0x1c)" identifier < (pointer_expression "*(int *)(iVar3 + 0x1c)" * (cast_expression "(int *)(iVar3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) ))))) )) ;) })) (expression_statement "iVar6 = 0x800;" (assignment_expression "iVar6 = 0x800" identifier = number_literal) ;) (do_statement "do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);" do (compound_statement "{\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      }" { (expression_statement "WriteBlobByte(param_1,0);" (call_expression "WriteBlobByte(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal ))) ;) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) (expression_statement "DestroyImage(iVar5);" (call_expression "DestroyImage(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))) ;) (expression_statement "DestroyImage(iVar3);" (call_expression "DestroyImage(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0022cd3a;" goto statement_identifier ;) })) })) (labeled_statement "LAB_0022cd38:\n  uVar7 = 0;" statement_identifier : (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_0022cd3a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar7;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar7;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar7;\n  }" { (return_statement "return uVar7;" return identifier ;) }))) comment (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "ExceptionType": Some values do not have unique names */\n/* WARNING: Enum "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\nMagickBooleanType __regparm3\nWritePCDTile(Image *image,char *page_geometry,size_t tile_columns,size_t tile_rows,\n            ExceptionInfo *exception)\n\n{\n  int iVar1;\n  double dVar2;\n  uchar uVar3;\n  Image *image_00;\n  MagickStatusType MVar4;\n  Image *pIVar5;\n  Quantum *pQVar6;\n  size_t columns;\n  MagickBooleanType MVar7;\n  char *pcVar8;\n  int iVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  int local_90;\n  uint local_8c;\n  int local_88;\n  char *local_7c;\n  RectangleInfo geometry;\n  RectangleInfo border_info;\n  GeometryInfo geometry_info;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  SetGeometry(image,&geometry);\n  ParseMetaGeometry("768x512>",&geometry.x,&geometry.y,&geometry.width,&geometry.height);\n  if ((geometry.width & 1) != 0) {\n    geometry.width = geometry.width - 1;\n  }\n  if ((geometry.height & 1) != 0) {\n    geometry.height = geometry.height - 1;\n  }\n  image_00 = ResizeImage(image,geometry.width,geometry.height,TriangleFilter,\n                         (ExceptionInfo *)tile_rows);\n  if (image_00 != (Image *)0x0) {\n    MVar4 = ParseGeometry("768x512>",&geometry_info);\n    local_7c = (char *)(longlong)ROUND(geometry_info.rho);\n    pcVar8 = local_7c;\n    geometry.height = (size_t)local_7c;\n    geometry.width = (size_t)local_7c;\n    if ((MVar4 & 8) != 0) {\n      local_7c = (char *)(longlong)ROUND(geometry_info.sigma);\n      geometry.height = (size_t)local_7c;\n    }\n    if ((pcVar8 != (char *)image_00->columns) || (geometry.height != image_00->rows)) {\n      border_info.width = (uint)(pcVar8 + (1 - (int)image_00->columns)) >> 1;\n      border_info.height = (geometry.height - image_00->rows) + 1 >> 1;\n      pIVar5 = BorderImage(image_00,&border_info,image->compose,(ExceptionInfo *)tile_rows);\n      if (pIVar5 == (Image *)0x0) goto LAB_0022cd38;\n      DestroyImage(image_00);\n      pcVar8 = (char *)pIVar5->columns;\n      image_00 = pIVar5;\n    }\n    if (((page_geometry != pcVar8) || (image_00->rows != tile_columns)) &&\n       (pIVar5 = ResizeImage(image_00,(size_t)page_geometry,tile_columns,image_00->filter,\n                             (ExceptionInfo *)tile_rows), pIVar5 != (Image *)0x0)) {\n      DestroyImage(image_00);\n      image_00 = pIVar5;\n    }\n    TransformImageColorspace(image_00,YCCColorspace,(ExceptionInfo *)tile_rows);\n    pIVar5 = ResizeImage(image_00,image_00->columns >> 1,image_00->rows >> 1,TriangleFilter,\n                         (ExceptionInfo *)tile_rows);\n    if (pIVar5 != (Image *)0x0) {\n      if (0 < (int)image_00->rows) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          pQVar6 = GetVirtualPixels(image_00,0,local_90,image_00->columns,2,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)(image_00->columns * 2)) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map->offset]) {\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (SBORROW4(iVar9,image_00->columns * 2) !=\n                     (int)(iVar9 + image_00->columns * -2) < 0);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,pIVar5->columns,1,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          columns = pIVar5->columns;\n          if (0 < (int)columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[1].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n              columns = pIVar5->columns;\n            } while (iVar9 < (int)columns);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,columns,1,(ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)pIVar5->columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[2].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (iVar9 < (int)pIVar5->columns);\n          }\n          MVar7 = SetImageProgress(image,"Save/Image",CONCAT44(local_88,local_8c),\n                                   (ulonglong)image_00->rows);\n          if (MVar7 == MagickFalse) break;\n          local_90 = local_90 + 2;\n          bVar10 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar10;\n        } while (local_90 < (int)image_00->rows);\n      }\n      iVar9 = 0x800;\n      do {\n        WriteBlobByte(image,'\0');\n        iVar9 = iVar9 + -1;\n      } while (iVar9 != 0);\n      DestroyImage(pIVar5);\n      DestroyImage(image_00);\n      MVar7 = MagickTrue;\n      goto LAB_0022cd3a;\n    }\n  }\nLAB_0022cd38:\n  MVar7 = MagickFalse;\nLAB_0022cd3a:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return MVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment comment comment comment comment comment (function_definition "MagickBooleanType __regparm3\nWritePCDTile(Image *image,char *page_geometry,size_t tile_columns,size_t tile_rows,\n            ExceptionInfo *exception)\n\n{\n  int iVar1;\n  double dVar2;\n  uchar uVar3;\n  Image *image_00;\n  MagickStatusType MVar4;\n  Image *pIVar5;\n  Quantum *pQVar6;\n  size_t columns;\n  MagickBooleanType MVar7;\n  char *pcVar8;\n  int iVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  int local_90;\n  uint local_8c;\n  int local_88;\n  char *local_7c;\n  RectangleInfo geometry;\n  RectangleInfo border_info;\n  GeometryInfo geometry_info;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  SetGeometry(image,&geometry);\n  ParseMetaGeometry("768x512>",&geometry.x,&geometry.y,&geometry.width,&geometry.height);\n  if ((geometry.width & 1) != 0) {\n    geometry.width = geometry.width - 1;\n  }\n  if ((geometry.height & 1) != 0) {\n    geometry.height = geometry.height - 1;\n  }\n  image_00 = ResizeImage(image,geometry.width,geometry.height,TriangleFilter,\n                         (ExceptionInfo *)tile_rows);\n  if (image_00 != (Image *)0x0) {\n    MVar4 = ParseGeometry("768x512>",&geometry_info);\n    local_7c = (char *)(longlong)ROUND(geometry_info.rho);\n    pcVar8 = local_7c;\n    geometry.height = (size_t)local_7c;\n    geometry.width = (size_t)local_7c;\n    if ((MVar4 & 8) != 0) {\n      local_7c = (char *)(longlong)ROUND(geometry_info.sigma);\n      geometry.height = (size_t)local_7c;\n    }\n    if ((pcVar8 != (char *)image_00->columns) || (geometry.height != image_00->rows)) {\n      border_info.width = (uint)(pcVar8 + (1 - (int)image_00->columns)) >> 1;\n      border_info.height = (geometry.height - image_00->rows) + 1 >> 1;\n      pIVar5 = BorderImage(image_00,&border_info,image->compose,(ExceptionInfo *)tile_rows);\n      if (pIVar5 == (Image *)0x0) goto LAB_0022cd38;\n      DestroyImage(image_00);\n      pcVar8 = (char *)pIVar5->columns;\n      image_00 = pIVar5;\n    }\n    if (((page_geometry != pcVar8) || (image_00->rows != tile_columns)) &&\n       (pIVar5 = ResizeImage(image_00,(size_t)page_geometry,tile_columns,image_00->filter,\n                             (ExceptionInfo *)tile_rows), pIVar5 != (Image *)0x0)) {\n      DestroyImage(image_00);\n      image_00 = pIVar5;\n    }\n    TransformImageColorspace(image_00,YCCColorspace,(ExceptionInfo *)tile_rows);\n    pIVar5 = ResizeImage(image_00,image_00->columns >> 1,image_00->rows >> 1,TriangleFilter,\n                         (ExceptionInfo *)tile_rows);\n    if (pIVar5 != (Image *)0x0) {\n      if (0 < (int)image_00->rows) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          pQVar6 = GetVirtualPixels(image_00,0,local_90,image_00->columns,2,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)(image_00->columns * 2)) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map->offset]) {\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (SBORROW4(iVar9,image_00->columns * 2) !=\n                     (int)(iVar9 + image_00->columns * -2) < 0);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,pIVar5->columns,1,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          columns = pIVar5->columns;\n          if (0 < (int)columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[1].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n              columns = pIVar5->columns;\n            } while (iVar9 < (int)columns);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,columns,1,(ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)pIVar5->columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[2].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (iVar9 < (int)pIVar5->columns);\n          }\n          MVar7 = SetImageProgress(image,"Save/Image",CONCAT44(local_88,local_8c),\n                                   (ulonglong)image_00->rows);\n          if (MVar7 == MagickFalse) break;\n          local_90 = local_90 + 2;\n          bVar10 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar10;\n        } while (local_90 < (int)image_00->rows);\n      }\n      iVar9 = 0x800;\n      do {\n        WriteBlobByte(image,'\0');\n        iVar9 = iVar9 + -1;\n      } while (iVar9 != 0);\n      DestroyImage(pIVar5);\n      DestroyImage(image_00);\n      MVar7 = MagickTrue;\n      goto LAB_0022cd3a;\n    }\n  }\nLAB_0022cd38:\n  MVar7 = MagickFalse;\nLAB_0022cd3a:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return MVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "WritePCDTile(Image *image,char *page_geometry,size_t tile_columns,size_t tile_rows,\n            ExceptionInfo *exception)" identifier (parameter_list "(Image *image,char *page_geometry,size_t tile_columns,size_t tile_rows,\n            ExceptionInfo *exception)" ( (parameter_declaration "Image *image" type_identifier (pointer_declarator "*image" * identifier)) , (parameter_declaration "char *page_geometry" primitive_type (pointer_declarator "*page_geometry" * identifier)) , (parameter_declaration "size_t tile_columns" primitive_type identifier) , (parameter_declaration "size_t tile_rows" primitive_type identifier) , (parameter_declaration "ExceptionInfo *exception" type_identifier (pointer_declarator "*exception" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  double dVar2;\n  uchar uVar3;\n  Image *image_00;\n  MagickStatusType MVar4;\n  Image *pIVar5;\n  Quantum *pQVar6;\n  size_t columns;\n  MagickBooleanType MVar7;\n  char *pcVar8;\n  int iVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  int local_90;\n  uint local_8c;\n  int local_88;\n  char *local_7c;\n  RectangleInfo geometry;\n  RectangleInfo border_info;\n  GeometryInfo geometry_info;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  SetGeometry(image,&geometry);\n  ParseMetaGeometry("768x512>",&geometry.x,&geometry.y,&geometry.width,&geometry.height);\n  if ((geometry.width & 1) != 0) {\n    geometry.width = geometry.width - 1;\n  }\n  if ((geometry.height & 1) != 0) {\n    geometry.height = geometry.height - 1;\n  }\n  image_00 = ResizeImage(image,geometry.width,geometry.height,TriangleFilter,\n                         (ExceptionInfo *)tile_rows);\n  if (image_00 != (Image *)0x0) {\n    MVar4 = ParseGeometry("768x512>",&geometry_info);\n    local_7c = (char *)(longlong)ROUND(geometry_info.rho);\n    pcVar8 = local_7c;\n    geometry.height = (size_t)local_7c;\n    geometry.width = (size_t)local_7c;\n    if ((MVar4 & 8) != 0) {\n      local_7c = (char *)(longlong)ROUND(geometry_info.sigma);\n      geometry.height = (size_t)local_7c;\n    }\n    if ((pcVar8 != (char *)image_00->columns) || (geometry.height != image_00->rows)) {\n      border_info.width = (uint)(pcVar8 + (1 - (int)image_00->columns)) >> 1;\n      border_info.height = (geometry.height - image_00->rows) + 1 >> 1;\n      pIVar5 = BorderImage(image_00,&border_info,image->compose,(ExceptionInfo *)tile_rows);\n      if (pIVar5 == (Image *)0x0) goto LAB_0022cd38;\n      DestroyImage(image_00);\n      pcVar8 = (char *)pIVar5->columns;\n      image_00 = pIVar5;\n    }\n    if (((page_geometry != pcVar8) || (image_00->rows != tile_columns)) &&\n       (pIVar5 = ResizeImage(image_00,(size_t)page_geometry,tile_columns,image_00->filter,\n                             (ExceptionInfo *)tile_rows), pIVar5 != (Image *)0x0)) {\n      DestroyImage(image_00);\n      image_00 = pIVar5;\n    }\n    TransformImageColorspace(image_00,YCCColorspace,(ExceptionInfo *)tile_rows);\n    pIVar5 = ResizeImage(image_00,image_00->columns >> 1,image_00->rows >> 1,TriangleFilter,\n                         (ExceptionInfo *)tile_rows);\n    if (pIVar5 != (Image *)0x0) {\n      if (0 < (int)image_00->rows) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          pQVar6 = GetVirtualPixels(image_00,0,local_90,image_00->columns,2,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)(image_00->columns * 2)) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map->offset]) {\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (SBORROW4(iVar9,image_00->columns * 2) !=\n                     (int)(iVar9 + image_00->columns * -2) < 0);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,pIVar5->columns,1,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          columns = pIVar5->columns;\n          if (0 < (int)columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[1].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n              columns = pIVar5->columns;\n            } while (iVar9 < (int)columns);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,columns,1,(ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)pIVar5->columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[2].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (iVar9 < (int)pIVar5->columns);\n          }\n          MVar7 = SetImageProgress(image,"Save/Image",CONCAT44(local_88,local_8c),\n                                   (ulonglong)image_00->rows);\n          if (MVar7 == MagickFalse) break;\n          local_90 = local_90 + 2;\n          bVar10 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar10;\n        } while (local_90 < (int)image_00->rows);\n      }\n      iVar9 = 0x800;\n      do {\n        WriteBlobByte(image,'\0');\n        iVar9 = iVar9 + -1;\n      } while (iVar9 != 0);\n      DestroyImage(pIVar5);\n      DestroyImage(image_00);\n      MVar7 = MagickTrue;\n      goto LAB_0022cd3a;\n    }\n  }\nLAB_0022cd38:\n  MVar7 = MagickFalse;\nLAB_0022cd3a:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return MVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "uchar uVar3;" type_identifier identifier ;) (declaration "Image *image_00;" type_identifier (pointer_declarator "*image_00" * identifier) ;) (declaration "MagickStatusType MVar4;" type_identifier identifier ;) (declaration "Image *pIVar5;" type_identifier (pointer_declarator "*pIVar5" * identifier) ;) (declaration "Quantum *pQVar6;" type_identifier (pointer_declarator "*pQVar6" * identifier) ;) (declaration "size_t columns;" primitive_type identifier ;) (declaration "MagickBooleanType MVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "uint local_8c;" type_identifier identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "char *local_7c;" primitive_type (pointer_declarator "*local_7c" * identifier) ;) (declaration "RectangleInfo geometry;" type_identifier identifier ;) (declaration "RectangleInfo border_info;" type_identifier identifier ;) (declaration "GeometryInfo geometry_info;" type_identifier identifier ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "SetGeometry(image,&geometry);" (call_expression "SetGeometry(image,&geometry)" identifier (argument_list "(image,&geometry)" ( identifier , (pointer_expression "&geometry" & identifier) ))) ;) (expression_statement "ParseMetaGeometry("768x512>",&geometry.x,&geometry.y,&geometry.width,&geometry.height);" (call_expression "ParseMetaGeometry("768x512>",&geometry.x,&geometry.y,&geometry.width,&geometry.height)" identifier (argument_list "("768x512>",&geometry.x,&geometry.y,&geometry.width,&geometry.height)" ( (string_literal ""768x512>"" " string_content ") , (pointer_expression "&geometry.x" & (field_expression "geometry.x" identifier . field_identifier)) , (pointer_expression "&geometry.y" & (field_expression "geometry.y" identifier . field_identifier)) , (pointer_expression "&geometry.width" & (field_expression "geometry.width" identifier . field_identifier)) , (pointer_expression "&geometry.height" & (field_expression "geometry.height" identifier . field_identifier)) ))) ;) (if_statement "if ((geometry.width & 1) != 0) {\n    geometry.width = geometry.width - 1;\n  }" if (parenthesized_expression "((geometry.width & 1) != 0)" ( (binary_expression "(geometry.width & 1) != 0" (parenthesized_expression "(geometry.width & 1)" ( (binary_expression "geometry.width & 1" (field_expression "geometry.width" identifier . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    geometry.width = geometry.width - 1;\n  }" { (expression_statement "geometry.width = geometry.width - 1;" (assignment_expression "geometry.width = geometry.width - 1" (field_expression "geometry.width" identifier . field_identifier) = (binary_expression "geometry.width - 1" (field_expression "geometry.width" identifier . field_identifier) - number_literal)) ;) })) (if_statement "if ((geometry.height & 1) != 0) {\n    geometry.height = geometry.height - 1;\n  }" if (parenthesized_expression "((geometry.height & 1) != 0)" ( (binary_expression "(geometry.height & 1) != 0" (parenthesized_expression "(geometry.height & 1)" ( (binary_expression "geometry.height & 1" (field_expression "geometry.height" identifier . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    geometry.height = geometry.height - 1;\n  }" { (expression_statement "geometry.height = geometry.height - 1;" (assignment_expression "geometry.height = geometry.height - 1" (field_expression "geometry.height" identifier . field_identifier) = (binary_expression "geometry.height - 1" (field_expression "geometry.height" identifier . field_identifier) - number_literal)) ;) })) (expression_statement "image_00 = ResizeImage(image,geometry.width,geometry.height,TriangleFilter,\n                         (ExceptionInfo *)tile_rows);" (assignment_expression "image_00 = ResizeImage(image,geometry.width,geometry.height,TriangleFilter,\n                         (ExceptionInfo *)tile_rows)" identifier = (call_expression "ResizeImage(image,geometry.width,geometry.height,TriangleFilter,\n                         (ExceptionInfo *)tile_rows)" identifier (argument_list "(image,geometry.width,geometry.height,TriangleFilter,\n                         (ExceptionInfo *)tile_rows)" ( identifier , (field_expression "geometry.width" identifier . field_identifier) , (field_expression "geometry.height" identifier . field_identifier) , identifier , (cast_expression "(ExceptionInfo *)tile_rows" ( (type_descriptor "ExceptionInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (image_00 != (Image *)0x0) {\n    MVar4 = ParseGeometry("768x512>",&geometry_info);\n    local_7c = (char *)(longlong)ROUND(geometry_info.rho);\n    pcVar8 = local_7c;\n    geometry.height = (size_t)local_7c;\n    geometry.width = (size_t)local_7c;\n    if ((MVar4 & 8) != 0) {\n      local_7c = (char *)(longlong)ROUND(geometry_info.sigma);\n      geometry.height = (size_t)local_7c;\n    }\n    if ((pcVar8 != (char *)image_00->columns) || (geometry.height != image_00->rows)) {\n      border_info.width = (uint)(pcVar8 + (1 - (int)image_00->columns)) >> 1;\n      border_info.height = (geometry.height - image_00->rows) + 1 >> 1;\n      pIVar5 = BorderImage(image_00,&border_info,image->compose,(ExceptionInfo *)tile_rows);\n      if (pIVar5 == (Image *)0x0) goto LAB_0022cd38;\n      DestroyImage(image_00);\n      pcVar8 = (char *)pIVar5->columns;\n      image_00 = pIVar5;\n    }\n    if (((page_geometry != pcVar8) || (image_00->rows != tile_columns)) &&\n       (pIVar5 = ResizeImage(image_00,(size_t)page_geometry,tile_columns,image_00->filter,\n                             (ExceptionInfo *)tile_rows), pIVar5 != (Image *)0x0)) {\n      DestroyImage(image_00);\n      image_00 = pIVar5;\n    }\n    TransformImageColorspace(image_00,YCCColorspace,(ExceptionInfo *)tile_rows);\n    pIVar5 = ResizeImage(image_00,image_00->columns >> 1,image_00->rows >> 1,TriangleFilter,\n                         (ExceptionInfo *)tile_rows);\n    if (pIVar5 != (Image *)0x0) {\n      if (0 < (int)image_00->rows) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          pQVar6 = GetVirtualPixels(image_00,0,local_90,image_00->columns,2,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)(image_00->columns * 2)) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map->offset]) {\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (SBORROW4(iVar9,image_00->columns * 2) !=\n                     (int)(iVar9 + image_00->columns * -2) < 0);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,pIVar5->columns,1,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          columns = pIVar5->columns;\n          if (0 < (int)columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[1].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n              columns = pIVar5->columns;\n            } while (iVar9 < (int)columns);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,columns,1,(ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)pIVar5->columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[2].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (iVar9 < (int)pIVar5->columns);\n          }\n          MVar7 = SetImageProgress(image,"Save/Image",CONCAT44(local_88,local_8c),\n                                   (ulonglong)image_00->rows);\n          if (MVar7 == MagickFalse) break;\n          local_90 = local_90 + 2;\n          bVar10 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar10;\n        } while (local_90 < (int)image_00->rows);\n      }\n      iVar9 = 0x800;\n      do {\n        WriteBlobByte(image,'\0');\n        iVar9 = iVar9 + -1;\n      } while (iVar9 != 0);\n      DestroyImage(pIVar5);\n      DestroyImage(image_00);\n      MVar7 = MagickTrue;\n      goto LAB_0022cd3a;\n    }\n  }" if (parenthesized_expression "(image_00 != (Image *)0x0)" ( (binary_expression "image_00 != (Image *)0x0" identifier != (cast_expression "(Image *)0x0" ( (type_descriptor "Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    MVar4 = ParseGeometry("768x512>",&geometry_info);\n    local_7c = (char *)(longlong)ROUND(geometry_info.rho);\n    pcVar8 = local_7c;\n    geometry.height = (size_t)local_7c;\n    geometry.width = (size_t)local_7c;\n    if ((MVar4 & 8) != 0) {\n      local_7c = (char *)(longlong)ROUND(geometry_info.sigma);\n      geometry.height = (size_t)local_7c;\n    }\n    if ((pcVar8 != (char *)image_00->columns) || (geometry.height != image_00->rows)) {\n      border_info.width = (uint)(pcVar8 + (1 - (int)image_00->columns)) >> 1;\n      border_info.height = (geometry.height - image_00->rows) + 1 >> 1;\n      pIVar5 = BorderImage(image_00,&border_info,image->compose,(ExceptionInfo *)tile_rows);\n      if (pIVar5 == (Image *)0x0) goto LAB_0022cd38;\n      DestroyImage(image_00);\n      pcVar8 = (char *)pIVar5->columns;\n      image_00 = pIVar5;\n    }\n    if (((page_geometry != pcVar8) || (image_00->rows != tile_columns)) &&\n       (pIVar5 = ResizeImage(image_00,(size_t)page_geometry,tile_columns,image_00->filter,\n                             (ExceptionInfo *)tile_rows), pIVar5 != (Image *)0x0)) {\n      DestroyImage(image_00);\n      image_00 = pIVar5;\n    }\n    TransformImageColorspace(image_00,YCCColorspace,(ExceptionInfo *)tile_rows);\n    pIVar5 = ResizeImage(image_00,image_00->columns >> 1,image_00->rows >> 1,TriangleFilter,\n                         (ExceptionInfo *)tile_rows);\n    if (pIVar5 != (Image *)0x0) {\n      if (0 < (int)image_00->rows) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          pQVar6 = GetVirtualPixels(image_00,0,local_90,image_00->columns,2,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)(image_00->columns * 2)) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map->offset]) {\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (SBORROW4(iVar9,image_00->columns * 2) !=\n                     (int)(iVar9 + image_00->columns * -2) < 0);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,pIVar5->columns,1,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          columns = pIVar5->columns;\n          if (0 < (int)columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[1].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n              columns = pIVar5->columns;\n            } while (iVar9 < (int)columns);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,columns,1,(ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)pIVar5->columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[2].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (iVar9 < (int)pIVar5->columns);\n          }\n          MVar7 = SetImageProgress(image,"Save/Image",CONCAT44(local_88,local_8c),\n                                   (ulonglong)image_00->rows);\n          if (MVar7 == MagickFalse) break;\n          local_90 = local_90 + 2;\n          bVar10 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar10;\n        } while (local_90 < (int)image_00->rows);\n      }\n      iVar9 = 0x800;\n      do {\n        WriteBlobByte(image,'\0');\n        iVar9 = iVar9 + -1;\n      } while (iVar9 != 0);\n      DestroyImage(pIVar5);\n      DestroyImage(image_00);\n      MVar7 = MagickTrue;\n      goto LAB_0022cd3a;\n    }\n  }" { (expression_statement "MVar4 = ParseGeometry("768x512>",&geometry_info);" (assignment_expression "MVar4 = ParseGeometry("768x512>",&geometry_info)" identifier = (call_expression "ParseGeometry("768x512>",&geometry_info)" identifier (argument_list "("768x512>",&geometry_info)" ( (string_literal ""768x512>"" " string_content ") , (pointer_expression "&geometry_info" & identifier) )))) ;) (expression_statement "local_7c = (char *)(longlong)ROUND(geometry_info.rho);" (assignment_expression "local_7c = (char *)(longlong)ROUND(geometry_info.rho)" identifier = (cast_expression "(char *)(longlong)ROUND(geometry_info.rho)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(longlong)ROUND(geometry_info.rho)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(geometry_info.rho)" identifier (argument_list "(geometry_info.rho)" ( (field_expression "geometry_info.rho" identifier . field_identifier) )))))) ;) (expression_statement "pcVar8 = local_7c;" (assignment_expression "pcVar8 = local_7c" identifier = identifier) ;) (expression_statement "geometry.height = (size_t)local_7c;" (assignment_expression "geometry.height = (size_t)local_7c" (field_expression "geometry.height" identifier . field_identifier) = (cast_expression "(size_t)local_7c" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (expression_statement "geometry.width = (size_t)local_7c;" (assignment_expression "geometry.width = (size_t)local_7c" (field_expression "geometry.width" identifier . field_identifier) = (cast_expression "(size_t)local_7c" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (if_statement "if ((MVar4 & 8) != 0) {\n      local_7c = (char *)(longlong)ROUND(geometry_info.sigma);\n      geometry.height = (size_t)local_7c;\n    }" if (parenthesized_expression "((MVar4 & 8) != 0)" ( (binary_expression "(MVar4 & 8) != 0" (parenthesized_expression "(MVar4 & 8)" ( (binary_expression "MVar4 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_7c = (char *)(longlong)ROUND(geometry_info.sigma);\n      geometry.height = (size_t)local_7c;\n    }" { (expression_statement "local_7c = (char *)(longlong)ROUND(geometry_info.sigma);" (assignment_expression "local_7c = (char *)(longlong)ROUND(geometry_info.sigma)" identifier = (cast_expression "(char *)(longlong)ROUND(geometry_info.sigma)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(longlong)ROUND(geometry_info.sigma)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(geometry_info.sigma)" identifier (argument_list "(geometry_info.sigma)" ( (field_expression "geometry_info.sigma" identifier . field_identifier) )))))) ;) (expression_statement "geometry.height = (size_t)local_7c;" (assignment_expression "geometry.height = (size_t)local_7c" (field_expression "geometry.height" identifier . field_identifier) = (cast_expression "(size_t)local_7c" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) })) (if_statement "if ((pcVar8 != (char *)image_00->columns) || (geometry.height != image_00->rows)) {\n      border_info.width = (uint)(pcVar8 + (1 - (int)image_00->columns)) >> 1;\n      border_info.height = (geometry.height - image_00->rows) + 1 >> 1;\n      pIVar5 = BorderImage(image_00,&border_info,image->compose,(ExceptionInfo *)tile_rows);\n      if (pIVar5 == (Image *)0x0) goto LAB_0022cd38;\n      DestroyImage(image_00);\n      pcVar8 = (char *)pIVar5->columns;\n      image_00 = pIVar5;\n    }" if (parenthesized_expression "((pcVar8 != (char *)image_00->columns) || (geometry.height != image_00->rows))" ( (binary_expression "(pcVar8 != (char *)image_00->columns) || (geometry.height != image_00->rows)" (parenthesized_expression "(pcVar8 != (char *)image_00->columns)" ( (binary_expression "pcVar8 != (char *)image_00->columns" identifier != (cast_expression "(char *)image_00->columns" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "image_00->columns" identifier -> field_identifier))) )) || (parenthesized_expression "(geometry.height != image_00->rows)" ( (binary_expression "geometry.height != image_00->rows" (field_expression "geometry.height" identifier . field_identifier) != (field_expression "image_00->rows" identifier -> field_identifier)) ))) )) (compound_statement "{\n      border_info.width = (uint)(pcVar8 + (1 - (int)image_00->columns)) >> 1;\n      border_info.height = (geometry.height - image_00->rows) + 1 >> 1;\n      pIVar5 = BorderImage(image_00,&border_info,image->compose,(ExceptionInfo *)tile_rows);\n      if (pIVar5 == (Image *)0x0) goto LAB_0022cd38;\n      DestroyImage(image_00);\n      pcVar8 = (char *)pIVar5->columns;\n      image_00 = pIVar5;\n    }" { (expression_statement "border_info.width = (uint)(pcVar8 + (1 - (int)image_00->columns)) >> 1;" (assignment_expression "border_info.width = (uint)(pcVar8 + (1 - (int)image_00->columns)) >> 1" (field_expression "border_info.width" identifier . field_identifier) = (binary_expression "(uint)(pcVar8 + (1 - (int)image_00->columns)) >> 1" (call_expression "(uint)(pcVar8 + (1 - (int)image_00->columns))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar8 + (1 - (int)image_00->columns))" ( (binary_expression "pcVar8 + (1 - (int)image_00->columns)" identifier + (parenthesized_expression "(1 - (int)image_00->columns)" ( (binary_expression "1 - (int)image_00->columns" number_literal - (cast_expression "(int)image_00->columns" ( (type_descriptor "int" primitive_type) ) (field_expression "image_00->columns" identifier -> field_identifier))) ))) ))) >> number_literal)) ;) (expression_statement "border_info.height = (geometry.height - image_00->rows) + 1 >> 1;" (assignment_expression "border_info.height = (geometry.height - image_00->rows) + 1 >> 1" (field_expression "border_info.height" identifier . field_identifier) = (binary_expression "(geometry.height - image_00->rows) + 1 >> 1" (binary_expression "(geometry.height - image_00->rows) + 1" (parenthesized_expression "(geometry.height - image_00->rows)" ( (binary_expression "geometry.height - image_00->rows" (field_expression "geometry.height" identifier . field_identifier) - (field_expression "image_00->rows" identifier -> field_identifier)) )) + number_literal) >> number_literal)) ;) (expression_statement "pIVar5 = BorderImage(image_00,&border_info,image->compose,(ExceptionInfo *)tile_rows);" (assignment_expression "pIVar5 = BorderImage(image_00,&border_info,image->compose,(ExceptionInfo *)tile_rows)" identifier = (call_expression "BorderImage(image_00,&border_info,image->compose,(ExceptionInfo *)tile_rows)" identifier (argument_list "(image_00,&border_info,image->compose,(ExceptionInfo *)tile_rows)" ( identifier , (pointer_expression "&border_info" & identifier) , (field_expression "image->compose" identifier -> field_identifier) , (cast_expression "(ExceptionInfo *)tile_rows" ( (type_descriptor "ExceptionInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (pIVar5 == (Image *)0x0) goto LAB_0022cd38;" if (parenthesized_expression "(pIVar5 == (Image *)0x0)" ( (binary_expression "pIVar5 == (Image *)0x0" identifier == (cast_expression "(Image *)0x0" ( (type_descriptor "Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0022cd38;" goto statement_identifier ;)) (expression_statement "DestroyImage(image_00);" (call_expression "DestroyImage(image_00)" identifier (argument_list "(image_00)" ( identifier ))) ;) (expression_statement "pcVar8 = (char *)pIVar5->columns;" (assignment_expression "pcVar8 = (char *)pIVar5->columns" identifier = (cast_expression "(char *)pIVar5->columns" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "pIVar5->columns" identifier -> field_identifier))) ;) (expression_statement "image_00 = pIVar5;" (assignment_expression "image_00 = pIVar5" identifier = identifier) ;) })) (if_statement "if (((page_geometry != pcVar8) || (image_00->rows != tile_columns)) &&\n       (pIVar5 = ResizeImage(image_00,(size_t)page_geometry,tile_columns,image_00->filter,\n                             (ExceptionInfo *)tile_rows), pIVar5 != (Image *)0x0)) {\n      DestroyImage(image_00);\n      image_00 = pIVar5;\n    }" if (parenthesized_expression "(((page_geometry != pcVar8) || (image_00->rows != tile_columns)) &&\n       (pIVar5 = ResizeImage(image_00,(size_t)page_geometry,tile_columns,image_00->filter,\n                             (ExceptionInfo *)tile_rows), pIVar5 != (Image *)0x0))" ( (binary_expression "((page_geometry != pcVar8) || (image_00->rows != tile_columns)) &&\n       (pIVar5 = ResizeImage(image_00,(size_t)page_geometry,tile_columns,image_00->filter,\n                             (ExceptionInfo *)tile_rows), pIVar5 != (Image *)0x0)" (parenthesized_expression "((page_geometry != pcVar8) || (image_00->rows != tile_columns))" ( (binary_expression "(page_geometry != pcVar8) || (image_00->rows != tile_columns)" (parenthesized_expression "(page_geometry != pcVar8)" ( (binary_expression "page_geometry != pcVar8" identifier != identifier) )) || (parenthesized_expression "(image_00->rows != tile_columns)" ( (binary_expression "image_00->rows != tile_columns" (field_expression "image_00->rows" identifier -> field_identifier) != identifier) ))) )) && (parenthesized_expression "(pIVar5 = ResizeImage(image_00,(size_t)page_geometry,tile_columns,image_00->filter,\n                             (ExceptionInfo *)tile_rows), pIVar5 != (Image *)0x0)" ( (comma_expression "pIVar5 = ResizeImage(image_00,(size_t)page_geometry,tile_columns,image_00->filter,\n                             (ExceptionInfo *)tile_rows), pIVar5 != (Image *)0x0" (assignment_expression "pIVar5 = ResizeImage(image_00,(size_t)page_geometry,tile_columns,image_00->filter,\n                             (ExceptionInfo *)tile_rows)" identifier = (call_expression "ResizeImage(image_00,(size_t)page_geometry,tile_columns,image_00->filter,\n                             (ExceptionInfo *)tile_rows)" identifier (argument_list "(image_00,(size_t)page_geometry,tile_columns,image_00->filter,\n                             (ExceptionInfo *)tile_rows)" ( identifier , (cast_expression "(size_t)page_geometry" ( (type_descriptor "size_t" primitive_type) ) identifier) , identifier , (field_expression "image_00->filter" identifier -> field_identifier) , (cast_expression "(ExceptionInfo *)tile_rows" ( (type_descriptor "ExceptionInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) , (binary_expression "pIVar5 != (Image *)0x0" identifier != (cast_expression "(Image *)0x0" ( (type_descriptor "Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      DestroyImage(image_00);\n      image_00 = pIVar5;\n    }" { (expression_statement "DestroyImage(image_00);" (call_expression "DestroyImage(image_00)" identifier (argument_list "(image_00)" ( identifier ))) ;) (expression_statement "image_00 = pIVar5;" (assignment_expression "image_00 = pIVar5" identifier = identifier) ;) })) (expression_statement "TransformImageColorspace(image_00,YCCColorspace,(ExceptionInfo *)tile_rows);" (call_expression "TransformImageColorspace(image_00,YCCColorspace,(ExceptionInfo *)tile_rows)" identifier (argument_list "(image_00,YCCColorspace,(ExceptionInfo *)tile_rows)" ( identifier , identifier , (cast_expression "(ExceptionInfo *)tile_rows" ( (type_descriptor "ExceptionInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "pIVar5 = ResizeImage(image_00,image_00->columns >> 1,image_00->rows >> 1,TriangleFilter,\n                         (ExceptionInfo *)tile_rows);" (assignment_expression "pIVar5 = ResizeImage(image_00,image_00->columns >> 1,image_00->rows >> 1,TriangleFilter,\n                         (ExceptionInfo *)tile_rows)" identifier = (call_expression "ResizeImage(image_00,image_00->columns >> 1,image_00->rows >> 1,TriangleFilter,\n                         (ExceptionInfo *)tile_rows)" identifier (argument_list "(image_00,image_00->columns >> 1,image_00->rows >> 1,TriangleFilter,\n                         (ExceptionInfo *)tile_rows)" ( identifier , (binary_expression "image_00->columns >> 1" (field_expression "image_00->columns" identifier -> field_identifier) >> number_literal) , (binary_expression "image_00->rows >> 1" (field_expression "image_00->rows" identifier -> field_identifier) >> number_literal) , identifier , (cast_expression "(ExceptionInfo *)tile_rows" ( (type_descriptor "ExceptionInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (pIVar5 != (Image *)0x0) {\n      if (0 < (int)image_00->rows) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          pQVar6 = GetVirtualPixels(image_00,0,local_90,image_00->columns,2,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)(image_00->columns * 2)) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map->offset]) {\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (SBORROW4(iVar9,image_00->columns * 2) !=\n                     (int)(iVar9 + image_00->columns * -2) < 0);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,pIVar5->columns,1,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          columns = pIVar5->columns;\n          if (0 < (int)columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[1].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n              columns = pIVar5->columns;\n            } while (iVar9 < (int)columns);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,columns,1,(ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)pIVar5->columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[2].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (iVar9 < (int)pIVar5->columns);\n          }\n          MVar7 = SetImageProgress(image,"Save/Image",CONCAT44(local_88,local_8c),\n                                   (ulonglong)image_00->rows);\n          if (MVar7 == MagickFalse) break;\n          local_90 = local_90 + 2;\n          bVar10 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar10;\n        } while (local_90 < (int)image_00->rows);\n      }\n      iVar9 = 0x800;\n      do {\n        WriteBlobByte(image,'\0');\n        iVar9 = iVar9 + -1;\n      } while (iVar9 != 0);\n      DestroyImage(pIVar5);\n      DestroyImage(image_00);\n      MVar7 = MagickTrue;\n      goto LAB_0022cd3a;\n    }" if (parenthesized_expression "(pIVar5 != (Image *)0x0)" ( (binary_expression "pIVar5 != (Image *)0x0" identifier != (cast_expression "(Image *)0x0" ( (type_descriptor "Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (0 < (int)image_00->rows) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          pQVar6 = GetVirtualPixels(image_00,0,local_90,image_00->columns,2,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)(image_00->columns * 2)) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map->offset]) {\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (SBORROW4(iVar9,image_00->columns * 2) !=\n                     (int)(iVar9 + image_00->columns * -2) < 0);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,pIVar5->columns,1,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          columns = pIVar5->columns;\n          if (0 < (int)columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[1].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n              columns = pIVar5->columns;\n            } while (iVar9 < (int)columns);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,columns,1,(ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)pIVar5->columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[2].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (iVar9 < (int)pIVar5->columns);\n          }\n          MVar7 = SetImageProgress(image,"Save/Image",CONCAT44(local_88,local_8c),\n                                   (ulonglong)image_00->rows);\n          if (MVar7 == MagickFalse) break;\n          local_90 = local_90 + 2;\n          bVar10 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar10;\n        } while (local_90 < (int)image_00->rows);\n      }\n      iVar9 = 0x800;\n      do {\n        WriteBlobByte(image,'\0');\n        iVar9 = iVar9 + -1;\n      } while (iVar9 != 0);\n      DestroyImage(pIVar5);\n      DestroyImage(image_00);\n      MVar7 = MagickTrue;\n      goto LAB_0022cd3a;\n    }" { (if_statement "if (0 < (int)image_00->rows) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          pQVar6 = GetVirtualPixels(image_00,0,local_90,image_00->columns,2,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)(image_00->columns * 2)) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map->offset]) {\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (SBORROW4(iVar9,image_00->columns * 2) !=\n                     (int)(iVar9 + image_00->columns * -2) < 0);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,pIVar5->columns,1,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          columns = pIVar5->columns;\n          if (0 < (int)columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[1].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n              columns = pIVar5->columns;\n            } while (iVar9 < (int)columns);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,columns,1,(ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)pIVar5->columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[2].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (iVar9 < (int)pIVar5->columns);\n          }\n          MVar7 = SetImageProgress(image,"Save/Image",CONCAT44(local_88,local_8c),\n                                   (ulonglong)image_00->rows);\n          if (MVar7 == MagickFalse) break;\n          local_90 = local_90 + 2;\n          bVar10 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar10;\n        } while (local_90 < (int)image_00->rows);\n      }" if (parenthesized_expression "(0 < (int)image_00->rows)" ( (binary_expression "0 < (int)image_00->rows" number_literal < (cast_expression "(int)image_00->rows" ( (type_descriptor "int" primitive_type) ) (field_expression "image_00->rows" identifier -> field_identifier))) )) (compound_statement "{\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          pQVar6 = GetVirtualPixels(image_00,0,local_90,image_00->columns,2,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)(image_00->columns * 2)) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map->offset]) {\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (SBORROW4(iVar9,image_00->columns * 2) !=\n                     (int)(iVar9 + image_00->columns * -2) < 0);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,pIVar5->columns,1,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          columns = pIVar5->columns;\n          if (0 < (int)columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[1].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n              columns = pIVar5->columns;\n            } while (iVar9 < (int)columns);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,columns,1,(ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)pIVar5->columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[2].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (iVar9 < (int)pIVar5->columns);\n          }\n          MVar7 = SetImageProgress(image,"Save/Image",CONCAT44(local_88,local_8c),\n                                   (ulonglong)image_00->rows);\n          if (MVar7 == MagickFalse) break;\n          local_90 = local_90 + 2;\n          bVar10 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar10;\n        } while (local_90 < (int)image_00->rows);\n      }" { (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (do_statement "do {\n          pQVar6 = GetVirtualPixels(image_00,0,local_90,image_00->columns,2,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)(image_00->columns * 2)) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map->offset]) {\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (SBORROW4(iVar9,image_00->columns * 2) !=\n                     (int)(iVar9 + image_00->columns * -2) < 0);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,pIVar5->columns,1,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          columns = pIVar5->columns;\n          if (0 < (int)columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[1].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n              columns = pIVar5->columns;\n            } while (iVar9 < (int)columns);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,columns,1,(ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)pIVar5->columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[2].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (iVar9 < (int)pIVar5->columns);\n          }\n          MVar7 = SetImageProgress(image,"Save/Image",CONCAT44(local_88,local_8c),\n                                   (ulonglong)image_00->rows);\n          if (MVar7 == MagickFalse) break;\n          local_90 = local_90 + 2;\n          bVar10 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar10;\n        } while (local_90 < (int)image_00->rows);" do (compound_statement "{\n          pQVar6 = GetVirtualPixels(image_00,0,local_90,image_00->columns,2,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)(image_00->columns * 2)) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map->offset]) {\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (SBORROW4(iVar9,image_00->columns * 2) !=\n                     (int)(iVar9 + image_00->columns * -2) < 0);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,pIVar5->columns,1,\n                                    (ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          columns = pIVar5->columns;\n          if (0 < (int)columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[1].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n              columns = pIVar5->columns;\n            } while (iVar9 < (int)columns);\n          }\n          pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,columns,1,(ExceptionInfo *)tile_rows);\n          if (pQVar6 == (Quantum *)0x0) break;\n          if (0 < (int)pIVar5->columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[2].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (iVar9 < (int)pIVar5->columns);\n          }\n          MVar7 = SetImageProgress(image,"Save/Image",CONCAT44(local_88,local_8c),\n                                   (ulonglong)image_00->rows);\n          if (MVar7 == MagickFalse) break;\n          local_90 = local_90 + 2;\n          bVar10 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar10;\n        }" { (expression_statement "pQVar6 = GetVirtualPixels(image_00,0,local_90,image_00->columns,2,\n                                    (ExceptionInfo *)tile_rows);" (assignment_expression "pQVar6 = GetVirtualPixels(image_00,0,local_90,image_00->columns,2,\n                                    (ExceptionInfo *)tile_rows)" identifier = (call_expression "GetVirtualPixels(image_00,0,local_90,image_00->columns,2,\n                                    (ExceptionInfo *)tile_rows)" identifier (argument_list "(image_00,0,local_90,image_00->columns,2,\n                                    (ExceptionInfo *)tile_rows)" ( identifier , number_literal , identifier , (field_expression "image_00->columns" identifier -> field_identifier) , number_literal , (cast_expression "(ExceptionInfo *)tile_rows" ( (type_descriptor "ExceptionInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (pQVar6 == (Quantum *)0x0) break;" if (parenthesized_expression "(pQVar6 == (Quantum *)0x0)" ( (binary_expression "pQVar6 == (Quantum *)0x0" identifier == (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (if_statement "if (0 < (int)(image_00->columns * 2)) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map->offset]) {\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (SBORROW4(iVar9,image_00->columns * 2) !=\n                     (int)(iVar9 + image_00->columns * -2) < 0);\n          }" if (parenthesized_expression "(0 < (int)(image_00->columns * 2))" ( (binary_expression "0 < (int)(image_00->columns * 2)" number_literal < (cast_expression "(int)(image_00->columns * 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(image_00->columns * 2)" ( (binary_expression "image_00->columns * 2" (field_expression "image_00->columns" identifier -> field_identifier) * number_literal) )))) )) (compound_statement "{\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map->offset]) {\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (SBORROW4(iVar9,image_00->columns * 2) !=\n                     (int)(iVar9 + image_00->columns * -2) < 0);\n          }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map->offset]) {\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (SBORROW4(iVar9,image_00->columns * 2) !=\n                     (int)(iVar9 + image_00->columns * -2) < 0);" do (compound_statement "{\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map->offset]) {\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            }" { (expression_statement "uVar3 = '\0';" (assignment_expression "uVar3 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < pQVar6[image_00->channel_map->offset]) {\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }" if (parenthesized_expression "(0.0 < pQVar6[image_00->channel_map->offset])" ( (binary_expression "0.0 < pQVar6[image_00->channel_map->offset]" number_literal < (subscript_expression "pQVar6[image_00->channel_map->offset]" identifier [ (field_expression "image_00->channel_map->offset" (field_expression "image_00->channel_map" identifier -> field_identifier) -> field_identifier) ])) )) (compound_statement "{\n                dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }" { (expression_statement "dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0;" (assignment_expression "dVar2 = pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0" identifier = (binary_expression "pQVar6[image_00->channel_map->offset] / (double)DAT_002a7ff0" (subscript_expression "pQVar6[image_00->channel_map->offset]" identifier [ (field_expression "image_00->channel_map->offset" (field_expression "image_00->channel_map" identifier -> field_identifier) -> field_identifier) ]) / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar3 = 0xff;" (assignment_expression "uVar3 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }" if (parenthesized_expression "(dVar2 < (double)DAT_002a7ff4)" ( (binary_expression "dVar2 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }" { (expression_statement "uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);" (assignment_expression "uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124)" identifier = (cast_expression "(uchar)(short)ROUND(dVar2 + (double)DAT_0029f124)" ( (type_descriptor "uchar" type_identifier) ) (cast_expression "(short)ROUND(dVar2 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar2 + (double)DAT_0029f124)" identifier (argument_list "(dVar2 + (double)DAT_0029f124)" ( (binary_expression "dVar2 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "WriteBlobByte(image,uVar3);" (call_expression "WriteBlobByte(image,uVar3)" identifier (argument_list "(image,uVar3)" ( identifier , identifier ))) ;) (expression_statement "pQVar6 = pQVar6 + image_00->number_channels;" (assignment_expression "pQVar6 = pQVar6 + image_00->number_channels" identifier = (binary_expression "pQVar6 + image_00->number_channels" identifier + (field_expression "image_00->number_channels" identifier -> field_identifier))) ;) }) while (parenthesized_expression "(SBORROW4(iVar9,image_00->columns * 2) !=\n                     (int)(iVar9 + image_00->columns * -2) < 0)" ( (binary_expression "SBORROW4(iVar9,image_00->columns * 2) !=\n                     (int)(iVar9 + image_00->columns * -2) < 0" (call_expression "SBORROW4(iVar9,image_00->columns * 2)" identifier (argument_list "(iVar9,image_00->columns * 2)" ( identifier , (binary_expression "image_00->columns * 2" (field_expression "image_00->columns" identifier -> field_identifier) * number_literal) ))) != (binary_expression "(int)(iVar9 + image_00->columns * -2) < 0" (cast_expression "(int)(iVar9 + image_00->columns * -2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar9 + image_00->columns * -2)" ( (binary_expression "iVar9 + image_00->columns * -2" identifier + (binary_expression "image_00->columns * -2" (field_expression "image_00->columns" identifier -> field_identifier) * number_literal)) ))) < number_literal)) )) ;) })) (expression_statement "pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,pIVar5->columns,1,\n                                    (ExceptionInfo *)tile_rows);" (assignment_expression "pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,pIVar5->columns,1,\n                                    (ExceptionInfo *)tile_rows)" identifier = (call_expression "GetVirtualPixels(pIVar5,0,local_90 >> 1,pIVar5->columns,1,\n                                    (ExceptionInfo *)tile_rows)" identifier (argument_list "(pIVar5,0,local_90 >> 1,pIVar5->columns,1,\n                                    (ExceptionInfo *)tile_rows)" ( identifier , number_literal , (binary_expression "local_90 >> 1" identifier >> number_literal) , (field_expression "pIVar5->columns" identifier -> field_identifier) , number_literal , (cast_expression "(ExceptionInfo *)tile_rows" ( (type_descriptor "ExceptionInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (pQVar6 == (Quantum *)0x0) break;" if (parenthesized_expression "(pQVar6 == (Quantum *)0x0)" ( (binary_expression "pQVar6 == (Quantum *)0x0" identifier == (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "columns = pIVar5->columns;" (assignment_expression "columns = pIVar5->columns" identifier = (field_expression "pIVar5->columns" identifier -> field_identifier)) ;) (if_statement "if (0 < (int)columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[1].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n              columns = pIVar5->columns;\n            } while (iVar9 < (int)columns);\n          }" if (parenthesized_expression "(0 < (int)columns)" ( (binary_expression "0 < (int)columns" number_literal < (cast_expression "(int)columns" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[1].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n              columns = pIVar5->columns;\n            } while (iVar9 < (int)columns);\n          }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[1].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n              columns = pIVar5->columns;\n            } while (iVar9 < (int)columns);" do (compound_statement "{\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[1].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n              columns = pIVar5->columns;\n            }" { (expression_statement "uVar3 = '\0';" (assignment_expression "uVar3 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < pQVar6[image_00->channel_map[1].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }" if (parenthesized_expression "(0.0 < pQVar6[image_00->channel_map[1].offset])" ( (binary_expression "0.0 < pQVar6[image_00->channel_map[1].offset]" number_literal < (subscript_expression "pQVar6[image_00->channel_map[1].offset]" identifier [ (field_expression "image_00->channel_map[1].offset" (subscript_expression "image_00->channel_map[1]" (field_expression "image_00->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n                dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }" { (expression_statement "dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0;" (assignment_expression "dVar2 = pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0" identifier = (binary_expression "pQVar6[image_00->channel_map[1].offset] / (double)DAT_002a7ff0" (subscript_expression "pQVar6[image_00->channel_map[1].offset]" identifier [ (field_expression "image_00->channel_map[1].offset" (subscript_expression "image_00->channel_map[1]" (field_expression "image_00->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar3 = 0xff;" (assignment_expression "uVar3 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }" if (parenthesized_expression "(dVar2 < (double)DAT_002a7ff4)" ( (binary_expression "dVar2 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }" { (expression_statement "uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);" (assignment_expression "uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124)" identifier = (cast_expression "(uchar)(short)ROUND(dVar2 + (double)DAT_0029f124)" ( (type_descriptor "uchar" type_identifier) ) (cast_expression "(short)ROUND(dVar2 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar2 + (double)DAT_0029f124)" identifier (argument_list "(dVar2 + (double)DAT_0029f124)" ( (binary_expression "dVar2 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "WriteBlobByte(image,uVar3);" (call_expression "WriteBlobByte(image,uVar3)" identifier (argument_list "(image,uVar3)" ( identifier , identifier ))) ;) (expression_statement "pQVar6 = pQVar6 + image_00->number_channels;" (assignment_expression "pQVar6 = pQVar6 + image_00->number_channels" identifier = (binary_expression "pQVar6 + image_00->number_channels" identifier + (field_expression "image_00->number_channels" identifier -> field_identifier))) ;) (expression_statement "columns = pIVar5->columns;" (assignment_expression "columns = pIVar5->columns" identifier = (field_expression "pIVar5->columns" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(iVar9 < (int)columns)" ( (binary_expression "iVar9 < (int)columns" identifier < (cast_expression "(int)columns" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (expression_statement "pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,columns,1,(ExceptionInfo *)tile_rows);" (assignment_expression "pQVar6 = GetVirtualPixels(pIVar5,0,local_90 >> 1,columns,1,(ExceptionInfo *)tile_rows)" identifier = (call_expression "GetVirtualPixels(pIVar5,0,local_90 >> 1,columns,1,(ExceptionInfo *)tile_rows)" identifier (argument_list "(pIVar5,0,local_90 >> 1,columns,1,(ExceptionInfo *)tile_rows)" ( identifier , number_literal , (binary_expression "local_90 >> 1" identifier >> number_literal) , identifier , number_literal , (cast_expression "(ExceptionInfo *)tile_rows" ( (type_descriptor "ExceptionInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (pQVar6 == (Quantum *)0x0) break;" if (parenthesized_expression "(pQVar6 == (Quantum *)0x0)" ( (binary_expression "pQVar6 == (Quantum *)0x0" identifier == (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (if_statement "if (0 < (int)pIVar5->columns) {\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[2].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (iVar9 < (int)pIVar5->columns);\n          }" if (parenthesized_expression "(0 < (int)pIVar5->columns)" ( (binary_expression "0 < (int)pIVar5->columns" number_literal < (cast_expression "(int)pIVar5->columns" ( (type_descriptor "int" primitive_type) ) (field_expression "pIVar5->columns" identifier -> field_identifier))) )) (compound_statement "{\n            iVar9 = 0;\n            do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[2].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (iVar9 < (int)pIVar5->columns);\n          }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[2].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            } while (iVar9 < (int)pIVar5->columns);" do (compound_statement "{\n              uVar3 = '\0';\n              if (0.0 < pQVar6[image_00->channel_map[2].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(image,uVar3);\n              pQVar6 = pQVar6 + image_00->number_channels;\n            }" { (expression_statement "uVar3 = '\0';" (assignment_expression "uVar3 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < pQVar6[image_00->channel_map[2].offset]) {\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }" if (parenthesized_expression "(0.0 < pQVar6[image_00->channel_map[2].offset])" ( (binary_expression "0.0 < pQVar6[image_00->channel_map[2].offset]" number_literal < (subscript_expression "pQVar6[image_00->channel_map[2].offset]" identifier [ (field_expression "image_00->channel_map[2].offset" (subscript_expression "image_00->channel_map[2]" (field_expression "image_00->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n                dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;\n                uVar3 = 0xff;\n                if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }\n              }" { (expression_statement "dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0;" (assignment_expression "dVar2 = pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0" identifier = (binary_expression "pQVar6[image_00->channel_map[2].offset] / (double)DAT_002a7ff0" (subscript_expression "pQVar6[image_00->channel_map[2].offset]" identifier [ (field_expression "image_00->channel_map[2].offset" (subscript_expression "image_00->channel_map[2]" (field_expression "image_00->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar3 = 0xff;" (assignment_expression "uVar3 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar2 < (double)DAT_002a7ff4) {\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }" if (parenthesized_expression "(dVar2 < (double)DAT_002a7ff4)" ( (binary_expression "dVar2 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                  uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);\n                }" { (expression_statement "uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124);" (assignment_expression "uVar3 = (uchar)(short)ROUND(dVar2 + (double)DAT_0029f124)" identifier = (cast_expression "(uchar)(short)ROUND(dVar2 + (double)DAT_0029f124)" ( (type_descriptor "uchar" type_identifier) ) (cast_expression "(short)ROUND(dVar2 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar2 + (double)DAT_0029f124)" identifier (argument_list "(dVar2 + (double)DAT_0029f124)" ( (binary_expression "dVar2 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "WriteBlobByte(image,uVar3);" (call_expression "WriteBlobByte(image,uVar3)" identifier (argument_list "(image,uVar3)" ( identifier , identifier ))) ;) (expression_statement "pQVar6 = pQVar6 + image_00->number_channels;" (assignment_expression "pQVar6 = pQVar6 + image_00->number_channels" identifier = (binary_expression "pQVar6 + image_00->number_channels" identifier + (field_expression "image_00->number_channels" identifier -> field_identifier))) ;) }) while (parenthesized_expression "(iVar9 < (int)pIVar5->columns)" ( (binary_expression "iVar9 < (int)pIVar5->columns" identifier < (cast_expression "(int)pIVar5->columns" ( (type_descriptor "int" primitive_type) ) (field_expression "pIVar5->columns" identifier -> field_identifier))) )) ;) })) (expression_statement "MVar7 = SetImageProgress(image,"Save/Image",CONCAT44(local_88,local_8c),\n                                   (ulonglong)image_00->rows);" (assignment_expression "MVar7 = SetImageProgress(image,"Save/Image",CONCAT44(local_88,local_8c),\n                                   (ulonglong)image_00->rows)" identifier = (call_expression "SetImageProgress(image,"Save/Image",CONCAT44(local_88,local_8c),\n                                   (ulonglong)image_00->rows)" identifier (argument_list "(image,"Save/Image",CONCAT44(local_88,local_8c),\n                                   (ulonglong)image_00->rows)" ( identifier , (string_literal ""Save/Image"" " string_content ") , (call_expression "CONCAT44(local_88,local_8c)" identifier (argument_list "(local_88,local_8c)" ( identifier , identifier ))) , (cast_expression "(ulonglong)image_00->rows" ( (type_descriptor "ulonglong" type_identifier) ) (field_expression "image_00->rows" identifier -> field_identifier)) )))) ;) (if_statement "if (MVar7 == MagickFalse) break;" if (parenthesized_expression "(MVar7 == MagickFalse)" ( (binary_expression "MVar7 == MagickFalse" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "local_90 = local_90 + 2;" (assignment_expression "local_90 = local_90 + 2" identifier = (binary_expression "local_90 + 2" identifier + number_literal)) ;) (expression_statement "bVar10 = 0xfffffffd < local_8c;" (assignment_expression "bVar10 = 0xfffffffd < local_8c" identifier = (binary_expression "0xfffffffd < local_8c" number_literal < identifier)) ;) (expression_statement "local_8c = local_8c + 2;" (assignment_expression "local_8c = local_8c + 2" identifier = (binary_expression "local_8c + 2" identifier + number_literal)) ;) (expression_statement "local_88 = local_88 + (uint)bVar10;" (assignment_expression "local_88 = local_88 + (uint)bVar10" identifier = (binary_expression "local_88 + (uint)bVar10" identifier + (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "(local_90 < (int)image_00->rows)" ( (binary_expression "local_90 < (int)image_00->rows" identifier < (cast_expression "(int)image_00->rows" ( (type_descriptor "int" primitive_type) ) (field_expression "image_00->rows" identifier -> field_identifier))) )) ;) })) (expression_statement "iVar9 = 0x800;" (assignment_expression "iVar9 = 0x800" identifier = number_literal) ;) (do_statement "do {\n        WriteBlobByte(image,'\0');\n        iVar9 = iVar9 + -1;\n      } while (iVar9 != 0);" do (compound_statement "{\n        WriteBlobByte(image,'\0');\n        iVar9 = iVar9 + -1;\n      }" { (expression_statement "WriteBlobByte(image,'\0');" (call_expression "WriteBlobByte(image,'\0')" identifier (argument_list "(image,'\0')" ( identifier , (char_literal "'\0'" ' escape_sequence ') ))) ;) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) ;) (expression_statement "DestroyImage(pIVar5);" (call_expression "DestroyImage(pIVar5)" identifier (argument_list "(pIVar5)" ( identifier ))) ;) (expression_statement "DestroyImage(image_00);" (call_expression "DestroyImage(image_00)" identifier (argument_list "(image_00)" ( identifier ))) ;) (expression_statement "MVar7 = MagickTrue;" (assignment_expression "MVar7 = MagickTrue" identifier = identifier) ;) (goto_statement "goto LAB_0022cd3a;" goto statement_identifier ;) })) })) (labeled_statement "LAB_0022cd38:\n  MVar7 = MagickFalse;" statement_identifier : (expression_statement "MVar7 = MagickFalse;" (assignment_expression "MVar7 = MagickFalse" identifier = identifier) ;)) (labeled_statement "LAB_0022cd3a:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return MVar7;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return MVar7;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return MVar7;\n  }" { (return_statement "return MVar7;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "undefined4 __regparm3 FUN_0022c7f0(int param_1,uint param_2,int param_3,undefined4 param_4)\n\n{\n  double dVar1;\n  undefined1 uVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  int local_90;\n  uint local_8c;\n  int local_88;\n  uint local_7c;\n  uint local_6c;\n  uint local_68;\n  undefined1 local_64 [4];\n  undefined1 local_60 [4];\n  uint local_5c;\n  uint local_58;\n  double local_4c;\n  double local_44;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x22c7fb;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  SetGeometry(param_1,&local_6c);\n  ParseMetaGeometry("768x512>",local_64,local_60,&local_6c,&local_68);\n  if ((local_6c & 1) != 0) {\n    local_6c = local_6c - 1;\n  }\n  if ((local_68 & 1) != 0) {\n    local_68 = local_68 - 1;\n  }\n  iVar3 = ResizeImage(param_1,local_6c,local_68,3,param_4);\n  if (iVar3 != 0) {\n    uVar4 = ParseGeometry("768x512>",&local_4c);\n    local_7c = (uint)(longlong)ROUND(local_4c);\n    uVar8 = local_7c;\n    local_68 = local_7c;\n    local_6c = local_7c;\n    if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }\n    if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }\n    if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }\n    TransformImageColorspace(iVar3,0x1c,param_4);\n    iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);\n    if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }\n  }\nLAB_0022cd38:\n  uVar7 = 0;\nLAB_0022cd3a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar7;\n  }\n                    \n  FUN_0029eab0();\n}\n\n" (function_definition "undefined4 __regparm3 FUN_0022c7f0(int param_1,uint param_2,int param_3,undefined4 param_4)\n\n{\n  double dVar1;\n  undefined1 uVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  int local_90;\n  uint local_8c;\n  int local_88;\n  uint local_7c;\n  uint local_6c;\n  uint local_68;\n  undefined1 local_64 [4];\n  undefined1 local_60 [4];\n  uint local_5c;\n  uint local_58;\n  double local_4c;\n  double local_44;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x22c7fb;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  SetGeometry(param_1,&local_6c);\n  ParseMetaGeometry("768x512>",local_64,local_60,&local_6c,&local_68);\n  if ((local_6c & 1) != 0) {\n    local_6c = local_6c - 1;\n  }\n  if ((local_68 & 1) != 0) {\n    local_68 = local_68 - 1;\n  }\n  iVar3 = ResizeImage(param_1,local_6c,local_68,3,param_4);\n  if (iVar3 != 0) {\n    uVar4 = ParseGeometry("768x512>",&local_4c);\n    local_7c = (uint)(longlong)ROUND(local_4c);\n    uVar8 = local_7c;\n    local_68 = local_7c;\n    local_6c = local_7c;\n    if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }\n    if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }\n    if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }\n    TransformImageColorspace(iVar3,0x1c,param_4);\n    iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);\n    if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }\n  }\nLAB_0022cd38:\n  uVar7 = 0;\nLAB_0022cd3a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar7;\n  }\n                    \n  FUN_0029eab0();\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0022c7f0(int param_1,uint param_2,int param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,uint param_2,int param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  double dVar1;\n  undefined1 uVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  int local_90;\n  uint local_8c;\n  int local_88;\n  uint local_7c;\n  uint local_6c;\n  uint local_68;\n  undefined1 local_64 [4];\n  undefined1 local_60 [4];\n  uint local_5c;\n  uint local_58;\n  double local_4c;\n  double local_44;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x22c7fb;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  SetGeometry(param_1,&local_6c);\n  ParseMetaGeometry("768x512>",local_64,local_60,&local_6c,&local_68);\n  if ((local_6c & 1) != 0) {\n    local_6c = local_6c - 1;\n  }\n  if ((local_68 & 1) != 0) {\n    local_68 = local_68 - 1;\n  }\n  iVar3 = ResizeImage(param_1,local_6c,local_68,3,param_4);\n  if (iVar3 != 0) {\n    uVar4 = ParseGeometry("768x512>",&local_4c);\n    local_7c = (uint)(longlong)ROUND(local_4c);\n    uVar8 = local_7c;\n    local_68 = local_7c;\n    local_6c = local_7c;\n    if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }\n    if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }\n    if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }\n    TransformImageColorspace(iVar3,0x1c,param_4);\n    iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);\n    if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }\n  }\nLAB_0022cd38:\n  uVar7 = 0;\nLAB_0022cd3a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar7;\n  }\n                    \n  FUN_0029eab0();\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "uint local_8c;" type_identifier identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "uint local_68;" type_identifier identifier ;) (declaration "undefined1 local_64 [4];" type_identifier (array_declarator "local_64 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 local_60 [4];" type_identifier (array_declarator "local_60 [4]" identifier [ number_literal ]) ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "double local_4c;" primitive_type identifier ;) (declaration "double local_44;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x22c7fb;" (assignment_expression "uStack_14 = 0x22c7fb" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "SetGeometry(param_1,&local_6c);" (call_expression "SetGeometry(param_1,&local_6c)" identifier (argument_list "(param_1,&local_6c)" ( identifier , (pointer_expression "&local_6c" & identifier) ))) ;) (expression_statement "ParseMetaGeometry("768x512>",local_64,local_60,&local_6c,&local_68);" (call_expression "ParseMetaGeometry("768x512>",local_64,local_60,&local_6c,&local_68)" identifier (argument_list "("768x512>",local_64,local_60,&local_6c,&local_68)" ( (string_literal ""768x512>"" " string_content ") , identifier , identifier , (pointer_expression "&local_6c" & identifier) , (pointer_expression "&local_68" & identifier) ))) ;) (if_statement "if ((local_6c & 1) != 0) {\n    local_6c = local_6c - 1;\n  }" if (parenthesized_expression "((local_6c & 1) != 0)" ( (binary_expression "(local_6c & 1) != 0" (parenthesized_expression "(local_6c & 1)" ( (binary_expression "local_6c & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    local_6c = local_6c - 1;\n  }" { (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) })) (if_statement "if ((local_68 & 1) != 0) {\n    local_68 = local_68 - 1;\n  }" if (parenthesized_expression "((local_68 & 1) != 0)" ( (binary_expression "(local_68 & 1) != 0" (parenthesized_expression "(local_68 & 1)" ( (binary_expression "local_68 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    local_68 = local_68 - 1;\n  }" { (expression_statement "local_68 = local_68 - 1;" (assignment_expression "local_68 = local_68 - 1" identifier = (binary_expression "local_68 - 1" identifier - number_literal)) ;) })) (expression_statement "iVar3 = ResizeImage(param_1,local_6c,local_68,3,param_4);" (assignment_expression "iVar3 = ResizeImage(param_1,local_6c,local_68,3,param_4)" identifier = (call_expression "ResizeImage(param_1,local_6c,local_68,3,param_4)" identifier (argument_list "(param_1,local_6c,local_68,3,param_4)" ( identifier , identifier , identifier , number_literal , identifier )))) ;) (if_statement "if (iVar3 != 0) {\n    uVar4 = ParseGeometry("768x512>",&local_4c);\n    local_7c = (uint)(longlong)ROUND(local_4c);\n    uVar8 = local_7c;\n    local_68 = local_7c;\n    local_6c = local_7c;\n    if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }\n    if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }\n    if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }\n    TransformImageColorspace(iVar3,0x1c,param_4);\n    iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);\n    if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar4 = ParseGeometry("768x512>",&local_4c);\n    local_7c = (uint)(longlong)ROUND(local_4c);\n    uVar8 = local_7c;\n    local_68 = local_7c;\n    local_6c = local_7c;\n    if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }\n    if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }\n    if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }\n    TransformImageColorspace(iVar3,0x1c,param_4);\n    iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);\n    if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }\n  }" { (expression_statement "uVar4 = ParseGeometry("768x512>",&local_4c);" (assignment_expression "uVar4 = ParseGeometry("768x512>",&local_4c)" identifier = (call_expression "ParseGeometry("768x512>",&local_4c)" identifier (argument_list "("768x512>",&local_4c)" ( (string_literal ""768x512>"" " string_content ") , (pointer_expression "&local_4c" & identifier) )))) ;) (expression_statement "local_7c = (uint)(longlong)ROUND(local_4c);" (assignment_expression "local_7c = (uint)(longlong)ROUND(local_4c)" identifier = (cast_expression "(uint)(longlong)ROUND(local_4c)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(local_4c)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(local_4c)" identifier (argument_list "(local_4c)" ( identifier )))))) ;) (expression_statement "uVar8 = local_7c;" (assignment_expression "uVar8 = local_7c" identifier = identifier) ;) (expression_statement "local_68 = local_7c;" (assignment_expression "local_68 = local_7c" identifier = identifier) ;) (expression_statement "local_6c = local_7c;" (assignment_expression "local_6c = local_7c" identifier = identifier) ;) (if_statement "if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }" if (parenthesized_expression "((uVar4 & 8) != 0)" ( (binary_expression "(uVar4 & 8) != 0" (parenthesized_expression "(uVar4 & 8)" ( (binary_expression "uVar4 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }" { (expression_statement "local_7c = (uint)(longlong)ROUND(local_44);" (assignment_expression "local_7c = (uint)(longlong)ROUND(local_44)" identifier = (cast_expression "(uint)(longlong)ROUND(local_44)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(local_44)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(local_44)" identifier (argument_list "(local_44)" ( identifier )))))) ;) (expression_statement "local_68 = local_7c;" (assignment_expression "local_68 = local_7c" identifier = identifier) ;) })) (if_statement "if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }" if (parenthesized_expression "((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c)))" ( (binary_expression "(uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))" (parenthesized_expression "(uVar8 != *(uint *)(iVar3 + 0x18))" ( (binary_expression "uVar8 != *(uint *)(iVar3 + 0x18)" identifier != (pointer_expression "*(uint *)(iVar3 + 0x18)" * (cast_expression "(uint *)(iVar3 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) ))))) )) || (parenthesized_expression "(local_68 != *(uint *)(iVar3 + 0x1c))" ( (binary_expression "local_68 != *(uint *)(iVar3 + 0x1c)" identifier != (pointer_expression "*(uint *)(iVar3 + 0x1c)" * (cast_expression "(uint *)(iVar3 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }" { (expression_statement "local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;" (assignment_expression "local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1" identifier = (binary_expression "(uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1" (binary_expression "(uVar8 + 1) - *(uint *)(iVar3 + 0x18)" (parenthesized_expression "(uVar8 + 1)" ( (binary_expression "uVar8 + 1" identifier + number_literal) )) - (pointer_expression "*(uint *)(iVar3 + 0x18)" * (cast_expression "(uint *)(iVar3 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) ))))) >> number_literal)) ;) (expression_statement "local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;" (assignment_expression "local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1" identifier = (binary_expression "(local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1" (binary_expression "(local_68 - *(uint *)(iVar3 + 0x1c)) + 1" (parenthesized_expression "(local_68 - *(uint *)(iVar3 + 0x1c))" ( (binary_expression "local_68 - *(uint *)(iVar3 + 0x1c)" identifier - (pointer_expression "*(uint *)(iVar3 + 0x1c)" * (cast_expression "(uint *)(iVar3 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) ))))) )) + number_literal) >> number_literal)) ;) (expression_statement "iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);" (assignment_expression "iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4)" identifier = (call_expression "BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4)" identifier (argument_list "(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4)" ( identifier , (pointer_expression "&local_5c" & identifier) , (pointer_expression "*(undefined4 *)(param_1 + 0x23c)" * (cast_expression "(undefined4 *)(param_1 + 0x23c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x23c)" ( (binary_expression "param_1 + 0x23c" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (iVar5 == 0) goto LAB_0022cd38;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0022cd38;" goto statement_identifier ;)) (expression_statement "DestroyImage(iVar3);" (call_expression "DestroyImage(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "uVar8 = *(uint *)(iVar5 + 0x18);" (assignment_expression "uVar8 = *(uint *)(iVar5 + 0x18)" identifier = (pointer_expression "*(uint *)(iVar5 + 0x18)" * (cast_expression "(uint *)(iVar5 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = iVar5;" (assignment_expression "iVar3 = iVar5" identifier = identifier) ;) })) (if_statement "if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }" if (parenthesized_expression "(((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0))" ( (binary_expression "((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)" (parenthesized_expression "((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3))" ( (binary_expression "(param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)" (parenthesized_expression "(param_2 != uVar8)" ( (binary_expression "param_2 != uVar8" identifier != identifier) )) || (parenthesized_expression "(*(int *)(iVar3 + 0x1c) != param_3)" ( (binary_expression "*(int *)(iVar3 + 0x1c) != param_3" (pointer_expression "*(int *)(iVar3 + 0x1c)" * (cast_expression "(int *)(iVar3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) )))) != identifier) ))) )) && (parenthesized_expression "(iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)" ( (comma_expression "iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0" (assignment_expression "iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4)" identifier = (call_expression "ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4)" identifier (argument_list "(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4)" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(iVar3 + 0x228)" * (cast_expression "(undefined4 *)(iVar3 + 0x228)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x228)" ( (binary_expression "iVar3 + 0x228" identifier + number_literal) )))) , identifier )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }" { (expression_statement "DestroyImage(iVar3);" (call_expression "DestroyImage(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "iVar3 = iVar5;" (assignment_expression "iVar3 = iVar5" identifier = identifier) ;) })) (expression_statement "TransformImageColorspace(iVar3,0x1c,param_4);" (call_expression "TransformImageColorspace(iVar3,0x1c,param_4)" identifier (argument_list "(iVar3,0x1c,param_4)" ( identifier , number_literal , identifier ))) ;) (expression_statement "iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);" (assignment_expression "iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4)" identifier = (call_expression "ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4)" identifier (argument_list "(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4)" ( identifier , (binary_expression "*(uint *)(iVar3 + 0x18) >> 1" (pointer_expression "*(uint *)(iVar3 + 0x18)" * (cast_expression "(uint *)(iVar3 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) )))) >> number_literal) , (binary_expression "*(uint *)(iVar3 + 0x1c) >> 1" (pointer_expression "*(uint *)(iVar3 + 0x1c)" * (cast_expression "(uint *)(iVar3 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) )))) >> number_literal) , number_literal , identifier )))) ;) (if_statement "if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }" { (if_statement "if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }" if (parenthesized_expression "(0 < *(int *)(iVar3 + 0x1c))" ( (binary_expression "0 < *(int *)(iVar3 + 0x1c)" number_literal < (pointer_expression "*(int *)(iVar3 + 0x1c)" * (cast_expression "(int *)(iVar3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) ))))) )) (compound_statement "{\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }" { (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));" do (compound_statement "{\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        }" { (expression_statement "iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);" (assignment_expression "iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4)" identifier = (call_expression "GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4)" identifier (argument_list "(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4)" ( identifier , number_literal , identifier , (pointer_expression "*(undefined4 *)(iVar3 + 0x18)" * (cast_expression "(undefined4 *)(iVar3 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) )))) , number_literal , identifier )))) ;) (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }" if (parenthesized_expression "(0 < *(int *)(iVar3 + 0x18) * 2)" ( (binary_expression "0 < *(int *)(iVar3 + 0x18) * 2" number_literal < (binary_expression "*(int *)(iVar3 + 0x18) * 2" (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) )))) * number_literal)) )) (compound_statement "{\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);" do (compound_statement "{\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            }" { (expression_statement "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);" (assignment_expression "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8)" identifier = (pointer_expression "*(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8)" * (cast_expression "(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8)" ( (binary_expression "iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(iVar3 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x2a8) + 8)" ( (binary_expression "*(int *)(iVar3 + 0x2a8) + 8" (pointer_expression "*(int *)(iVar3 + 0x2a8)" * (cast_expression "(int *)(iVar3 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2a8)" ( (binary_expression "iVar3 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" if (parenthesized_expression "(0.0 < dVar1)" ( (binary_expression "0.0 < dVar1" number_literal < identifier) )) (compound_statement "{\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" { (expression_statement "dVar1 = dVar1 / (double)DAT_002a7ff0;" (assignment_expression "dVar1 = dVar1 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar1 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar2 = 0xff;" (assignment_expression "uVar2 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" if (parenthesized_expression "(dVar1 < (double)DAT_002a7ff4)" ( (binary_expression "dVar1 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" { (expression_statement "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" identifier = (cast_expression "(undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "undefined1" type_identifier) ) (cast_expression "(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar1 + (double)DAT_0029f124)" identifier (argument_list "(dVar1 + (double)DAT_0029f124)" ( (binary_expression "dVar1 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "WriteBlobByte(param_1,uVar2);" (call_expression "WriteBlobByte(param_1,uVar2)" identifier (argument_list "(param_1,uVar2)" ( identifier , identifier ))) ;) (expression_statement "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;" (assignment_expression "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8" identifier = (binary_expression "iVar6 + *(int *)(iVar3 + 0x298) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x298) * 8" (pointer_expression "*(int *)(iVar3 + 0x298)" * (cast_expression "(int *)(iVar3 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x298)" ( (binary_expression "iVar3 + 0x298" identifier + number_literal) )))) * number_literal))) ;) }) while (parenthesized_expression "(SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0)" ( (binary_expression "SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0" (call_expression "SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2)" identifier (argument_list "(iVar10,*(int *)(iVar3 + 0x18) * 2)" ( identifier , (binary_expression "*(int *)(iVar3 + 0x18) * 2" (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) )))) * number_literal) ))) != (binary_expression "iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0" (binary_expression "iVar10 + *(int *)(iVar3 + 0x18) * -2" identifier + (binary_expression "*(int *)(iVar3 + 0x18) * -2" (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) )))) * number_literal)) < number_literal)) )) ;) })) (expression_statement "iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);" (assignment_expression "iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4)" identifier = (call_expression "GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4)" identifier (argument_list "(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4)" ( identifier , number_literal , (binary_expression "local_90 >> 1" identifier >> number_literal) , (pointer_expression "*(undefined4 *)(iVar5 + 0x18)" * (cast_expression "(undefined4 *)(iVar5 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) )))) , number_literal , identifier )))) ;) (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = *(int *)(iVar5 + 0x18);" (assignment_expression "iVar10 = *(int *)(iVar5 + 0x18)" identifier = (pointer_expression "*(int *)(iVar5 + 0x18)" * (cast_expression "(int *)(iVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);" do (compound_statement "{\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            }" { (expression_statement "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);" (assignment_expression "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8)" identifier = (pointer_expression "*(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8)" * (cast_expression "(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8)" ( (binary_expression "iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(iVar3 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(iVar3 + 0x2a8) + 0x14" (pointer_expression "*(int *)(iVar3 + 0x2a8)" * (cast_expression "(int *)(iVar3 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2a8)" ( (binary_expression "iVar3 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" if (parenthesized_expression "(0.0 < dVar1)" ( (binary_expression "0.0 < dVar1" number_literal < identifier) )) (compound_statement "{\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" { (expression_statement "dVar1 = dVar1 / (double)DAT_002a7ff0;" (assignment_expression "dVar1 = dVar1 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar1 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar2 = 0xff;" (assignment_expression "uVar2 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" if (parenthesized_expression "(dVar1 < (double)DAT_002a7ff4)" ( (binary_expression "dVar1 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" { (expression_statement "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" identifier = (cast_expression "(undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "undefined1" type_identifier) ) (cast_expression "(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar1 + (double)DAT_0029f124)" identifier (argument_list "(dVar1 + (double)DAT_0029f124)" ( (binary_expression "dVar1 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "WriteBlobByte(param_1,uVar2);" (call_expression "WriteBlobByte(param_1,uVar2)" identifier (argument_list "(param_1,uVar2)" ( identifier , identifier ))) ;) (expression_statement "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;" (assignment_expression "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8" identifier = (binary_expression "iVar6 + *(int *)(iVar3 + 0x298) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x298) * 8" (pointer_expression "*(int *)(iVar3 + 0x298)" * (cast_expression "(int *)(iVar3 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x298)" ( (binary_expression "iVar3 + 0x298" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "iVar10 = *(int *)(iVar5 + 0x18);" (assignment_expression "iVar10 = *(int *)(iVar5 + 0x18)" identifier = (pointer_expression "*(int *)(iVar5 + 0x18)" * (cast_expression "(int *)(iVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar9 < iVar10)" ( (binary_expression "iVar9 < iVar10" identifier < identifier) )) ;) })) (expression_statement "iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);" (assignment_expression "iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4)" identifier = (call_expression "GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4)" identifier (argument_list "(iVar5,0,local_90 >> 1,iVar10,1,param_4)" ( identifier , number_literal , (binary_expression "local_90 >> 1" identifier >> number_literal) , identifier , number_literal , identifier )))) ;) (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }" if (parenthesized_expression "(0 < *(int *)(iVar5 + 0x18))" ( (binary_expression "0 < *(int *)(iVar5 + 0x18)" number_literal < (pointer_expression "*(int *)(iVar5 + 0x18)" * (cast_expression "(int *)(iVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));" do (compound_statement "{\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            }" { (expression_statement "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);" (assignment_expression "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8)" identifier = (pointer_expression "*(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8)" * (cast_expression "(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8)" ( (binary_expression "iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(iVar3 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(iVar3 + 0x2a8) + 0x20" (pointer_expression "*(int *)(iVar3 + 0x2a8)" * (cast_expression "(int *)(iVar3 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2a8)" ( (binary_expression "iVar3 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" if (parenthesized_expression "(0.0 < dVar1)" ( (binary_expression "0.0 < dVar1" number_literal < identifier) )) (compound_statement "{\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" { (expression_statement "dVar1 = dVar1 / (double)DAT_002a7ff0;" (assignment_expression "dVar1 = dVar1 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar1 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar2 = 0xff;" (assignment_expression "uVar2 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" if (parenthesized_expression "(dVar1 < (double)DAT_002a7ff4)" ( (binary_expression "dVar1 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" { (expression_statement "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" identifier = (cast_expression "(undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "undefined1" type_identifier) ) (cast_expression "(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar1 + (double)DAT_0029f124)" identifier (argument_list "(dVar1 + (double)DAT_0029f124)" ( (binary_expression "dVar1 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "WriteBlobByte(param_1,uVar2);" (call_expression "WriteBlobByte(param_1,uVar2)" identifier (argument_list "(param_1,uVar2)" ( identifier , identifier ))) ;) (expression_statement "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;" (assignment_expression "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8" identifier = (binary_expression "iVar6 + *(int *)(iVar3 + 0x298) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x298) * 8" (pointer_expression "*(int *)(iVar3 + 0x298)" * (cast_expression "(int *)(iVar3 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x298)" ( (binary_expression "iVar3 + 0x298" identifier + number_literal) )))) * number_literal))) ;) }) while (parenthesized_expression "(iVar10 < *(int *)(iVar5 + 0x18))" ( (binary_expression "iVar10 < *(int *)(iVar5 + 0x18)" identifier < (pointer_expression "*(int *)(iVar5 + 0x18)" * (cast_expression "(int *)(iVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) )) ;) })) (expression_statement "iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);" (assignment_expression "iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0)" identifier = (call_expression "SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0)" identifier (argument_list "(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0)" ( identifier , (string_literal ""Save/Image"" " string_content ") , identifier , identifier , (pointer_expression "*(undefined4 *)(iVar3 + 0x1c)" * (cast_expression "(undefined4 *)(iVar3 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_90 = local_90 + 2;" (assignment_expression "local_90 = local_90 + 2" identifier = (binary_expression "local_90 + 2" identifier + number_literal)) ;) (expression_statement "bVar11 = 0xfffffffd < local_8c;" (assignment_expression "bVar11 = 0xfffffffd < local_8c" identifier = (binary_expression "0xfffffffd < local_8c" number_literal < identifier)) ;) (expression_statement "local_8c = local_8c + 2;" (assignment_expression "local_8c = local_8c + 2" identifier = (binary_expression "local_8c + 2" identifier + number_literal)) ;) (expression_statement "local_88 = local_88 + (uint)bVar11;" (assignment_expression "local_88 = local_88 + (uint)bVar11" identifier = (binary_expression "local_88 + (uint)bVar11" identifier + (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "(local_90 < *(int *)(iVar3 + 0x1c))" ( (binary_expression "local_90 < *(int *)(iVar3 + 0x1c)" identifier < (pointer_expression "*(int *)(iVar3 + 0x1c)" * (cast_expression "(int *)(iVar3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) ))))) )) ;) })) (expression_statement "iVar6 = 0x800;" (assignment_expression "iVar6 = 0x800" identifier = number_literal) ;) (do_statement "do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);" do (compound_statement "{\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      }" { (expression_statement "WriteBlobByte(param_1,0);" (call_expression "WriteBlobByte(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal ))) ;) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) (expression_statement "DestroyImage(iVar5);" (call_expression "DestroyImage(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))) ;) (expression_statement "DestroyImage(iVar3);" (call_expression "DestroyImage(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0022cd3a;" goto statement_identifier ;) })) })) (labeled_statement "LAB_0022cd38:\n  uVar7 = 0;" statement_identifier : (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_0022cd3a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar7;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar7;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar7;\n  }" { (return_statement "return uVar7;" return identifier ;) }))) (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (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 ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , IDENT , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 = (binary_expression IDENT - LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) || (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) + LIT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( 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 = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < (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 = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) }) while (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT) ))) != (binary_expression (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) < LIT)) )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT >> LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (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 LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT >> LIT) , IDENT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , IDENT , (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) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "undefined4 __regparm3 FUN_0022c7f0(int param_1,uint param_2,int param_3,undefined4 param_4)\n\n{\n  double dVar1;\n  undefined1 uVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  int local_90;\n  uint local_8c;\n  int local_88;\n  uint local_7c;\n  uint local_6c;\n  uint local_68;\n  undefined1 local_64 [4];\n  undefined1 local_60 [4];\n  uint local_5c;\n  uint local_58;\n  double local_4c;\n  double local_44;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x22c7fb;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  SetGeometry(param_1,&local_6c);\n  ParseMetaGeometry("768x512>",local_64,local_60,&local_6c,&local_68);\n  if ((local_6c & 1) != 0) {\n    local_6c = local_6c - 1;\n  }\n  if ((local_68 & 1) != 0) {\n    local_68 = local_68 - 1;\n  }\n  iVar3 = ResizeImage(param_1,local_6c,local_68,3,param_4);\n  if (iVar3 != 0) {\n    uVar4 = ParseGeometry("768x512>",&local_4c);\n    local_7c = (uint)(longlong)ROUND(local_4c);\n    uVar8 = local_7c;\n    local_68 = local_7c;\n    local_6c = local_7c;\n    if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }\n    if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }\n    if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }\n    TransformImageColorspace(iVar3,0x1c,param_4);\n    iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);\n    if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }\n  }\nLAB_0022cd38:\n  uVar7 = 0;\nLAB_0022cd3a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar7;\n  }\n                    \n  FUN_0029eab0();\n}" (type_identifier "undefined4") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0022c7f0(int param_1,uint param_2,int param_3,undefined4 param_4)" (identifier "FUN_0022c7f0") (parameter_list "(int param_1,uint param_2,int param_3,undefined4 param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")"))) (compound_statement "{\n  double dVar1;\n  undefined1 uVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  bool bVar11;\n  int local_90;\n  uint local_8c;\n  int local_88;\n  uint local_7c;\n  uint local_6c;\n  uint local_68;\n  undefined1 local_64 [4];\n  undefined1 local_60 [4];\n  uint local_5c;\n  uint local_58;\n  double local_4c;\n  double local_44;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x22c7fb;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  SetGeometry(param_1,&local_6c);\n  ParseMetaGeometry("768x512>",local_64,local_60,&local_6c,&local_68);\n  if ((local_6c & 1) != 0) {\n    local_6c = local_6c - 1;\n  }\n  if ((local_68 & 1) != 0) {\n    local_68 = local_68 - 1;\n  }\n  iVar3 = ResizeImage(param_1,local_6c,local_68,3,param_4);\n  if (iVar3 != 0) {\n    uVar4 = ParseGeometry("768x512>",&local_4c);\n    local_7c = (uint)(longlong)ROUND(local_4c);\n    uVar8 = local_7c;\n    local_68 = local_7c;\n    local_6c = local_7c;\n    if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }\n    if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }\n    if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }\n    TransformImageColorspace(iVar3,0x1c,param_4);\n    iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);\n    if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }\n  }\nLAB_0022cd38:\n  uVar7 = 0;\nLAB_0022cd3a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar7;\n  }\n                    \n  FUN_0029eab0();\n}" ({ "{") (declaration "double dVar1;" (primitive_type "double") (identifier "dVar1") (; ";")) (declaration "undefined1 uVar2;" (type_identifier "undefined1") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar11;" (primitive_type "bool") (identifier "bVar11") (; ";")) (declaration "int local_90;" (primitive_type "int") (identifier "local_90") (; ";")) (declaration "uint local_8c;" (type_identifier "uint") (identifier "local_8c") (; ";")) (declaration "int local_88;" (primitive_type "int") (identifier "local_88") (; ";")) (declaration "uint local_7c;" (type_identifier "uint") (identifier "local_7c") (; ";")) (declaration "uint local_6c;" (type_identifier "uint") (identifier "local_6c") (; ";")) (declaration "uint local_68;" (type_identifier "uint") (identifier "local_68") (; ";")) (declaration "undefined1 local_64 [4];" (type_identifier "undefined1") (array_declarator "local_64 [4]" (identifier "local_64") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined1 local_60 [4];" (type_identifier "undefined1") (array_declarator "local_60 [4]" (identifier "local_60") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "uint local_5c;" (type_identifier "uint") (identifier "local_5c") (; ";")) (declaration "uint local_58;" (type_identifier "uint") (identifier "local_58") (; ";")) (declaration "double local_4c;" (primitive_type "double") (identifier "local_4c") (; ";")) (declaration "double local_44;" (primitive_type "double") (identifier "local_44") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x22c7fb;" (assignment_expression "uStack_14 = 0x22c7fb" (identifier "uStack_14") (= "=") (number_literal "0x22c7fb")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "SetGeometry(param_1,&local_6c);" (call_expression "SetGeometry(param_1,&local_6c)" (identifier "SetGeometry") (argument_list "(param_1,&local_6c)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_6c" (& "&") (identifier "local_6c")) () ")"))) (; ";")) (expression_statement "ParseMetaGeometry("768x512>",local_64,local_60,&local_6c,&local_68);" (call_expression "ParseMetaGeometry("768x512>",local_64,local_60,&local_6c,&local_68)" (identifier "ParseMetaGeometry") (argument_list "("768x512>",local_64,local_60,&local_6c,&local_68)" (( "(") (string_literal ""768x512>"" (" """) (string_content "768x512>") (" """)) (, ",") (identifier "local_64") (, ",") (identifier "local_60") (, ",") (pointer_expression "&local_6c" (& "&") (identifier "local_6c")) (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) () ")"))) (; ";")) (if_statement "if ((local_6c & 1) != 0) {\n    local_6c = local_6c - 1;\n  }" (if "if") (parenthesized_expression "((local_6c & 1) != 0)" (( "(") (binary_expression "(local_6c & 1) != 0" (parenthesized_expression "(local_6c & 1)" (( "(") (binary_expression "local_6c & 1" (identifier "local_6c") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_6c = local_6c - 1;\n  }" ({ "{") (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((local_68 & 1) != 0) {\n    local_68 = local_68 - 1;\n  }" (if "if") (parenthesized_expression "((local_68 & 1) != 0)" (( "(") (binary_expression "(local_68 & 1) != 0" (parenthesized_expression "(local_68 & 1)" (( "(") (binary_expression "local_68 & 1" (identifier "local_68") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_68 = local_68 - 1;\n  }" ({ "{") (expression_statement "local_68 = local_68 - 1;" (assignment_expression "local_68 = local_68 - 1" (identifier "local_68") (= "=") (binary_expression "local_68 - 1" (identifier "local_68") (- "-") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar3 = ResizeImage(param_1,local_6c,local_68,3,param_4);" (assignment_expression "iVar3 = ResizeImage(param_1,local_6c,local_68,3,param_4)" (identifier "iVar3") (= "=") (call_expression "ResizeImage(param_1,local_6c,local_68,3,param_4)" (identifier "ResizeImage") (argument_list "(param_1,local_6c,local_68,3,param_4)" (( "(") (identifier "param_1") (, ",") (identifier "local_6c") (, ",") (identifier "local_68") (, ",") (number_literal "3") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (iVar3 != 0) {\n    uVar4 = ParseGeometry("768x512>",&local_4c);\n    local_7c = (uint)(longlong)ROUND(local_4c);\n    uVar8 = local_7c;\n    local_68 = local_7c;\n    local_6c = local_7c;\n    if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }\n    if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }\n    if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }\n    TransformImageColorspace(iVar3,0x1c,param_4);\n    iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);\n    if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }\n  }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = ParseGeometry("768x512>",&local_4c);\n    local_7c = (uint)(longlong)ROUND(local_4c);\n    uVar8 = local_7c;\n    local_68 = local_7c;\n    local_6c = local_7c;\n    if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }\n    if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }\n    if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }\n    TransformImageColorspace(iVar3,0x1c,param_4);\n    iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);\n    if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }\n  }" ({ "{") (expression_statement "uVar4 = ParseGeometry("768x512>",&local_4c);" (assignment_expression "uVar4 = ParseGeometry("768x512>",&local_4c)" (identifier "uVar4") (= "=") (call_expression "ParseGeometry("768x512>",&local_4c)" (identifier "ParseGeometry") (argument_list "("768x512>",&local_4c)" (( "(") (string_literal ""768x512>"" (" """) (string_content "768x512>") (" """)) (, ",") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) () ")")))) (; ";")) (expression_statement "local_7c = (uint)(longlong)ROUND(local_4c);" (assignment_expression "local_7c = (uint)(longlong)ROUND(local_4c)" (identifier "local_7c") (= "=") (cast_expression "(uint)(longlong)ROUND(local_4c)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(local_4c)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(local_4c)" (identifier "ROUND") (argument_list "(local_4c)" (( "(") (identifier "local_4c") () ")")))))) (; ";")) (expression_statement "uVar8 = local_7c;" (assignment_expression "uVar8 = local_7c" (identifier "uVar8") (= "=") (identifier "local_7c")) (; ";")) (expression_statement "local_68 = local_7c;" (assignment_expression "local_68 = local_7c" (identifier "local_68") (= "=") (identifier "local_7c")) (; ";")) (expression_statement "local_6c = local_7c;" (assignment_expression "local_6c = local_7c" (identifier "local_6c") (= "=") (identifier "local_7c")) (; ";")) (if_statement "if ((uVar4 & 8) != 0) {\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }" (if "if") (parenthesized_expression "((uVar4 & 8) != 0)" (( "(") (binary_expression "(uVar4 & 8) != 0" (parenthesized_expression "(uVar4 & 8)" (( "(") (binary_expression "uVar4 & 8" (identifier "uVar4") (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_7c = (uint)(longlong)ROUND(local_44);\n      local_68 = local_7c;\n    }" ({ "{") (expression_statement "local_7c = (uint)(longlong)ROUND(local_44);" (assignment_expression "local_7c = (uint)(longlong)ROUND(local_44)" (identifier "local_7c") (= "=") (cast_expression "(uint)(longlong)ROUND(local_44)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(local_44)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(local_44)" (identifier "ROUND") (argument_list "(local_44)" (( "(") (identifier "local_44") () ")")))))) (; ";")) (expression_statement "local_68 = local_7c;" (assignment_expression "local_68 = local_7c" (identifier "local_68") (= "=") (identifier "local_7c")) (; ";")) (} "}"))) (if_statement "if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }" (if "if") (parenthesized_expression "((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c)))" (( "(") (binary_expression "(uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))" (parenthesized_expression "(uVar8 != *(uint *)(iVar3 + 0x18))" (( "(") (binary_expression "uVar8 != *(uint *)(iVar3 + 0x18)" (identifier "uVar8") (!= "!=") (pointer_expression "*(uint *)(iVar3 + 0x18)" (* "*") (cast_expression "(uint *)(iVar3 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x18)" (( "(") (binary_expression "iVar3 + 0x18" (identifier "iVar3") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(local_68 != *(uint *)(iVar3 + 0x1c))" (( "(") (binary_expression "local_68 != *(uint *)(iVar3 + 0x1c)" (identifier "local_68") (!= "!=") (pointer_expression "*(uint *)(iVar3 + 0x1c)" (* "*") (cast_expression "(uint *)(iVar3 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x1c)" (( "(") (binary_expression "iVar3 + 0x1c" (identifier "iVar3") (+ "+") (number_literal "0x1c")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;\n      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;\n      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);\n      if (iVar5 == 0) goto LAB_0022cd38;\n      DestroyImage(iVar3);\n      uVar8 = *(uint *)(iVar5 + 0x18);\n      iVar3 = iVar5;\n    }" ({ "{") (expression_statement "local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;" (assignment_expression "local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1" (identifier "local_5c") (= "=") (binary_expression "(uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1" (binary_expression "(uVar8 + 1) - *(uint *)(iVar3 + 0x18)" (parenthesized_expression "(uVar8 + 1)" (( "(") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1")) () ")")) (- "-") (pointer_expression "*(uint *)(iVar3 + 0x18)" (* "*") (cast_expression "(uint *)(iVar3 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x18)" (( "(") (binary_expression "iVar3 + 0x18" (identifier "iVar3") (+ "+") (number_literal "0x18")) () ")"))))) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;" (assignment_expression "local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1" (identifier "local_58") (= "=") (binary_expression "(local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1" (binary_expression "(local_68 - *(uint *)(iVar3 + 0x1c)) + 1" (parenthesized_expression "(local_68 - *(uint *)(iVar3 + 0x1c))" (( "(") (binary_expression "local_68 - *(uint *)(iVar3 + 0x1c)" (identifier "local_68") (- "-") (pointer_expression "*(uint *)(iVar3 + 0x1c)" (* "*") (cast_expression "(uint *)(iVar3 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x1c)" (( "(") (binary_expression "iVar3 + 0x1c" (identifier "iVar3") (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (+ "+") (number_literal "1")) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);" (assignment_expression "iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4)" (identifier "iVar5") (= "=") (call_expression "BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4)" (identifier "BorderImage") (argument_list "(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4)" (( "(") (identifier "iVar3") (, ",") (pointer_expression "&local_5c" (& "&") (identifier "local_5c")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x23c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x23c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x23c)" (( "(") (binary_expression "param_1 + 0x23c" (identifier "param_1") (+ "+") (number_literal "0x23c")) () ")")))) (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) goto LAB_0022cd38;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0022cd38;" (goto "goto") (statement_identifier "LAB_0022cd38") (; ";"))) (expression_statement "DestroyImage(iVar3);" (call_expression "DestroyImage(iVar3)" (identifier "DestroyImage") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (expression_statement "uVar8 = *(uint *)(iVar5 + 0x18);" (assignment_expression "uVar8 = *(uint *)(iVar5 + 0x18)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(iVar5 + 0x18)" (* "*") (cast_expression "(uint *)(iVar5 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x18)" (( "(") (binary_expression "iVar5 + 0x18" (identifier "iVar5") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "iVar3 = iVar5;" (assignment_expression "iVar3 = iVar5" (identifier "iVar3") (= "=") (identifier "iVar5")) (; ";")) (} "}"))) (if_statement "if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)) {\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }" (if "if") (parenthesized_expression "(((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0))" (( "(") (binary_expression "((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&\n       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)" (parenthesized_expression "((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3))" (( "(") (binary_expression "(param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)" (parenthesized_expression "(param_2 != uVar8)" (( "(") (binary_expression "param_2 != uVar8" (identifier "param_2") (!= "!=") (identifier "uVar8")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(iVar3 + 0x1c) != param_3)" (( "(") (binary_expression "*(int *)(iVar3 + 0x1c) != param_3" (pointer_expression "*(int *)(iVar3 + 0x1c)" (* "*") (cast_expression "(int *)(iVar3 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x1c)" (( "(") (binary_expression "iVar3 + 0x1c" (identifier "iVar3") (+ "+") (number_literal "0x1c")) () ")")))) (!= "!=") (identifier "param_3")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0)" (( "(") (comma_expression "iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),\n       iVar5 != 0" (assignment_expression "iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4)" (identifier "iVar5") (= "=") (call_expression "ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4)" (identifier "ResizeImage") (argument_list "(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4)" (( "(") (identifier "iVar3") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (pointer_expression "*(undefined4 *)(iVar3 + 0x228)" (* "*") (cast_expression "(undefined4 *)(iVar3 + 0x228)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x228)" (( "(") (binary_expression "iVar3 + 0x228" (identifier "iVar3") (+ "+") (number_literal "0x228")) () ")")))) (, ",") (identifier "param_4") () ")")))) (, ",") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      DestroyImage(iVar3);\n      iVar3 = iVar5;\n    }" ({ "{") (expression_statement "DestroyImage(iVar3);" (call_expression "DestroyImage(iVar3)" (identifier "DestroyImage") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (expression_statement "iVar3 = iVar5;" (assignment_expression "iVar3 = iVar5" (identifier "iVar3") (= "=") (identifier "iVar5")) (; ";")) (} "}"))) (expression_statement "TransformImageColorspace(iVar3,0x1c,param_4);" (call_expression "TransformImageColorspace(iVar3,0x1c,param_4)" (identifier "TransformImageColorspace") (argument_list "(iVar3,0x1c,param_4)" (( "(") (identifier "iVar3") (, ",") (number_literal "0x1c") (, ",") (identifier "param_4") () ")"))) (; ";")) (expression_statement "iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);" (assignment_expression "iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4)" (identifier "iVar5") (= "=") (call_expression "ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4)" (identifier "ResizeImage") (argument_list "(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4)" (( "(") (identifier "iVar3") (, ",") (binary_expression "*(uint *)(iVar3 + 0x18) >> 1" (pointer_expression "*(uint *)(iVar3 + 0x18)" (* "*") (cast_expression "(uint *)(iVar3 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x18)" (( "(") (binary_expression "iVar3 + 0x18" (identifier "iVar3") (+ "+") (number_literal "0x18")) () ")")))) (>> ">>") (number_literal "1")) (, ",") (binary_expression "*(uint *)(iVar3 + 0x1c) >> 1" (pointer_expression "*(uint *)(iVar3 + 0x1c)" (* "*") (cast_expression "(uint *)(iVar3 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x1c)" (( "(") (binary_expression "iVar3 + 0x1c" (identifier "iVar3") (+ "+") (number_literal "0x1c")) () ")")))) (>> ">>") (number_literal "1")) (, ",") (number_literal "3") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }\n      iVar6 = 0x800;\n      do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);\n      DestroyImage(iVar5);\n      DestroyImage(iVar3);\n      uVar7 = 1;\n      goto LAB_0022cd3a;\n    }" ({ "{") (if_statement "if (0 < *(int *)(iVar3 + 0x1c)) {\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }" (if "if") (parenthesized_expression "(0 < *(int *)(iVar3 + 0x1c))" (( "(") (binary_expression "0 < *(int *)(iVar3 + 0x1c)" (number_literal "0") (< "<") (pointer_expression "*(int *)(iVar3 + 0x1c)" (* "*") (cast_expression "(int *)(iVar3 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x1c)" (( "(") (binary_expression "iVar3 + 0x1c" (identifier "iVar3") (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (compound_statement "{\n        local_8c = 0;\n        local_88 = 0;\n        local_90 = 0;\n        do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));\n      }" ({ "{") (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" (identifier "local_8c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" (identifier "local_88") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" (identifier "local_90") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        } while (local_90 < *(int *)(iVar3 + 0x1c));" (do "do") (compound_statement "{\n          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);\n          if (iVar6 == 0) break;\n          iVar10 = *(int *)(iVar5 + 0x18);\n          if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }\n          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);\n          if (iVar6 == 0) break;\n          if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }\n          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);\n          if (iVar6 == 0) break;\n          local_90 = local_90 + 2;\n          bVar11 = 0xfffffffd < local_8c;\n          local_8c = local_8c + 2;\n          local_88 = local_88 + (uint)bVar11;\n        }" ({ "{") (expression_statement "iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);" (assignment_expression "iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4)" (identifier "iVar6") (= "=") (call_expression "GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4)" (identifier "GetVirtualPixels") (argument_list "(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4)" (( "(") (identifier "iVar3") (, ",") (number_literal "0") (, ",") (identifier "local_90") (, ",") (pointer_expression "*(undefined4 *)(iVar3 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar3 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x18)" (( "(") (binary_expression "iVar3 + 0x18" (identifier "iVar3") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (number_literal "2") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (iVar6 == 0) break;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (0 < *(int *)(iVar3 + 0x18) * 2) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }" (if "if") (parenthesized_expression "(0 < *(int *)(iVar3 + 0x18) * 2)" (( "(") (binary_expression "0 < *(int *)(iVar3 + 0x18) * 2" (number_literal "0") (< "<") (binary_expression "*(int *)(iVar3 + 0x18) * 2" (pointer_expression "*(int *)(iVar3 + 0x18)" (* "*") (cast_expression "(int *)(iVar3 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x18)" (( "(") (binary_expression "iVar3 + 0x18" (identifier "iVar3") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "2"))) () ")")) (compound_statement "{\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);\n          }" ({ "{") (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);" (do "do") (compound_statement "{\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            }" ({ "{") (expression_statement "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);" (assignment_expression "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8)" (identifier "dVar1") (= "=") (pointer_expression "*(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8)" (* "*") (cast_expression "(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8)" (( "(") (binary_expression "iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8" (identifier "iVar6") (+ "+") (binary_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 8)" (* "*") (cast_expression "(int *)(*(int *)(iVar3 + 0x2a8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 0x2a8) + 8)" (( "(") (binary_expression "*(int *)(iVar3 + 0x2a8) + 8" (pointer_expression "*(int *)(iVar3 + 0x2a8)" (* "*") (cast_expression "(int *)(iVar3 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x2a8)" (( "(") (binary_expression "iVar3 + 0x2a8" (identifier "iVar3") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" (if "if") (parenthesized_expression "(0.0 < dVar1)" (( "(") (binary_expression "0.0 < dVar1" (number_literal "0.0") (< "<") (identifier "dVar1")) () ")")) (compound_statement "{\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" ({ "{") (expression_statement "dVar1 = dVar1 / (double)DAT_002a7ff0;" (assignment_expression "dVar1 = dVar1 / (double)DAT_002a7ff0" (identifier "dVar1") (= "=") (binary_expression "dVar1 / (double)DAT_002a7ff0" (identifier "dVar1") (/ "/") (cast_expression "(double)DAT_002a7ff0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff0")))) (; ";")) (expression_statement "uVar2 = 0xff;" (assignment_expression "uVar2 = 0xff" (identifier "uVar2") (= "=") (number_literal "0xff")) (; ";")) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" (if "if") (parenthesized_expression "(dVar1 < (double)DAT_002a7ff4)" (( "(") (binary_expression "dVar1 < (double)DAT_002a7ff4" (identifier "dVar1") (< "<") (cast_expression "(double)DAT_002a7ff4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff4"))) () ")")) (compound_statement "{\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" ({ "{") (expression_statement "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" (identifier "uVar2") (= "=") (cast_expression "(undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (cast_expression "(short)ROUND(dVar1 + (double)DAT_0029f124)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar1 + (double)DAT_0029f124)" (identifier "ROUND") (argument_list "(dVar1 + (double)DAT_0029f124)" (( "(") (binary_expression "dVar1 + (double)DAT_0029f124" (identifier "dVar1") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124"))) () ")")))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "WriteBlobByte(param_1,uVar2);" (call_expression "WriteBlobByte(param_1,uVar2)" (identifier "WriteBlobByte") (argument_list "(param_1,uVar2)" (( "(") (identifier "param_1") (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;" (assignment_expression "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8" (identifier "iVar6") (= "=") (binary_expression "iVar6 + *(int *)(iVar3 + 0x298) * 8" (identifier "iVar6") (+ "+") (binary_expression "*(int *)(iVar3 + 0x298) * 8" (pointer_expression "*(int *)(iVar3 + 0x298)" (* "*") (cast_expression "(int *)(iVar3 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x298)" (( "(") (binary_expression "iVar3 + 0x298" (identifier "iVar3") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0)" (( "(") (binary_expression "SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=\n                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0" (call_expression "SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2)" (identifier "SBORROW4") (argument_list "(iVar10,*(int *)(iVar3 + 0x18) * 2)" (( "(") (identifier "iVar10") (, ",") (binary_expression "*(int *)(iVar3 + 0x18) * 2" (pointer_expression "*(int *)(iVar3 + 0x18)" (* "*") (cast_expression "(int *)(iVar3 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x18)" (( "(") (binary_expression "iVar3 + 0x18" (identifier "iVar3") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "2")) () ")"))) (!= "!=") (binary_expression "iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0" (binary_expression "iVar10 + *(int *)(iVar3 + 0x18) * -2" (identifier "iVar10") (+ "+") (binary_expression "*(int *)(iVar3 + 0x18) * -2" (pointer_expression "*(int *)(iVar3 + 0x18)" (* "*") (cast_expression "(int *)(iVar3 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x18)" (( "(") (binary_expression "iVar3 + 0x18" (identifier "iVar3") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "-2"))) (< "<") (number_literal "0"))) () ")")) (; ";")) (} "}"))) (expression_statement "iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);" (assignment_expression "iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4)" (identifier "iVar6") (= "=") (call_expression "GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4)" (identifier "GetVirtualPixels") (argument_list "(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4)" (( "(") (identifier "iVar5") (, ",") (number_literal "0") (, ",") (binary_expression "local_90 >> 1" (identifier "local_90") (>> ">>") (number_literal "1")) (, ",") (pointer_expression "*(undefined4 *)(iVar5 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x18)" (( "(") (binary_expression "iVar5 + 0x18" (identifier "iVar5") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (number_literal "1") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (iVar6 == 0) break;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar10 = *(int *)(iVar5 + 0x18);" (assignment_expression "iVar10 = *(int *)(iVar5 + 0x18)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar5 + 0x18)" (* "*") (cast_expression "(int *)(iVar5 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x18)" (( "(") (binary_expression "iVar5 + 0x18" (identifier "iVar5") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (0 < iVar10) {\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }" (if "if") (parenthesized_expression "(0 < iVar10)" (( "(") (binary_expression "0 < iVar10" (number_literal "0") (< "<") (identifier "iVar10")) () ")")) (compound_statement "{\n            iVar9 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);\n          }" ({ "{") (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            } while (iVar9 < iVar10);" (do "do") (compound_statement "{\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar9 = iVar9 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n              iVar10 = *(int *)(iVar5 + 0x18);\n            }" ({ "{") (expression_statement "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);" (assignment_expression "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8)" (identifier "dVar1") (= "=") (pointer_expression "*(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8)" (* "*") (cast_expression "(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8)" (( "(") (binary_expression "iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8" (identifier "iVar6") (+ "+") (binary_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 0x14)" (* "*") (cast_expression "(int *)(*(int *)(iVar3 + 0x2a8) + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 0x2a8) + 0x14)" (( "(") (binary_expression "*(int *)(iVar3 + 0x2a8) + 0x14" (pointer_expression "*(int *)(iVar3 + 0x2a8)" (* "*") (cast_expression "(int *)(iVar3 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x2a8)" (( "(") (binary_expression "iVar3 + 0x2a8" (identifier "iVar3") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" (if "if") (parenthesized_expression "(0.0 < dVar1)" (( "(") (binary_expression "0.0 < dVar1" (number_literal "0.0") (< "<") (identifier "dVar1")) () ")")) (compound_statement "{\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" ({ "{") (expression_statement "dVar1 = dVar1 / (double)DAT_002a7ff0;" (assignment_expression "dVar1 = dVar1 / (double)DAT_002a7ff0" (identifier "dVar1") (= "=") (binary_expression "dVar1 / (double)DAT_002a7ff0" (identifier "dVar1") (/ "/") (cast_expression "(double)DAT_002a7ff0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff0")))) (; ";")) (expression_statement "uVar2 = 0xff;" (assignment_expression "uVar2 = 0xff" (identifier "uVar2") (= "=") (number_literal "0xff")) (; ";")) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" (if "if") (parenthesized_expression "(dVar1 < (double)DAT_002a7ff4)" (( "(") (binary_expression "dVar1 < (double)DAT_002a7ff4" (identifier "dVar1") (< "<") (cast_expression "(double)DAT_002a7ff4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff4"))) () ")")) (compound_statement "{\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" ({ "{") (expression_statement "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" (identifier "uVar2") (= "=") (cast_expression "(undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (cast_expression "(short)ROUND(dVar1 + (double)DAT_0029f124)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar1 + (double)DAT_0029f124)" (identifier "ROUND") (argument_list "(dVar1 + (double)DAT_0029f124)" (( "(") (binary_expression "dVar1 + (double)DAT_0029f124" (identifier "dVar1") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124"))) () ")")))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "WriteBlobByte(param_1,uVar2);" (call_expression "WriteBlobByte(param_1,uVar2)" (identifier "WriteBlobByte") (argument_list "(param_1,uVar2)" (( "(") (identifier "param_1") (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;" (assignment_expression "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8" (identifier "iVar6") (= "=") (binary_expression "iVar6 + *(int *)(iVar3 + 0x298) * 8" (identifier "iVar6") (+ "+") (binary_expression "*(int *)(iVar3 + 0x298) * 8" (pointer_expression "*(int *)(iVar3 + 0x298)" (* "*") (cast_expression "(int *)(iVar3 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x298)" (( "(") (binary_expression "iVar3 + 0x298" (identifier "iVar3") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (expression_statement "iVar10 = *(int *)(iVar5 + 0x18);" (assignment_expression "iVar10 = *(int *)(iVar5 + 0x18)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar5 + 0x18)" (* "*") (cast_expression "(int *)(iVar5 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x18)" (( "(") (binary_expression "iVar5 + 0x18" (identifier "iVar5") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar9 < iVar10)" (( "(") (binary_expression "iVar9 < iVar10" (identifier "iVar9") (< "<") (identifier "iVar10")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);" (assignment_expression "iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4)" (identifier "iVar6") (= "=") (call_expression "GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4)" (identifier "GetVirtualPixels") (argument_list "(iVar5,0,local_90 >> 1,iVar10,1,param_4)" (( "(") (identifier "iVar5") (, ",") (number_literal "0") (, ",") (binary_expression "local_90 >> 1" (identifier "local_90") (>> ">>") (number_literal "1")) (, ",") (identifier "iVar10") (, ",") (number_literal "1") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (iVar6 == 0) break;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (0 < *(int *)(iVar5 + 0x18)) {\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }" (if "if") (parenthesized_expression "(0 < *(int *)(iVar5 + 0x18))" (( "(") (binary_expression "0 < *(int *)(iVar5 + 0x18)" (number_literal "0") (< "<") (pointer_expression "*(int *)(iVar5 + 0x18)" (* "*") (cast_expression "(int *)(iVar5 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x18)" (( "(") (binary_expression "iVar5 + 0x18" (identifier "iVar5") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (compound_statement "{\n            iVar10 = 0;\n            do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));\n          }" ({ "{") (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            } while (iVar10 < *(int *)(iVar5 + 0x18));" (do "do") (compound_statement "{\n              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);\n              uVar2 = 0;\n              if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }\n              iVar10 = iVar10 + 1;\n              WriteBlobByte(param_1,uVar2);\n              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;\n            }" ({ "{") (expression_statement "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);" (assignment_expression "dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8)" (identifier "dVar1") (= "=") (pointer_expression "*(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8)" (* "*") (cast_expression "(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8)" (( "(") (binary_expression "iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8" (identifier "iVar6") (+ "+") (binary_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(iVar3 + 0x2a8) + 0x20)" (* "*") (cast_expression "(int *)(*(int *)(iVar3 + 0x2a8) + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 0x2a8) + 0x20)" (( "(") (binary_expression "*(int *)(iVar3 + 0x2a8) + 0x20" (pointer_expression "*(int *)(iVar3 + 0x2a8)" (* "*") (cast_expression "(int *)(iVar3 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x2a8)" (( "(") (binary_expression "iVar3 + 0x2a8" (identifier "iVar3") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0.0 < dVar1) {\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" (if "if") (parenthesized_expression "(0.0 < dVar1)" (( "(") (binary_expression "0.0 < dVar1" (number_literal "0.0") (< "<") (identifier "dVar1")) () ")")) (compound_statement "{\n                dVar1 = dVar1 / (double)DAT_002a7ff0;\n                uVar2 = 0xff;\n                if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }\n              }" ({ "{") (expression_statement "dVar1 = dVar1 / (double)DAT_002a7ff0;" (assignment_expression "dVar1 = dVar1 / (double)DAT_002a7ff0" (identifier "dVar1") (= "=") (binary_expression "dVar1 / (double)DAT_002a7ff0" (identifier "dVar1") (/ "/") (cast_expression "(double)DAT_002a7ff0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff0")))) (; ";")) (expression_statement "uVar2 = 0xff;" (assignment_expression "uVar2 = 0xff" (identifier "uVar2") (= "=") (number_literal "0xff")) (; ";")) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" (if "if") (parenthesized_expression "(dVar1 < (double)DAT_002a7ff4)" (( "(") (binary_expression "dVar1 < (double)DAT_002a7ff4" (identifier "dVar1") (< "<") (cast_expression "(double)DAT_002a7ff4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff4"))) () ")")) (compound_statement "{\n                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                }" ({ "{") (expression_statement "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" (identifier "uVar2") (= "=") (cast_expression "(undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124)" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (cast_expression "(short)ROUND(dVar1 + (double)DAT_0029f124)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar1 + (double)DAT_0029f124)" (identifier "ROUND") (argument_list "(dVar1 + (double)DAT_0029f124)" (( "(") (binary_expression "dVar1 + (double)DAT_0029f124" (identifier "dVar1") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124"))) () ")")))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "WriteBlobByte(param_1,uVar2);" (call_expression "WriteBlobByte(param_1,uVar2)" (identifier "WriteBlobByte") (argument_list "(param_1,uVar2)" (( "(") (identifier "param_1") (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;" (assignment_expression "iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8" (identifier "iVar6") (= "=") (binary_expression "iVar6 + *(int *)(iVar3 + 0x298) * 8" (identifier "iVar6") (+ "+") (binary_expression "*(int *)(iVar3 + 0x298) * 8" (pointer_expression "*(int *)(iVar3 + 0x298)" (* "*") (cast_expression "(int *)(iVar3 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x298)" (( "(") (binary_expression "iVar3 + 0x298" (identifier "iVar3") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 < *(int *)(iVar5 + 0x18))" (( "(") (binary_expression "iVar10 < *(int *)(iVar5 + 0x18)" (identifier "iVar10") (< "<") (pointer_expression "*(int *)(iVar5 + 0x18)" (* "*") (cast_expression "(int *)(iVar5 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x18)" (( "(") (binary_expression "iVar5 + 0x18" (identifier "iVar5") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (; ";")) (} "}"))) (expression_statement "iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0);" (assignment_expression "iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0)" (identifier "iVar6") (= "=") (call_expression "SetImageProgress(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0)" (identifier "SetImageProgress") (argument_list "(param_1,"Save/Image",local_8c,local_88,\n                                   *(undefined4 *)(iVar3 + 0x1c),0)" (( "(") (identifier "param_1") (, ",") (string_literal ""Save/Image"" (" """) (string_content "Save/Image") (" """)) (, ",") (identifier "local_8c") (, ",") (identifier "local_88") (, ",") (pointer_expression "*(undefined4 *)(iVar3 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(iVar3 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x1c)" (( "(") (binary_expression "iVar3 + 0x1c" (identifier "iVar3") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar6 == 0) break;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_90 = local_90 + 2;" (assignment_expression "local_90 = local_90 + 2" (identifier "local_90") (= "=") (binary_expression "local_90 + 2" (identifier "local_90") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "bVar11 = 0xfffffffd < local_8c;" (assignment_expression "bVar11 = 0xfffffffd < local_8c" (identifier "bVar11") (= "=") (binary_expression "0xfffffffd < local_8c" (number_literal "0xfffffffd") (< "<") (identifier "local_8c"))) (; ";")) (expression_statement "local_8c = local_8c + 2;" (assignment_expression "local_8c = local_8c + 2" (identifier "local_8c") (= "=") (binary_expression "local_8c + 2" (identifier "local_8c") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_88 = local_88 + (uint)bVar11;" (assignment_expression "local_88 = local_88 + (uint)bVar11" (identifier "local_88") (= "=") (binary_expression "local_88 + (uint)bVar11" (identifier "local_88") (+ "+") (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_90 < *(int *)(iVar3 + 0x1c))" (( "(") (binary_expression "local_90 < *(int *)(iVar3 + 0x1c)" (identifier "local_90") (< "<") (pointer_expression "*(int *)(iVar3 + 0x1c)" (* "*") (cast_expression "(int *)(iVar3 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x1c)" (( "(") (binary_expression "iVar3 + 0x1c" (identifier "iVar3") (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (; ";")) (} "}"))) (expression_statement "iVar6 = 0x800;" (assignment_expression "iVar6 = 0x800" (identifier "iVar6") (= "=") (number_literal "0x800")) (; ";")) (do_statement "do {\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      } while (iVar6 != 0);" (do "do") (compound_statement "{\n        WriteBlobByte(param_1,0);\n        iVar6 = iVar6 + -1;\n      }" ({ "{") (expression_statement "WriteBlobByte(param_1,0);" (call_expression "WriteBlobByte(param_1,0)" (identifier "WriteBlobByte") (argument_list "(param_1,0)" (( "(") (identifier "param_1") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "DestroyImage(iVar5);" (call_expression "DestroyImage(iVar5)" (identifier "DestroyImage") (argument_list "(iVar5)" (( "(") (identifier "iVar5") () ")"))) (; ";")) (expression_statement "DestroyImage(iVar3);" (call_expression "DestroyImage(iVar3)" (identifier "DestroyImage") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" (identifier "uVar7") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0022cd3a;" (goto "goto") (statement_identifier "LAB_0022cd3a") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_0022cd38:\n  uVar7 = 0;" (statement_identifier "LAB_0022cd38") (: ":") (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";"))) (labeled_statement "LAB_0022cd3a:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar7;\n  }" (statement_identifier "LAB_0022cd3a") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar7;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return uVar7;\n  }" ({ "{") (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}")))) (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" (identifier "FUN_0029eab0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "ExceptionType": Some values do not have unique names */
/* WARNING: Enum "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 */

type_1 __regparm3
function_1(type_2 *image,char *var_13,size_t var_14,size_t tile_rows,
            type_3 *exception)

{
  int var_29;
  double var_18;
  type_4 uVar3;
  type_2 *var_5;
  type_5 var_8;
  type_2 *var_11;
  type_6 *var_17;
  size_t columns;
  type_1 var_25;
  char *var_9;
  int var_19;
  int var_1;
  bool bVar10;
  int var_22;
  type_7 var_27;
  int var_28;
  char *local_7c;
  type_8 geometry;
  type_8 border_info;
  type_9 geometry_info;
  
  var_29 = *(int *)(var_1 + 0x14);
  var_2(image,&geometry);
  var_3("768x512>",&geometry.x,&geometry.y,&geometry.width,&geometry.height);
  if ((geometry.width & 1) != 0) {
    geometry.width = geometry.width - 1;
  }
  if ((geometry.height & 1) != 0) {
    geometry.height = geometry.height - 1;
  }
  var_5 = var_4(image,geometry.width,geometry.height,TriangleFilter,
                         (type_3 *)tile_rows);
  if (var_5 != (type_2 *)0x0) {
    var_8 = var_6("768x512>",&geometry_info);
    local_7c = (char *)(type_10)var_7(geometry_info.rho);
    var_9 = local_7c;
    geometry.height = (size_t)local_7c;
    geometry.width = (size_t)local_7c;
    if ((var_8 & 8) != 0) {
      local_7c = (char *)(type_10)var_7(geometry_info.sigma);
      geometry.height = (size_t)local_7c;
    }
    if ((var_9 != (char *)var_5->columns) || (geometry.height != var_5->rows)) {
      border_info.width = (type_7)(var_9 + (1 - (int)var_5->columns)) >> 1;
      border_info.height = (geometry.height - var_5->rows) + 1 >> 1;
      var_11 = var_10(var_5,&border_info,image->compose,(type_3 *)tile_rows);
      if (var_11 == (type_2 *)0x0) goto LAB_0022cd38;
      var_12(var_5);
      var_9 = (char *)var_11->columns;
      var_5 = var_11;
    }
    if (((var_13 != var_9) || (var_5->rows != var_14)) &&
       (var_11 = var_4(var_5,(size_t)var_13,var_14,var_5->filter,
                             (type_3 *)tile_rows), var_11 != (type_2 *)0x0)) {
      var_12(var_5);
      var_5 = var_11;
    }
    var_15(var_5,YCCColorspace,(type_3 *)tile_rows);
    var_11 = var_4(var_5,var_5->columns >> 1,var_5->rows >> 1,TriangleFilter,
                         (type_3 *)tile_rows);
    if (var_11 != (type_2 *)0x0) {
      if (0 < (int)var_5->rows) {
        var_27 = 0;
        var_28 = 0;
        var_22 = 0;
        do {
          var_17 = var_16(var_5,0,var_22,var_5->columns,2,
                                    (type_3 *)tile_rows);
          if (var_17 == (type_6 *)0x0) break;
          if (0 < (int)(var_5->columns * 2)) {
            var_19 = 0;
            do {
              uVar3 = '\0';
              if (0.0 < var_17[var_5->channel_map->offset]) {
                var_18 = var_17[var_5->channel_map->offset] / (double)DAT_002a7ff0;
                uVar3 = 0xff;
                if (var_18 < (double)DAT_002a7ff4) {
                  uVar3 = (type_4)(short)var_7(var_18 + (double)DAT_0029f124);
                }
              }
              var_19 = var_19 + 1;
              var_20(image,uVar3);
              var_17 = var_17 + var_5->number_channels;
            } while (var_21(var_19,var_5->columns * 2) !=
                     (int)(var_19 + var_5->columns * -2) < 0);
          }
          var_17 = var_16(var_11,0,var_22 >> 1,var_11->columns,1,
                                    (type_3 *)tile_rows);
          if (var_17 == (type_6 *)0x0) break;
          columns = var_11->columns;
          if (0 < (int)columns) {
            var_19 = 0;
            do {
              uVar3 = '\0';
              if (0.0 < var_17[var_5->channel_map[1].offset]) {
                var_18 = var_17[var_5->channel_map[1].offset] / (double)DAT_002a7ff0;
                uVar3 = 0xff;
                if (var_18 < (double)DAT_002a7ff4) {
                  uVar3 = (type_4)(short)var_7(var_18 + (double)DAT_0029f124);
                }
              }
              var_19 = var_19 + 1;
              var_20(image,uVar3);
              var_17 = var_17 + var_5->number_channels;
              columns = var_11->columns;
            } while (var_19 < (int)columns);
          }
          var_17 = var_16(var_11,0,var_22 >> 1,columns,1,(type_3 *)tile_rows);
          if (var_17 == (type_6 *)0x0) break;
          if (0 < (int)var_11->columns) {
            var_19 = 0;
            do {
              uVar3 = '\0';
              if (0.0 < var_17[var_5->channel_map[2].offset]) {
                var_18 = var_17[var_5->channel_map[2].offset] / (double)DAT_002a7ff0;
                uVar3 = 0xff;
                if (var_18 < (double)DAT_002a7ff4) {
                  uVar3 = (type_4)(short)var_7(var_18 + (double)DAT_0029f124);
                }
              }
              var_19 = var_19 + 1;
              var_20(image,uVar3);
              var_17 = var_17 + var_5->number_channels;
            } while (var_19 < (int)var_11->columns);
          }
          var_25 = var_23(image,"Save/Image",var_24(var_28,var_27),
                                   (type_11)var_5->rows);
          if (var_25 == var_26) break;
          var_22 = var_22 + 2;
          bVar10 = 0xfffffffd < var_27;
          var_27 = var_27 + 2;
          var_28 = var_28 + (type_7)bVar10;
        } while (var_22 < (int)var_5->rows);
      }
      var_19 = 0x800;
      do {
        var_20(image,'\0');
        var_19 = var_19 + -1;
      } while (var_19 != 0);
      var_12(var_11);
      var_12(var_5);
      var_25 = MagickTrue;
      goto LAB_0022cd3a;
    }
  }
LAB_0022cd38:
  var_25 = var_26;
LAB_0022cd3a:
  if (var_29 == *(int *)(var_1 + 0x14)) {
    return var_25;
  }
                    /* WARNING: Subroutine does not return */
  var_30();
}


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

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

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

{
  double dVar1;
  undefined1 uVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  uint uVar8;
  int iVar9;
  int iVar10;
  int in_GS_OFFSET;
  bool bVar11;
  int local_90;
  uint local_8c;
  int local_88;
  uint local_7c;
  uint local_6c;
  uint local_68;
  undefined1 local_64 [4];
  undefined1 local_60 [4];
  uint local_5c;
  uint local_58;
  double local_4c;
  double local_44;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x22c7fb;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  SetGeometry(param_1,&local_6c);
  ParseMetaGeometry("768x512>",local_64,local_60,&local_6c,&local_68);
  if ((local_6c & 1) != 0) {
    local_6c = local_6c - 1;
  }
  if ((local_68 & 1) != 0) {
    local_68 = local_68 - 1;
  }
  iVar3 = ResizeImage(param_1,local_6c,local_68,3,param_4);
  if (iVar3 != 0) {
    uVar4 = ParseGeometry("768x512>",&local_4c);
    local_7c = (uint)(longlong)ROUND(local_4c);
    uVar8 = local_7c;
    local_68 = local_7c;
    local_6c = local_7c;
    if ((uVar4 & 8) != 0) {
      local_7c = (uint)(longlong)ROUND(local_44);
      local_68 = local_7c;
    }
    if ((uVar8 != *(uint *)(iVar3 + 0x18)) || (local_68 != *(uint *)(iVar3 + 0x1c))) {
      local_5c = (uVar8 + 1) - *(uint *)(iVar3 + 0x18) >> 1;
      local_58 = (local_68 - *(uint *)(iVar3 + 0x1c)) + 1 >> 1;
      iVar5 = BorderImage(iVar3,&local_5c,*(undefined4 *)(param_1 + 0x23c),param_4);
      if (iVar5 == 0) goto LAB_0022cd38;
      DestroyImage(iVar3);
      uVar8 = *(uint *)(iVar5 + 0x18);
      iVar3 = iVar5;
    }
    if (((param_2 != uVar8) || (*(int *)(iVar3 + 0x1c) != param_3)) &&
       (iVar5 = ResizeImage(iVar3,param_2,param_3,*(undefined4 *)(iVar3 + 0x228),param_4),
       iVar5 != 0)) {
      DestroyImage(iVar3);
      iVar3 = iVar5;
    }
    TransformImageColorspace(iVar3,0x1c,param_4);
    iVar5 = ResizeImage(iVar3,*(uint *)(iVar3 + 0x18) >> 1,*(uint *)(iVar3 + 0x1c) >> 1,3,param_4);
    if (iVar5 != 0) {
      if (0 < *(int *)(iVar3 + 0x1c)) {
        local_8c = 0;
        local_88 = 0;
        local_90 = 0;
        do {
          iVar6 = GetVirtualPixels(iVar3,0,local_90,*(undefined4 *)(iVar3 + 0x18),2,param_4);
          if (iVar6 == 0) break;
          if (0 < *(int *)(iVar3 + 0x18) * 2) {
            iVar10 = 0;
            do {
              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 8) * 8);
              uVar2 = 0;
              if (0.0 < dVar1) {
                dVar1 = dVar1 / (double)DAT_002a7ff0;
                uVar2 = 0xff;
                if (dVar1 < (double)DAT_002a7ff4) {
                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);
                }
              }
              iVar10 = iVar10 + 1;
              WriteBlobByte(param_1,uVar2);
              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;
            } while (SBORROW4(iVar10,*(int *)(iVar3 + 0x18) * 2) !=
                     iVar10 + *(int *)(iVar3 + 0x18) * -2 < 0);
          }
          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,*(undefined4 *)(iVar5 + 0x18),1,param_4);
          if (iVar6 == 0) break;
          iVar10 = *(int *)(iVar5 + 0x18);
          if (0 < iVar10) {
            iVar9 = 0;
            do {
              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x14) * 8);
              uVar2 = 0;
              if (0.0 < dVar1) {
                dVar1 = dVar1 / (double)DAT_002a7ff0;
                uVar2 = 0xff;
                if (dVar1 < (double)DAT_002a7ff4) {
                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);
                }
              }
              iVar9 = iVar9 + 1;
              WriteBlobByte(param_1,uVar2);
              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;
              iVar10 = *(int *)(iVar5 + 0x18);
            } while (iVar9 < iVar10);
          }
          iVar6 = GetVirtualPixels(iVar5,0,local_90 >> 1,iVar10,1,param_4);
          if (iVar6 == 0) break;
          if (0 < *(int *)(iVar5 + 0x18)) {
            iVar10 = 0;
            do {
              dVar1 = *(double *)(iVar6 + *(int *)(*(int *)(iVar3 + 0x2a8) + 0x20) * 8);
              uVar2 = 0;
              if (0.0 < dVar1) {
                dVar1 = dVar1 / (double)DAT_002a7ff0;
                uVar2 = 0xff;
                if (dVar1 < (double)DAT_002a7ff4) {
                  uVar2 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);
                }
              }
              iVar10 = iVar10 + 1;
              WriteBlobByte(param_1,uVar2);
              iVar6 = iVar6 + *(int *)(iVar3 + 0x298) * 8;
            } while (iVar10 < *(int *)(iVar5 + 0x18));
          }
          iVar6 = SetImageProgress(param_1,"Save/Image",local_8c,local_88,
                                   *(undefined4 *)(iVar3 + 0x1c),0);
          if (iVar6 == 0) break;
          local_90 = local_90 + 2;
          bVar11 = 0xfffffffd < local_8c;
          local_8c = local_8c + 2;
          local_88 = local_88 + (uint)bVar11;
        } while (local_90 < *(int *)(iVar3 + 0x1c));
      }
      iVar6 = 0x800;
      do {
        WriteBlobByte(param_1,0);
        iVar6 = iVar6 + -1;
      } while (iVar6 != 0);
      DestroyImage(iVar5);
      DestroyImage(iVar3);
      uVar7 = 1;
      goto LAB_0022cd3a;
    }
  }
LAB_0022cd38:
  uVar7 = 0;
LAB_0022cd3a:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uVar7;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0029eab0();
}

